我的问题: 在我使用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));
答案 0 :(得分:1)
我怀疑你的问题是:
我的自定义适配器会生成每个列表行 复选框和文本视图
暂时摆脱复选框。如果您的上下文菜单现在有效,那么复选框就是问题所在。请考虑切换到CheckedTextView
- 无论如何都要更好地支持ListView(例如,使用CHOICE_MODE_MULTIPLE
,setItemChecked()
)。
我使用了自定义适配器的上下文菜单并且没有任何问题。但是,我没有在行中使用复选框。