一、Notepadv3 整體代碼結構
有前面的輔助類,在主界面就可以直接調用了,Notepadv3 繼承ListActivity類下面是主干代碼,每個函數的實現參見源碼。(源碼連接)
public class Notepadv3 extends ListActivity
{
private static final int ACTIVITY_CREATE = 0;
private static final int ACTIVITY_EDIT = 1;
private static final int INSERT_ID = Menu.FIRST;
private static final int DELETE_ID = Menu.FIRST + 1;
private NotesDbAdapter mDbHelper;
public void onCreate(Bundle savedInstanceState)
private void fillData()
public boolean onCreateOptionsMenu(Menu menu)
public boolean onMenuItemSelected(int featureId, MenuItem item)
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
public boolean onContextItemSelected(MenuItem item)
private void createNote()
protected void onListItemClick(ListView l, View v, int position, long id)
protected void onActivityResult(int requestCode, int resultCode, Intent intent)
}
二、函數功能分析
這里只分析個別函數,菜單的相關函數就不再多說了
1、在 onCreate(Bundle savedInstanceState)做兩件事,調用函數fillData()初始化界面的記錄顯示,注冊上下文菜單按鈕
2.filldata(),自定義函數:從數據庫中取得所有的記錄,顯示到list的各個item中:
private void fillData()
{
// 從數據庫獲取所有的行記錄,並且創建item集合用以存放
Cursor notesCursor = mDbHelper.fetchAllNotes();
startManagingCursor(notesCursor);
// 從集合里取出每條記錄的標題,放入string數組
String[] from = new String[] { NotesDbAdapter.KEY_TITLE,NotesDbAdapter.KEY_BODY };
// 用於綁定對應數據顯示的布局textview,位於單獨的notes_row.xml中
int[] to = new int[] { R.id.text1,R.id.content };
// 創建SimpleCursorAdapter,綁定到外觀xml文件,參數分別對應數據和具體的layout
SimpleCursorAdapter notes = new SimpleCursorAdapter(this, R.layout.notes_row, notesCursor, from, to);
setListAdapter(notes);
}
創建記錄createNote(),通過intent調用NoteEdit,在新的頁面內才會真正的創建,供用戶填寫記事的內容
private void createNote()
{
Intent i = new Intent(this, NoteEdit.class);
startActivityForResult(i, ACTIVITY_CREATE);
}
三、
所有的編碼工作到這就完成了,值得一提的事draw9patch工具的使用,官方NotePad案例沒有使用,但是這個工具很好,雖然本使用后貌似也沒用好,園子里已經有有園友詳細接掃了它的使用,不再贅述。
完。。。