一、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案例沒有使用,但是這個工具很好,雖然本使用後貌似也沒用好,園子裡已經有有園友詳細接掃了它的使用,不再贅述。
源碼串連
完。。。