列表视图显示内容更改时管理ListView上下文菜单

时间:2015-02-27 08:55:47

标签: android android-listview contextmenu

我有一个片段,其中我显示了一个列表视图,让我们说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;
        }

...
}

0 个答案:

没有答案