我有一个片段,其中我显示了一个列表视图,让我们说3个项目:A,B和C. 我长按B键显示上下文菜单。然后,一旦显示此菜单,后台进程将更新数据并从适配器中删除A(游标适配器+ notifydatasetchanged)。我的上下文菜单仍然显示。现在我按下一个上下文菜单条目,所选动作将应用于项目C(现在位于我的列表中的第二个位置),它应该应用于项目B(当我打开上下文菜单但现在是第一个位置时的第二个位置)。 这在Android 2.x中运行良好,但在Android 4.1-4.4中失败
知道为什么吗?
请在下面找到我的代码
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
final MenuInflater inflater = this.getActivity().getMenuInflater();
inflater.inflate(R.menu.contextual_menu, menu);
// don't forget to set the title !
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo;
ViewHolder viewHolder = (ViewHolder) info.targetView.getTag();
...
}
public boolean onContextItemSelected(MenuItem item) {
super.onContextItemSelected(item);
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
ViewHolder viewHolder = (ViewHolder) info.targetView.getTag();
int menuItemIndex = item.getItemId();
switch (menuItemIndex) {
case R.id.entry1 :
process(viewHolder);
break;
}
...
}