我遇到了问题:listView
中有Fragment
,我实施了searchView(actionView),使用searchView listView
过滤onQueryTextChange
中的列表事件。我在这部分没有问题,一切正常。
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
无效)还原初始列表项,我怎么能得到这个事件?或者以任何方式恢复删除适配器过滤器的初始列表项...
历史:
非常感谢!
答案 0 :(得分:6)
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;
}
}