记录使用Menu时的坑,不断更新
- 问题一:如何在运行时改变ContextMenu的Item
- 问题二:AdapterContextMenuInfo中position和id的区别
问题一
解决办法:先使用Menu.findItem(),传入MenuItem的ID,获取你要改变的MenuItem,然后调用相应方法修改就好。例如
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate(R.menu.popup, menu);
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
if(invisibleUsers.contains(users.get(info.position).getUsername())){
//获取菜单项,改变菜单ID
MenuItem item = menu.findItem(R.id.no_look);
item.setTitle("取消屏蔽");
}
}
问题二
首先看一下官方代码的截图:
从代码注释中我们可以看出,position是指上下文菜单中菜单项的位置,id是指上下文菜单对应的view的item的位置。比如,长按ListView中第10项,id的值就是10。