Java 从ActionMode.Callback.onDestroyActionMode()刷新ListView
这是一个关于StackOverflow的问题,在你将这个问题标记为重复之前,我知道。然而,这个问题是模糊的,没有代码,似乎没有得到充分的回答 关于我的问题: 我有一个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在删除后刷新自己,这样用户就不必切换片段
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;