其他分享
首页 > 其他分享> > android – 如何知道ActionView在操作栏中何时关闭?

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