我有一个带有listView的应用程序,我在其中设置了我的sqlite数据库中的数据。我的CustomCursorAdapter将数据(来自DBAdapter)放在listview中。 我想从listView获取所选项目的项目ID,我通过此代码得到它:
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> listView, View view,
int position, long id) {
// Get the cursor, positioned to the corresponding row in the result set
Cursor cursor = (Cursor) listView.getItemAtPosition(position);
//Get it from the database.
String countryCode =
cursor.getString(cursor.getColumnIndex(cursor.getColumnName(0)));
Toast.makeText(getApplicationContext(),
countryCode, Toast.LENGTH_SHORT).show();
}
});
该代码确实获取了ID并进行了祝酒,我可以在其中看到ID。这非常有效。 现在我想把它放在一个上下文菜单中,我在其中长按项目(因此这个方法无法启动)。我有上下文菜单处理项目,但我只需要获取列表视图中哪个项目的ID。
现在是我的上下文菜单代码:
public boolean onContextItemSelected(MenuItem item) {
Cursor cursor = (Cursor) listView.getItemAtPosition(position);
String countryCode =
cursor.getString(cursor.getColumnIndex(cursor.getColumnName(0)));
switch (item.getItemId()) {
case CONTEXT_MENU_DELETE_ITEM:
Toast.makeText(getApplicationContext(),
countryCode, Toast.LENGTH_SHORT).show();
return(true);
case CONTEXT_MENU_UPDATE:
return(true);
}
return(super.onOptionsItemSelected(item));
}
上下文菜单现在不起作用,因为未设置位置变量。我真的不知道如何获得所选项目。
提前致谢。
答案 0 :(得分:1)
使用此
AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item .getMenuInfo();
int positionSelected = menuInfo.position;
答案 1 :(得分:0)
在实现onItemClick时,只需实现onItemLongClick,并为上下文菜单注册此listview。
在长按中获取索引,通过此获取所选的ID,并在上下文菜单中使用此ID。
另一种方法是在此链接中查看链接
http://progrnotes.blogspot.in/2010/10/android-context-menu-in-listview-after.html
这是菜单的代码段
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info= (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
Long id = getListAdapter().getItemId(info.position);/*what item was selected is ListView*/
switch (item.getItemId()) {
case CONTEXT_MENU_DELETE_ITEM:
//do smth
return(true);
case CONTEXT_MENU_UPDATE:
//do smth else)
return(true);
}
return(super.onOptionsItemSelected(item));
}
答案 2 :(得分:0)
您的ListView通过AbsListView.getCheckedItemIds()
告诉您HTH