当我的列表视图有自定义适配器时,为什么MenuItem.AdapterContextMenuInfo为空?

时间:2010-05-25 11:36:58

标签: android

我的问题: 在我使用OnLongClickListener之前,当列表视图有自定义适配器时,是否有更好的方法来传递“点击的内容以创建此上下文菜单”信息?

以下是一些细节:

通常,我的代码可以执行以下操作:

public boolean onContextItemSelected(MenuItem item) {
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();

然后继续开心。

但是,自从我引入自定义适配器以来,item.getMenuInfo()为null。 这是一个大问题,因为我的代码不再知道点击了哪个项目。 (我的自定义适配器使每个列表行成为复选框和文本视图)

我尝试了但失败了: 创建了我自己的特殊AdapterContextMenuInfo(称为“HasAViewMenuInfo”),但是当我在这个方法中传递它时,它在菜单中最终为null

public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) 
{
    super.onCreateContextMenu(menu, v, new HasAViewMenuInfo(v));

1 个答案:

答案 0 :(得分:1)

我怀疑你的问题是:

  

我的自定义适配器会生成每个列表行   复选框和文本视图

暂时摆脱复选框。如果您的上下文菜单现在有效,那么复选框就是问题所在。请考虑切换到CheckedTextView - 无论如何都要更好地支持ListView(例如,使用CHOICE_MODE_MULTIPLEsetItemChecked())。

我使用了自定义适配器的上下文菜单并且没有任何问题。但是,我没有在行中使用复选框。