Java 从ActionMode.Callback.onDestroyActionMode()刷新ListView

Java 从ActionMode.Callback.onDestroyActionMode()刷新ListView,java,android,android-listview,android-fragments,android-actionmode,Java,Android,Android Listview,Android Fragments,Android Actionmode,这是一个关于StackOverflow的问题,在你将这个问题标记为重复之前,我知道。然而,这个问题是模糊的,没有代码,似乎没有得到充分的回答 关于我的问题: 我有一个ListFragment(MainListFragment),它,onLongItemClick,打开一个上下文操作栏。此上下文操作栏中的一个菜单项可用于删除长时间单击的ListView项 在实现ActionMode.Callback的类中,我可以删除长时间单击的项,但是我需要ListView在删除后刷新自己,这样用户就不必切换片段

这是一个关于StackOverflow的问题,在你将这个问题标记为重复之前,我知道。然而,这个问题是模糊的,没有代码,似乎没有得到充分的回答

关于我的问题:

我有一个
ListFragment
(MainListFragment),它,
onLongItemClick
,打开一个
上下文操作栏。此上下文操作栏中的一个菜单项可用于删除长时间单击的
ListView

在实现
ActionMode.Callback
的类中,我可以删除长时间单击的项,但是我需要
ListView
在删除后刷新自己,这样用户就不必切换片段来查看删除的效果

在这里,您可以在
MainListFragment
中看到我的
onLongItemClickListener

this.getListView().setOnItemLongClickListener(new OnItemLongClickListener(){

        @Override
        public boolean onItemLongClick(AdapterView<?> adapter, View view,
                int pos, long id) {
            // TODO Auto-generated method stub
            Log.d("My Debug Bitches", "made it to the listener");
            MainListContextualMenu menu = new MainListContextualMenu();
            //view.startActionMode(menu);
            ActionMode mode = getActivity().startActionMode(menu);
            Object[] tags = new Object[2];
            tags[0] = view.getRootView().getContext();
            tags[1] = pos;
            mode.setTag(tags);
            //view.setSelected(true);
            return true;
        }

    });
我曾尝试在我的
onDestroyActionMode()
方法中使用
invalidateViews()
,但没有效果,我还看到其他人推荐
notifyDataSetChange()

但是,我不知道如何在ActionMode.Callback中使用这些解决方案。如果查看我的
onLongClick()
方法,我将使用
mode.setTag()
传递单击的ListView项的
main活动和
位置。这张表格好吗

我只想能够在
ActionMode.Callback.onDestroyActionMode()
方法中从
MainListFragment
刷新
ListView


以前有人使用过这个方法吗?如果是的话,他/她有什么建议吗?

根据您的实现,我建议这个答案,可能有更好的方法,首先创建一个方法
getAdapter()
,它将返回您的
适配器
,您正在使用它来查看
列表

ArrayAdapter adapter;

public ArrayAdapter getAdapter()
    {
        // TODO Auto-generated method stub
        return adapter;
    }
现在像这样更改代码,添加以下
activity.getAdapter().notifyDataSetChanged()

希望这会有帮助

ArrayAdapter adapter;

public ArrayAdapter getAdapter()
    {
        // TODO Auto-generated method stub
        return adapter;
    }
case R.id.main_list_contextual_menu_delete:

        //MainActivity activity = (MainActivity) mode.getCustomView().getContext();
        //activity.getLists().remove(mode.getTag());

        Object[] tags = (Object[]) mode.getTag();
        MainActivity activity = (MainActivity) tags[0];
        int index = (Integer) tags[1];
        //Log.d("My Debug Bitches","" +index);
        //Log.d("My Debug Bitches", "size before " + activity.getLists().size());
        activity.getLists().remove(index);
        activity.getAdapter().notifyDataSetChanged();
        //Log.d("My Debug Bitches", "size after " + activity.getLists().size());
        break;