- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题已经在 StackOverflow 上流传了一段时间,在您将此问题标记为重复之前,我知道 this link 。然而,这个问题很模糊,没有代码,而且似乎没有得到完全解答。
接下来我的问题:
我有一个ListFragment
(MainListFragment)那个,onLongItemClick
,打开 Contextual Action Bar
。此上下文操作栏中的菜单项之一可以删除 ListView
长按的项目。
在实现 ActionMode.Callback
的类中,我可以删除长按的项目,但我需要 ListView
删除后会自行刷新,这样用户就不必切换 Fragments 来查看删除的效果。
在这里你可以看到我的onLongItemClickListener
MainListFragment
内:
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;
}
});
这是我的 ActionMode.Callback 实现类:
public class MainListContextualMenu implements ActionMode.Callback{
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
// TODO Auto-generated method stub
switch(item.getItemId()){
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);
//Log.d("My Debug Bitches", "size after " + activity.getLists().size());
break;
case R.id.main_list_contextual_menu_edit:
break;
}
return false;
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
// TODO Auto-generated method stub
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.main_list_contextual_menu, menu);
Log.d("My Debug Bitches", "menu inflated");
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
// TODO Auto-generated method stub
Object[] tags = (Object[]) mode.getTag();
MainActivity activity = (MainActivity) tags[0];
ListView view = (ListView) activity.getCurrentFocus();
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
// TODO Auto-generated method stub
return false;
}
}
我尝试过使用invalidateViews()
在我的onDestroyActionMode()
内方法没有效果,我看到别人推荐notifyDataSetChange()
。
但是,我不确定如何在 ActionMode.Callback 中使用这些解决方案。如果你看看我的onLongClick()
方法,我用mode.setTag()
通过MainActivity
和 position
被单击的 ListView 项目的名称。这是好的形式吗?
我只是希望能够刷新 ListView
来自MainListFragment
ActionMode.Callback.onDestroyActionMode()
内方法。
以前有人让这个工作过吗?如果是的话,他/她有什么建议吗?
最佳答案
我根据您的实现建议这个答案,可能有更好的方法,首先创建一个方法 getAdapter()
,它将返回您正在使用的 adapter
对于您的listview
。
ArrayAdapter adapter;
public ArrayAdapter getAdapter()
{
// TODO Auto-generated method stub
return adapter;
}
现在像这样更改您的代码,添加此 activity.getAdapter().notifyDataSetChanged();
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;
希望能有所帮助。
关于java - 从 ActionMode.Callback.onDestroyActionMode() 刷新 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21636017/
我想在 ActionMode 中添加一个下拉菜单,它看起来像 Android 官方 Gallery 应用程序中的下拉菜单,它允许您“选择所有”或“取消选择所有”图像。如下图所示: 我发现的唯一方法是通
我有一个列表 Activity ,用户可以在其中执行打开操作模式 A和 B .用户还可以打开操作模式 A然后B在它上面。 问题是当 Action 模式A显示并且操作模式 B 显示在其顶部,A当 B 时
我正在学习教程 11. Exercise: Using the contextual action mode 但是我有这个错误: mActionMode = Display.this.startAct
我正在使用“AppCompact”并实现“ActionMode.Callback”,我看到了 2 个具有相同覆盖方法的不同“ActionMode”。 “android.view.ActionMode”
我使用 startSupportActionMode(...) 在我的应用中启动 acion 模式。但是当我点击智能手机上的后退按钮时,操作模式被取消。 我发现了这个解决方案,但它对我不起作用。第二个
我在 ListView 中使用操作模式进行多选。我遇到的问题是,在模拟器上测试时,我指定为隐藏在我的操作模式菜单中的图标永远不会隐藏在溢出菜单中,尽管在预览中它是。我在这里使用 AppCompat 主
目前,操作模式工具栏显示在工具栏上方,将整个布局向下移动,我希望它显示在我当前工具栏的顶部。我尝试了 this post 中的所有解决方案和 this one : 我尝试使用带或不带 android:
在我的 Activity 中,我使用带有微调器而不是标题(在 xml 中定义)的 Toolbar(来自 appcompat)。该 Activity 不是 ActionBarActivity,因此我不将
我正在使用新的 android 支持库 21.0.2,当我调用 ActionMode 进行文本选择时,我得到了这个。 似乎标题 TextView 背景是透明的。 重新定义 ActionMode 的 t
我有启动 Action 模式的列表 fragment 。我正在使用 actionbarsherlock。但是当方向改变时,或者当我开始新的 Activity 时,上下文操作栏就会消失。有什么方法可以恢
我们如何更改 ActionMode 的布局或背景?有方法actionMode.getCustomView();但总是返回 null 。有什么建议吗? 最佳答案 您可以通过带有此属性的 styles.x
哎呀。当我将我的应用程序升级到 L 时,我用工具栏替换了 ActionBars,现在每当我启动 ActionMode 时,它都会下推所有内容。 (我想这是因为再次显示 ActionBar 是为了显
除了传统的 android 之外,我正在尝试将 android.view.ActionMode 与新的 android.support.v7.widget.Toolbar 一起使用.app.Actio
我为 ActionMode 编写了一个自定义菜单,并将其作为文本选择中的自定义 ActionMode 传递给 TextView.setCustomSelectionActionModeCallback
我正在使用 Android 的新小部件 Toolbar,我想更改它的 ActionMode 的背景和文本颜色(第一个奇怪的事情:ActionMode 不会使用默认的原色,它应该是默认行为...)。 我
我有一个 ActionMode 的实现来显示多个在 RecyclerView 中选择项目。 我想知道什么时候点击 actionMode 中的后退按钮以相应地重置 recyclerView 但是在实现
几天来我一直在尝试寻找 ActionMode 内存泄漏的根源,但没有成功。我有一个包含多个 fragment 的 Activity ,当我离开具有 ActionMode 的 fragment (同时自
有没有办法在不更改“正常”ActionBar 图标的情况下更改 ActionMode 溢出图标? 最佳答案 I still need to figure out how to only change
我有以下 Activity 布局:
我有一项新支持工具栏和抽屉导航的 Activity 。工具栏与内容相关,例如元素 list 。可以选择多个项目 - 然后显示 ActionMode(上下文操作栏)。然而系统的ActionMode位置、
我是一名优秀的程序员,十分优秀!