0

我有一个包含一些元素的 ListView。我想检索我运行上下文菜单的元素的 ID(通过长按)。但以下代码:

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_adapter);

    /*non relevant code was omitted*/
    registerForContextMenu(this.getListView());

}

    @Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo info){

    Log.i("view", String.valueOf(v.findFocus().getId()) );

    super.onCreateContextMenu(menu,  v, info);
    getMenuInflater().inflate(R.menu.activity_adapter_context_menu, menu);
}

返回始终相同的 id,即 ListView 视图的 id,而不是 ListView 元素的 id。我尝试了其他一些选择,但找不到解决方案。如何整理?

4

2 回答 2

0

为 listView 设置 onItemClickListener。在覆盖方法上,获取视图 id

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {

    String id = view.getId().toString();

    //open context menu now
    view.showContextMenu();
}

注意:仅注册一次上下文菜单。

regsiterForContextMenu(listView);
于 2012-12-14T17:03:58.163 回答
0

如果你想获取列表项 id 然后使用

lv.setOnItemLongClickListener(new OnItemLongClickListener() {

            @Override
            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                // TODO Auto-generated method stub
                return false;
            }
        });
于 2012-12-14T17:20:35.533 回答