我想獲取遊標的當前記錄,而不僅僅是ID,以便我可以操作上下文菜單。如何從光標獲取數據到ContextMenu
我看到這個例子here將告訴您如何獲得ID:
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case DELETE_ID:
AdapterView.AdapterContextMenuInfo info=
(AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
delete(info.id);
return(true);
}
return(super.onOptionsItemSelected(item));
}
這是偉大的,因爲它可以讓我得到了點擊右鍵菜單的適當的SQLite數據庫ID,這將讓我寫一個查找功能。但當然,我可以重用當前的光標?
我試着這樣做:
Cursor c = (Cursor) this.getListAdapter().getItem((int) info.id);
String itemPriority = c.getInt(1);
Log.v(TAG, "Current item:" + itemPriority);
但光標線似乎返回的數據庫,而不是我後記錄的只是架構。
有人可以請一些光。
編輯:感謝@azgolfer我找到了解決方案。我使用fillData()方法來填充適配器。通常這是沒有變量的聲明。我不得不用字段變量重新定義這個方法。的代碼,以使curstor適配器onContextItemSelected可見的相關部分是在這裏:
private void fillData() {
Cursor itemsCursor = mDbHelper.fetchAllItemsFilter(mListId, mStatusFilter);
startManagingCursor(itemsCursor);
mItemAdaptor = new ItemAdapter(this, itemsCursor);
this.setListAdapter(mItemAdaptor);
}
你通過重用是什麼意思?並且'c.getInt(1)'得到那個遊標行的索引1。所以只需從該遊標行的其他索引中獲取記錄,如'c.getString(2)'。除非你正在嘗試做別的事情。 – Andy 2012-07-26 20:10:07
對不起,我猜工作重用應該是「使用」。但重點在於遊標不返回數據,只是模式。 – 2012-07-26 20:23:12
您可以打印顯示'itemPriority'嗎? – Andy 2012-07-26 23:03:00