[英]Get value from list on onContextItemSelected ()?
您好想知道我們是否可以從onContextItemSelected()中的數據庫中獲取列表中定義的字段的值(如id)? 我創建上下文菜單的代碼固定在下面,不勝感激,謝謝
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
long clickedPosition = info.id;
switch (item.getItemId()) {
case NEW_MENU_ITEM:
//callActivity(1);
break;
case SAVE_MENU_ITEM:
//callActivity(2);
break;
}
return super.onContextItemSelected(item);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, view, menuInfo);
menu.setHeaderTitle("Options");
menu.add(0, NEW_MENU_ITEM, 0, "Delete");
menu.add(0, SAVE_MENU_ITEM, 1, "Rename");
}
以下代碼不會從數據庫中撤消我的ID
long clickedPosition = info.id;
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
Object obj = getListView().getItemAtPosition(info.position);
String name = obj.toString();
}
該字段中返回的值完全取決於您的適配器實現。 這將是傳遞給OnItemClickListener
的相同id
,它是適配器上的getItemId()
返回的值。
如果使用CursorAdapter
或其變體將數據提供給列表,則_id
列是默認返回的值,除非您已修改此方法。 對於ArrayAdapter
,不是這種情況,您必須添加代碼以返回所需的ID。 如果您需要傳回的數據不僅僅是單個int
,則可以使用setTag()
在列表項視圖上設置標簽,並從ContextMenuInfo
檢索它,因為targetView
是它攜帶的參數之一。
您可以通過在onContextItemSelected
添加int id= info.position
來檢索元素在此列表中的onContextItemSelected
。
希望能幫助到你
將database_id設置為lisviewItem視圖的標簽。
view.setTag(database_id );
然后從onContextItemSelected(MenuItem item)獲取database_id
@Override
public boolean onContextItemSelected(android.view.MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item
.getMenuInfo();
int listPosition = info.position;
switch (item.getItemId()) {
case call:
View view = info.targetView;
String database_id=(String) view.getTag();
return true;
case defaullt:
return true;
}
return super.onContextItemSelected(item);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.