我想获取游标的当前记录,而不仅仅是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