如何在自定义列表android中使用上下文菜单项

时间:2011-07-29 05:30:07

标签: android

我已经实施了custom list view。 (使用活动和ListRowAdapter扩展BaseRowAdaptor

我将contextmenu设置为listview设置

itemView.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() 
{
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v,
                ContextMenuInfo menuInfo)
       {

              menu.setHeaderTitle("Context Menu");  
              menu.add(0, v.getId(), 0, "Action 1");  
            // menu.add(0, v.getId(), 0, "Action 2"); 

        }
    });

我的适配器类中的getView方法。

但是如何处理项目选择事件?

我可以在我的Activity中抓住该事件。

但是如何识别列表视图的行?

2 个答案:

答案 0 :(得分:0)

您可以创建一个全局int变量,其中包含您选择的项目的索引。您可以在listview onLongClick(),onClick()等事件中设置变量的值。然后,当您进入上下文菜单的项目单击事件时,您将可以访问列表视图中当前选定的行。

答案 1 :(得分:0)

将LongClickListener设置为listview,然后在longClick上设置showContext菜单。

Class ActivityName extends Activity implements IconContextItemSelectedListener 
{  
    private IconContextMenu cmContextMenu;  
    private int selectedPosition ;

    onCreate() { 
        cmContextMenu = new IconContextMenu(this, R.menu.fbupdatecontextmenu);
        cmContextMenu.setOnIconContextItemSelectedListener(this);
        lv.setOnItemLongClickListener(new OnItemLongClickListener() {
            public boolean onItemLongClick(AdapterView<?> av, View v, int position, long arg3) {
                selectedPosition = position;
                cmContextMenu.show();
                return true;            
            }
        });
    }

    public void onIconContextItemSelected(MenuItem item, Object info) {
        switch (item.getItemId()) {
        case R.id.someThing: {
            system.out.prinlt("position " +selectedPosition); 
            break;  
        }
    }
}