YXTS122 2017-01-22 06:23 采纳率: 100%
浏览 998
已采纳

为什么日记的标题会和写日记的具体时间重叠?

第一,为什么日记的标题会和写日记的具体时间重叠?而且时间居然是0月?
第二,按插入会跳到另一个界面,为什么按删除什么反应都没有?
图片说明
图片说明
MainActivity.java

 package com.exae.shiyongsqlite;

import java.util.Calendar;

import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class MainActivity extends Activity {
    DatabaseHelper mDbHelper;
    private Cursor mDiaryCursor;
    private SQLiteDatabase mDb;
    private ListView mListView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mListView=(ListView)findViewById(R.id.list);
        mDbHelper=new DatabaseHelper(this);
        mDb=mDbHelper.getWritableDatabase();
        renderListView();
    }

    public long createDiary(String title,String body)
    {
        ContentValues initialValues=new ContentValues();
        initialValues.put("title", title);
        initialValues.put("body", body);
        Calendar calendar=Calendar.getInstance();
        String created=calendar.get(Calendar.YEAR)+"年"+calendar.get(Calendar.MONTH)+"月"+calendar.get(Calendar.DAY_OF_MONTH)+"日"+calendar.get(Calendar.HOUR_OF_DAY)+"小时"+calendar.get(Calendar.MINUTE)+"分钟";
        initialValues.put("created", created);
        return mDb.insert("diary",null,initialValues);
    }

    public boolean deleteDiary(long rowId)
    {
        return mDb.delete("diary","_id"+"="+rowId,null)>0;
    }

    public Cursor getAllNotes()
    {
        return mDb.query("diary",new String[]{"_id","title","body","created"},null,null,null,null,null);
    }

    public boolean updateDiary(long rowId,String title,String body)
    {
        ContentValues args=new ContentValues();
        args.put("title", title);
        args.put("body", body);
        Calendar calendar=Calendar.getInstance();
        String created=calendar.get(Calendar.YEAR)+"年"+calendar.get(Calendar.MONTH)+"月"+calendar.get(Calendar.DAY_OF_MONTH)+"日"+calendar.get(Calendar.HOUR_OF_DAY)+"小时"+calendar.get(Calendar.MINUTE)+"分钟";
        args.put("created", created);
        return mDb.update("diary",args,"_id"+"="+rowId,null)>0;
    }



    @Override
    public boolean onMenuItemSelected(int featureId,MenuItem item)
    {
        switch (item.getItemId())
        {
        case Menu.FIRST:
            createDiary();
            return true;
        case Menu.FIRST+1:
            deleteDiary(mListView.getSelectedItemId());
            renderListView();
            return true;
        }
        return super.onMenuItemSelected(featureId, item);
    }

    private void createDiary()
    {
        Intent i=new Intent(this,ActivityDiaryEdit.class);
        startActivityForResult(i,0);
    }

    private void renderListView()
    {
        mDiaryCursor=getAllNotes();
        startManagingCursor(mDiaryCursor);
        String[] from=new String[]{"title","created"};
        int[] to=new int[]{R.id.text1,R.id.created};
        SimpleCursorAdapter notes=new SimpleCursorAdapter(this,R.layout.diary_row,mDiaryCursor,from,to);
        mListView.setAdapter(notes);
    }

    protected void onActivityResult(int requestCode,int resultCode,Intent intent)
    {
        super.onActivityResult(requestCode, resultCode, intent);
        renderListView();
    }

    protected void onListItemClick(ListView l,View v,int position,long id)
    {
        //super.onListItemClick(l,v,position,id);
        Cursor c=mDiaryCursor;
        c.moveToPosition(position);
        Intent i=new Intent(this,ActivityDiaryEdit.class);
        i.putExtra("_id", id);
        i.putExtra("title", c.getString(c.getColumnIndexOrThrow("title")));
        i.putExtra("body", c.getString(c.getColumnIndexOrThrow("body")));
        startActivityForResult(i,1);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        //getMenuInflater().inflate(R.menu.main, menu);
        super.onCreateOptionsMenu(menu);
        menu.add(0, Menu.FIRST, 0, R.string.menu_insert);
        menu.add(0, Menu.FIRST+1, 0, R.string.menu_delete);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

ActivityDiaryEdit.java



package com.exae.shiyongsqlite;

import java.util.Calendar;

import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class ActivityDiaryEdit extends Activity implements OnClickListener {
    private Button bt;
    private EditText mTitleText,mBodyText;
    DatabaseHelper mDbHelper;
    private long mRowId;
    private SQLiteDatabase mDb;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.editdiary);
        mDbHelper=new DatabaseHelper(this);
        mDb=mDbHelper.getWritableDatabase();
        bt=(Button)findViewById(R.id.position);
        bt.setOnClickListener(this);
        mTitleText=(EditText)findViewById(R.id.et1);
        mBodyText=(EditText)findViewById(R.id.et2);
        Bundle extras=getIntent().getExtras();
        if(extras!=null)
        {
            String title=extras.getString("title");
            String body=extras.getString("body");
            mRowId=extras.getLong("_id");
            if(title!=null)
            {
                mTitleText.setText(title);
            }
            if(body!=null)
            {
                mBodyText.setText(body);
            }
        }
    }

    public long createDiary(String title,String body)
    {
        ContentValues initialValues=new ContentValues();
        initialValues.put("title", title);
        initialValues.put("body", body);
        Calendar calendar=Calendar.getInstance();
        String created=calendar.get(Calendar.YEAR)+"年"+calendar.get(Calendar.MONTH)+"月"+calendar.get(Calendar.DAY_OF_MONTH)+"日"+calendar.get(Calendar.HOUR_OF_DAY)+"小时"+calendar.get(Calendar.MINUTE)+"分钟";
        initialValues.put("created", created);
        return mDb.insert("diary",null,initialValues);
    }

    public boolean updateDiary(long rowId,String title,String body)
    {
        ContentValues args=new ContentValues();
        args.put("title", title);
        args.put("body", body);
        Calendar calendar=Calendar.getInstance();
        String created=calendar.get(Calendar.YEAR)+"年"+calendar.get(Calendar.MONTH)+"月"+calendar.get(Calendar.DAY_OF_MONTH)+"日"+calendar.get(Calendar.HOUR_OF_DAY)+"小时"+calendar.get(Calendar.MINUTE)+"分钟";
        args.put("created", created);
        return mDb.update("diary",args,"_id"+"="+rowId,null)>0;
    }



    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.position:
            String title=mTitleText.getText().toString();
            String body=mBodyText.getText().toString();
            if(mRowId!=0)
            {
                updateDiary(mRowId,title,body);
            }
            else
                createDiary(title,body);
            Intent mIntent=new Intent();
            setResult(RESULT_OK,mIntent);
            finish();
        }
    }



}

DatabaseHelper.java

 package com.exae.shiyongsqlite;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper{
    public DatabaseHelper(Context context)
    {
        super(context,"database",null,2);
    }

    public void onCreate(SQLiteDatabase db)
    {
        String DATABASE_CREATE="create table diary(_id integer primary key autoincrement,title text,body text,created text);";
        db.execSQL(DATABASE_CREATE);
    }

    public void onUpgrade(SQLiteDatabase db,int arg1,int arg2)
    {
        String sql="DROP TABLE IF EXISTS diary";
        db.execSQL(sql);
        this.onCreate(db);
    }

}

图片说明

图片说明
图片说明
图片说明
图片说明

  • 写回答

5条回答 默认 最新

  • 代码的灵魂是bug! 2017-01-22 07:07
    关注

    第一个问题,布局没有布置好,RelativeLayout布局中,要将第二个TextView设置成相对于第一个的下方;
    第二,月份要加1,因为获取到的是0-11

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)