2

您好想知道我们能否从 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;
4

4 回答 4

2
 @Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();

    Object obj = getListView().getItemAtPosition(info.position);
    String name = obj.toString();

}
于 2015-10-11T17:10:29.430 回答
0

int id= info.position 您可以通过添加in来检索此列表中元素的位置 onContextItemSelected

希望能帮助到你

于 2014-01-21T19:58:43.670 回答
0

该字段中返回的值完全取决于您的适配器实现。它与id传递给 的相同,它是适配器OnItemClickListener返回的值。getItemId()

如果您正在使用CursorAdapter或它的变体向列表提供数据,则该_id列是默认返回的值,除非您修改了此方法。对于ArrayAdapter,情况并非如此,您必须添加代码以返回所需的 ID。如果您需要传回比单个 更复杂的数据int,您可以在列表项视图上设置一个标签,setTag()并从中检索它,ContextMenuInfo因为targetView它是它携带的参数之一。

于 2012-09-21T20:40:05.770 回答
0

将 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);
    }
于 2014-09-03T06:10:39.310 回答