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

第一,为什么日记的标题会和写日记的具体时间重叠?而且时间居然是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);
    }

}

图片说明

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

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

xml中相对布局没控制好

第一个布局文件有问题,应该讲第二个的textView的相对位置设置为第一textview的位置,剩下的就好做了

先来回答下重叠的问题,在diary_row这个xml里面在created这个textview里面加上一句android:layout_toRightOf="@+id/text1"

先来回答下重叠的问题,在diary_row这个xml里面在created这个textview里面加上一句android:layout_toRightOf="@+id/text1"。
再来回答下月份为什么是0,原因是Calendar的月份是从0开始ed,所以你在获取月份的时候,需要手动加1