DummyNote.java
package com.example.dummynote; import android.os.Bundle; import android.support.v4.widget.SimpleCursorAdapter; import android.util.Log; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.R.bool; import android.app.ListActivity; import android.content.Intent; import android.database.Cursor; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListAdapter; import android.widget.ListView; public class DummyNote extends ListActivity { private static final String TAG = "notes"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); getListView().setEmptyView(findViewById(R.id.empty));//设置列表为空时的显示内容为 empty文本框 registerForContextMenu(getListView()); //调用 registerForContextMenu() 方法,为视图注册上下文菜单。 setAdapter(); } /* private String[] note_array={ "hangsome","lushichuanshuo","android","library" }; */ private NotesDbAdapter mDbHelper ; private Cursor mNoteCursor; private void setAdapter(){ mDbHelper = new NotesDbAdapter(this); mDbHelper.open(); fillData(); } //fillData()刷新数据 private void fillData(){ mNoteCursor = mDbHelper.getall(); startManagingCursor(mNoteCursor); String[] from = new String[]{NotesDbAdapter.NOTE}; int[] to = new int[]{android.R.id.text1};//android.R.id.text1是Android 框架里面的TextView的一个标识符 //Now create a simple cursor adapter SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1,mNoteCursor,from,to); setListAdapter(adapter); } //Add an entity private int mNoteNumber = 1; protected static final int MENU_INSERT = Menu.FIRST; protected static final int MENU_DELETE = Menu.FIRST+1; @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. super.onCreateOptionsMenu(menu); menu.add(0,MENU_INSERT,"新增记事"); menu.add(0,MENU_DELETE,"删除记事"); return super.onCreateOptionsMenu(menu); } public boolean onOptionsItemSelected(MenuItem item){ switch(item.getItemId()){ case MENU_INSERT: String noteName = "Note "+ mNoteNumber++; mDbHelper.create(noteName); fillData(); return true; case MENU_DELETE: mDbHelper.delete(getListView().getSelectedItemId()); fillData(); return true; } return super.onOptionsItemSelected(item); } //NoteEdit Activity的跳转设置 private static final int ACTIVITY_EDIT = 0x1001; @Override protected void onListItemClick(ListView l,View v,int position,long id) { super.onListItemClick(l,v,position,id); Intent intent = new Intent(this,NoteEdit.class); intent.putExtra(NotesDbAdapter.ROWID,id);//id代表绑定到这个“ListView”项目的“row ID” startActivityForResult(intent,ACTIVITY_EDIT); } //startActivityForResult()和onActivityResult()方法是配套使用。 //前者负责调用其他Activity //猴子负责处理从其他Activity返回的消息 @Override protected void onActivityResult(int requestCode,int resultCode,Intent intent) { // TODO Auto-generated method stub super.onActivityResult(requestCode,resultCode,intent); fillData(); } //长按删除 @Override public void onCreateContextMenu(ContextMenu menu,ContextMenuInfo menuInfo) { menu.add(0,"删除记事"); menu.setHeaderTitle("要如何处理这笔记录?"); super.onCreateContextMenu(menu,menuInfo); } @Override public boolean onContextItemSelected(MenuItem item) { AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); switch(item.getItemId()){ case MENU_DELETE: mDbHelper.delete(info.id); fillData(); break; } return super.onContextItemSelected(item); } }
NoteDbAdapter.java
package com.example.dummynote; import java.util.Date; import android.content.ContentValues; import android.content.Context; import android.database.sqlException; import android.database.sqlite.sqliteDatabase; import android.database.sqlite.sqliteOpenHelper; import android.database.*; import android.util.Log; public class NotesDbAdapter { private static final String TAG = "notes"; private static final String DATABASE_NAME = "notes.db"; private static final int DATABASE_VERSION = 1 ; private static final String DATABASE_TABLE = "notes"; private static final String DATABASE_CREATE = "create table notes(" +"_id INTEGER PRIMARY KEY," +"note TEXT NOT NULL," +"created INTEGER" +");"; private static class DatabaseHelper extends sqliteOpenHelper{ public DatabaseHelper(Context context) { super(context,DATABASE_NAME,null,DATABASE_VERSION); // TODO Auto-generated constructor stub } @Override//创建数据表 public void onCreate(sqliteDatabase db) { // TODO Auto-generated method stub try { db.execsql(DATABASE_CREATE); Log.d(TAG,"onCreate !"); } catch (Exception e) { Log.d(TAG,e.toString()); } } @Override//更新数据表 public void onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) { try { // TODO Auto-generated method stub db.execsql("DROP TABLE IF EXISTS "+DATABASE_TABLE); onCreate(db); Log.d(TAG,"inUpgrade!"); } catch (Exception e) { Log.d(TAG,"onUpgrade failure!"); } } } private Context mCtx = null; //抽象界面 private DatabaseHelper dbHelper; //数据库工具类 private sqliteDatabase db; //数据库类 /** COnstructor**/ public NotesDbAdapter(Context ctx){ this.mCtx=ctx; } public NotesDbAdapter open () throws sqlException{ dbHelper = new DatabaseHelper(mCtx); db = dbHelper.getWritableDatabase();//数据库不存在就创造一个,若存在就根据版本库来决定是否更新数据库 return this; } public void close(){ dbHelper.close(); } public static final String ROWID = "_id"; public static final String NOTE = "note"; public static final String CREATED = "created"; //query single entry public Cursor get(long rowId)throws sqlException { Cursor mCursor = db.query(DATABASE_TABLE,//Which table to select new String[]{ROWID,NOTE,CREATED},//Which columns to return ROWID+"="+rowId,//Where clause null,//Where arguments null,//Group By clause null,//Having clause null //Order-by clause ); if(mCursor!=null){ mCursor.moveToFirst();//指针移到一开始 } return mCursor; } //query single entry public Cursor getall() { return db.query(DATABASE_TABLE,//Which table to select new String[]{ROWID,//Which columns to return null,//Where clause null,//Where arguments null,//Group By clause null,//Having clause null //Order-by clause ); } //add an entity public long create(String Note){ Date now = new Date(); ContentValues args = new ContentValues(); args.put(NOTE,Note); args.put(CREATED,now.getDate()); return db.insert(DATABASE_TABLE,args); } //remove an entity public boolean delete(long rowId){ return db.delete(DATABASE_TABLE,ROWID+"="+rowId,null)>0;//delete失败返回0 } //update an entity public boolean update(long rowId,String note){ ContentValues args = new ContentValues(); args.put(NOTE,note); return db.update(DATABASE_TABLE,args,null)>0; } }
NoteEdit.java
package com.example.dummynote; import android.app.Activity; import android.database.Cursor; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class NoteEdit extends Activity{ private NotesDbAdapter mDbHelper; @Override protected void onCreate(Bundle SavedInstanceState){ super.onCreate(SavedInstanceState); mDbHelper = new NotesDbAdapter(this); mDbHelper.open(); setContentView(R.layout.note_edit); findViews(); showViews(SavedInstanceState); } private EditText field_note; private Button button_confirm; private void findViews() { // TODO Auto-generated method stub field_note = (EditText) findViewById(R.id.note); button_confirm = (Button) findViewById(R.id.confirm); } private Long mRowId; private void showViews(Bundle savedInstanceState) { mRowId = savedInstanceState != null? savedInstanceState.getLong(NotesDbAdapter.ROWID) : null; /*saveInstanceState 这个“bundle”数据容器中,取出Activity上一次处于“stop”状态是,键值为“_id”(NotesDbAdapter.ROWID)的内容值。如果这个ACtivity是 全新打开的或是之前的行程已经被回收了,那么“mRouId”的值被设为“null”*/ if (mRowId == null) { Bundle extras = getIntent().getExtras(); mRowId = extras != null ? extras.getLong(NotesDbAdapter.ROWID) : null; } populateFields();//根据RowId查询记录,并显示在EditText中 button_confirm.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { mDbHelper.update(mRowId,field_note.getText().toString()); setResult(RESULT_OK); finish(); } }); } private void populateFields() { if (mRowId != null){ Cursor note = mDbHelper.get(mRowId); startManagingCursor(note); field_note.setText(note.getString(note.getColumnIndexOrThrow(NotesDbAdapter.NOTE))); } } }原文链接:https://www.f2er.com/sqlite/199665.html