android – 如何知道ActionView在操作栏中何时关闭?
作者:互联网
我有一个问题:我在Fragment中有一个listView,我实现了一个searchView(actionView)来使用searchView onQueryTextChange事件过滤listView中的列表.我在这部分没有问题,一切正常.
adapter = new ListaEmpleadosAdapter(getActivity(), empleadoItems, context);
SearchView searchView = (SearchView) menu.findItem(R.id.menu_buscar).getActionView();
SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
try {
adapter.getFilter().filter(s);
adapter.notifyDataSetChanged();
} catch (Exception e) {
System.err.println("ERROR FragmentEmpleado -> " + e.toString());
}
return true;
}
};
当我第一次搜索并按下后退按钮时,软键盘关闭.这很正常.当我再次按下后退按钮时,searchView关闭,这是正常的,但列表不会返回初始项目.
当searchView被折叠时(因为searchView.setOnCloseListener不起作用)恢复初始列表项,我怎么能得到这个事件?或者以任何方式恢复删除适配器过滤器的初始列表项…
历史:
>员工名单
>具有特定过滤器的员工列表(按下第一个后退按钮后,键盘关闭)
>已关闭searchView的员工列表(但在按下第二个按钮后没有恢复原始列表)
非常感谢!
解决方法:
SearchView上有一个方法在搜索视图崩溃时被触发(onActionViewCollapsed),但没有任何事件.为了解决这个问题,我创建了自己的继承自SearchView的类,并定义了2个事件来捕获折叠和扩展.该类还提供了连接事件处理程序的方法.
public class MySearchView extends SearchView {
OnSearchViewCollapsedEventListener mSearchViewCollapsedEventListener;
OnSearchViewExpandedEventListener mOnSearchViewExpandedEventListener;
public MySearchView(Context context) {
super(context);
}
@Override
public void onActionViewCollapsed() {
if (mSearchViewCollapsedEventListener != null)
mSearchViewCollapsedEventListener.onSearchViewCollapsed();
super.onActionViewCollapsed();
}
@Override
public void onActionViewExpanded() {
if (mOnSearchViewExpandedEventListener != null)
mOnSearchViewExpandedEventListener.onSearchViewExpanded();
super.onActionViewExpanded();
}
public interface OnSearchViewCollapsedEventListener {
public void onSearchViewCollapsed();
}
public interface OnSearchViewExpandedEventListener {
public void onSearchViewExpanded();
}
public void setOnSearchViewCollapsedEventListener(OnSearchViewCollapsedEventListener eventListener) {
mSearchViewCollapsedEventListener = eventListener;
}
public void setOnSearchViewExpandedEventListener(OnSearchViewExpandedEventListener eventListener) {
mOnSearchViewExpandedEventListener = eventListener;
}
}
标签:android,list,listview,searchview 来源: https://codeday.me/bug/20190825/1713642.html