简单记事本
2012-07-20 16:17 ...平..淡... 阅读(205) 评论(0) 编辑 收藏 举报使用SQLite数据库保存记事本信息,记得在manifest.xml中注册相关activity
配置文件:
main.xml
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ListView android:id="@+id/android:list" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/android:empty" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="您还没有开始写日记呢!点击下边的Menu按钮开始写日记吧:)" /> </LinearLayout>
diary_row.xml
notepad.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:text="@string/notepad_title" android:layout_width="fill_parent" android:layout_height="wrap_content"></TextView> <EditText android:id="@+id/title" android:layout_width="fill_parent" android:layout_height="wrap_content"></EditText> <TextView android:text="@string/notepad_body" android:layout_width="fill_parent" android:layout_height="wrap_content"></TextView> <EditText android:id="@+id/body_text" android:layout_width="fill_parent" android:layout_height="wrap_content"></EditText> <Button android:id="@+id/button" android:text="@string/notepad_button" android:layout_width="fill_parent" android:layout_height="wrap_content"></Button> </LinearLayout>
strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, MainActivity!</string> <string name="app_name">db2</string> <string name="diary_edit">编辑</string> <string name="notepad_title">标题:</string> <string name="notepad_body">内容:</string> <string name="notepad_button">确定:</string> <string name="menu_insert">Add</string> <string name="menu_delete">Delete</string> <string name="edit_diary">Edit</string> </resources>
1.创建SQLiteOpenHelper的子类DatabaseHelper
View Code
1 package com.cb.test; 2 import android.content.Context; 3 import android.database.sqlite.SQLiteDatabase; 4 import android.database.sqlite.SQLiteOpenHelper; 5 6 public class DatabaseHelper extends SQLiteOpenHelper { 7 8 private final static String DATABSE_NAME = "notepad"; 9 private final static int DATABASE_VERSION = 1; 10 public final static String DATABSE_TABLE = "diary"; 11 private final static String DATABASE_CREATE = "create table " + DATABSE_TABLE + " (_id integer primary key autoincrement," + "title text not null, body text not null, created text not null);"; 12 13 public DatabaseHelper(Context context) { 14 super(context, DATABSE_NAME, null, DATABASE_VERSION); 15 } 16 17 18 @Override 19 public void onCreate(SQLiteDatabase db) { 20 db.execSQL(DATABASE_CREATE); 21 } 22 23 @Override 24 public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) { 25 db.execSQL("DROP TABLE IF EXISTS " + DATABSE_TABLE); 26 onCreate(db); 27 } 28 }
2.创建DiaryDbAdapter来封装方法
View Code
1 package cn.dccssq; 2 3 import java.util.Calendar; 4 5 import android.content.ContentValues; 6 import android.content.Context; 7 import android.database.Cursor; 8 import android.database.SQLException; 9 import android.database.sqlite.SQLiteDatabase; 10 import android.database.sqlite.SQLiteException; 11 12 public class DiaryDbAdapter { 13 public static final String KEY_TITLE = "title"; 14 public static final String KEY_BODY = "body"; 15 public static final String KEY_ROWID = "_id"; 16 public static final String KEY_CREATED = "created"; 17 18 private DatabaseHelper databaseHelper; 19 20 private Context context; 21 22 private SQLiteDatabase sqliteDatabase; 23 24 public DiaryDbAdapter(Context context) { 25 this.context = context; 26 } 27 28 /** 29 * Open the Database 30 */ 31 public void open(){ 32 databaseHelper = new DatabaseHelper(context); 33 34 try 35 { 36 sqliteDatabase = databaseHelper.getWritableDatabase(); 37 }catch(SQLiteException e){ 38 sqliteDatabase = databaseHelper.getReadableDatabase(); 39 } 40 } 41 42 /** 43 * Close the Database 44 */ 45 public void close() 46 { 47 sqliteDatabase.close(); 48 } 49 50 /** 51 * Insert the Data 52 * @param title 53 * @param body 54 * @return 55 */ 56 public long createDiary(String title,String body){ 57 58 ContentValues content = new ContentValues(); 59 content.put(KEY_TITLE, title); 60 content.put(KEY_BODY, body); 61 Calendar calendar = Calendar.getInstance(); 62 String created = calendar.get(Calendar.YEAR) + "/" 63 + calendar.get(Calendar.MONTH) + "/" 64 + calendar.get(Calendar.DAY_OF_MONTH) + " " 65 + calendar.get(Calendar.HOUR_OF_DAY) + ":" 66 + calendar.get(Calendar.MINUTE); 67 content.put(KEY_CREATED, created); 68 69 return sqliteDatabase.insert(databaseHelper.DATABSE_TABLE, null, content); 70 } 71 72 /** 73 * Delete the record 74 * @param rowId 75 * @return 76 */ 77 public boolean deleteDiary(long rowId){ 78 79 String whereString = KEY_ROWID + "=" + rowId; 80 return sqliteDatabase.delete(databaseHelper.DATABSE_TABLE, whereString, null)>0; 81 } 82 83 /** 84 * Get all Records 85 * @return 86 */ 87 public Cursor getAllNotes() 88 { 89 String[] searchResult = {KEY_ROWID, KEY_TITLE,KEY_BODY, KEY_CREATED}; 90 return sqliteDatabase.query(databaseHelper.DATABSE_TABLE, searchResult, null, null, null, null, null); 91 } 92 93 /** 94 * Get the record by condition 95 * @param rowId 96 * @return 97 * @throws SQLException 98 */ 99 public Cursor getDiary(long rowId) throws SQLException{ 100 101 String[] searchResult = {KEY_ROWID, KEY_TITLE,KEY_BODY, KEY_CREATED}; 102 String whereString = KEY_ROWID + "=" + rowId; 103 104 Cursor mCursor = sqliteDatabase.query(true, databaseHelper.DATABSE_TABLE, searchResult, whereString, null, null, null, null, null); 105 if(mCursor!=null){ 106 mCursor.moveToFirst(); 107 } 108 return mCursor; 109 } 110 111 public boolean updateDiary(long rowId ,String title,String body){ 112 113 ContentValues values = new ContentValues(); 114 values.put(KEY_TITLE, title); 115 values.put(KEY_BODY,body); 116 117 Calendar calendar = Calendar.getInstance(); 118 String created = calendar.get(Calendar.YEAR) + "/" 119 + calendar.get(Calendar.MONTH) + "/" 120 + calendar.get(Calendar.DAY_OF_MONTH) + " " 121 + calendar.get(Calendar.HOUR_OF_DAY) + ":" 122 + calendar.get(Calendar.MINUTE); 123 values.put(KEY_CREATED, created); 124 String whereString = KEY_ROWID + "=" + rowId; 125 126 return sqliteDatabase.update(databaseHelper.DATABSE_TABLE, values, whereString, null)>0; 127 } 128 }
3.主activity--MainActivity
View Code
1 package com.cb.test; 2 3 import android.app.ListActivity; 4 import android.content.Intent; 5 import android.database.Cursor; 6 import android.os.Bundle; 7 import android.util.Log; 8 import android.view.Menu; 9 import android.view.MenuItem; 10 import android.view.View; 11 import android.widget.ListAdapter; 12 import android.widget.ListView; 13 import android.widget.SimpleCursorAdapter; 14 15 public class MainActivity extends ListActivity { 16 17 private static final int INSERT_ID = Menu.FIRST; 18 19 private static final int DELETE_ID = Menu.FIRST + 1; 20 21 private static final int ACTIVITY_CREATE = 0; 22 23 private static final int ACTIVITY_EDIT = 1; 24 25 private DiaryDbAdapter diaryDb; 26 27 private int select_id = 0; 28 29 private Cursor cursor; 30 /** Called when the activity is first created. */ 31 @Override 32 public void onCreate(Bundle savedInstanceState) { 33 super.onCreate(savedInstanceState); 34 setContentView(R.layout.main); 35 // 为ListView注册上下文菜单 36 registerForContextMenu(getListView()); 37 38 diaryDb =new DiaryDbAdapter(this); 39 diaryDb.open(); 40 showListView(); 41 } 42 43 @Override 44 protected void onDestroy() { 45 diaryDb.close(); 46 super.onDestroy(); 47 } 48 49 private void showListView(){ 50 cursor = diaryDb.getAllNotes(); 51 52 String[] from = new String[]{DiaryDbAdapter.KEY_TITLE,DiaryDbAdapter.KEY_BODY,DiaryDbAdapter.KEY_CREATED}; 53 int[] to = new int[]{R.id.text01, R.id.text02,R.id.created}; 54 55 ListAdapter cursorAdapter = new SimpleCursorAdapter(this,R.layout.diary_row,cursor,from,to); 56 setListAdapter(cursorAdapter); 57 } 58 59 @Override 60 protected void onListItemClick(ListView l, View v, int position, long id) { 61 // TODO Auto-generated method stub 62 super.onListItemClick(l, v, position, id); 63 select_id = (int) id; 64 65 Cursor c = cursor; 66 c.move(position); 67 Intent intent = new Intent(this,ActivityDiary.class); 68 intent.putExtra(DiaryDbAdapter.KEY_ROWID, id); 69 intent.putExtra(DiaryDbAdapter.KEY_TITLE, c.getString(c 70 .getColumnIndexOrThrow(DiaryDbAdapter.KEY_TITLE))); 71 intent.putExtra(DiaryDbAdapter.KEY_BODY, c.getString(c 72 .getColumnIndexOrThrow(DiaryDbAdapter.KEY_BODY))); 73 startActivityForResult(intent, ACTIVITY_EDIT); 74 } 75 76 // 上下文菜单 77 @Override 78 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 79 super.onCreateContextMenu(menu, v, menuInfo); 80 menu.add(0, DELETE_ID, 0, R.string.menu_delete); 81 } 82 83 @Override 84 public boolean onContextItemSelected(MenuItem item) { 85 switch (item.getItemId()) { 86 case DELETE_ID: 87 Log.i("DELETE_ID:", String.valueOf(select_id)); 88 diaryDb.deleteDiary(select_id); 89 showListView(); 90 break; 91 } 92 return true; 93 } 94 95 @Override 96 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 97 // TODO Auto-generated method stub 98 super.onActivityResult(requestCode, resultCode, data); 99 showListView(); 100 } 101 102 @Override 103 public boolean onCreateOptionsMenu(Menu menu) { 104 // TODO Auto-generated method stub 105 super.onCreateOptionsMenu(menu); 106 menu.add(0,INSERT_ID,0,R.string.menu_insert); 107 menu.add(0,DELETE_ID,0,R.string.menu_delete); 108 return true; 109 } 110 111 @Override 112 public boolean onMenuItemSelected(int featureId, MenuItem item) { 113 // TODO Auto-generated method stub 114 switch(item.getItemId()){ 115 case INSERT_ID: 116 Log.i("INSERT:", String.valueOf(INSERT_ID)); 117 createDiary(); 118 return true; 119 case DELETE_ID: 120 Log.i("DELETE_ID:", String.valueOf(select_id)); 121 diaryDb.deleteDiary(select_id); 122 showListView(); 123 return true; 124 } 125 return super.onMenuItemSelected(featureId, item); 126 } 127 128 private void createDiary(){ 129 130 Intent intent = new Intent(); 131 intent.setClass(this, ActivityDiary.class); 132 startActivityForResult(intent, ACTIVITY_CREATE); 133 } 134 }
4.编辑的activity--ActivityDiary
View Code
continue my dream...