Android ListView无法单击项目

时间:2012-06-07 06:25:39

标签: android android-listview

我有一个ListView。我在单击某个项目时实现了OnItemClickListener来打开ContextMenu。

lv = getListView();
    lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            showMenu(view);
        }
    });

创建菜单的代码。

public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.layout.friend_list_menu, menu);
}

public void showMenu(View v) {
    registerForContextMenu(v);
    openContextMenu(v);
}

我的问题是,当我点击ListView的一个项目时,它会打开菜单。但是,如果我回到ListView,我不能再次点击该项目。其他项目相同,关闭菜单后无法单击。任何人都可以帮我这个吗?

2 个答案:

答案 0 :(得分:2)

你错误地设置了它。您在设置适配器时注册上下文菜单,而不是单击按钮。

它应该是这样的:

setListAdapter(lists);
registerForContextMenu(getListView());

然后你有了onCreateContextMenuonContextItemSelected方法(我以编程方式创建了我的方法,但是你的膨胀的方法也可以正常工作):

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    menu.setHeaderTitle("List Operations");
    menu.add(0, v.getId(), 0, "Edit List");
    menu.add(0, v.getId(), 0, "Delete List");
}

@Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
            .getMenuInfo();
    if (item.getTitle() == "Edit List") {
      //  Do your edit stuff here
    } else if (item.getTitle() == "Delete List") {
      // Do your delete stuff here
    }
    return super.onContextItemSelected(item);
}

您不需要使用onItemClick,除非您想在短按项目时执行某些操作(长按上下文菜单)。

答案 1 :(得分:0)

以下代码将有效。

代码:

  ListView listview=(ListView)findViewByid(R.id.listview);

   /**** here write appending data to listview*******/
     ArrayAdapter<String> adp=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,/**your list items**/);
     listview.setadapter(adp);
     registerForContextMenu(listview);

   //listview item click listener
  listview.setOnItemClickListener(new OnItemClickListener(){

@Override
public void onItemClick(AdapterView<?> arg0, View v, int p, long arg3) {
    // TODO Auto-generated method stub

 Toast.makeText(getApplicationContext(), "selected" + p, 30).show();
}});

   /****do your context menu code here*******/