Android SearchView - 空查询不起作用

标签 android searchview

我正在尝试将最近的搜索添加到工具栏上的 SearchView:

 mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
    @Override
    public boolean onQueryTextSubmit(String s) {
        return false;
    }

    @Override
    public boolean onQueryTextChange(String s) {
        if (s!= null )
        {
            if (s.isEmpty()){
                loadRecentList();
            }
            else{
                search(s);
            }
        }
        return true;
    }

});

搜索工作正常,但我看不到最近的列表结果。

我找到了这个 Android SearchView.OnQueryTextListener OnQueryTextSubmit not fired on empty query string

但修改 ActionBar 库并不是一个好的解决方案。

有人有其他解决方案吗? 谢谢。

编辑:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_main_activity, menu);
    searchItem = menu.findItem(R.id.btn_earch);
    initSearchView();
    setSearchViewListener();
    return super.onCreateOptionsMenu(menu);
}



 protected void initSearchView() {
    final String CURSOR_RESOURCE_ID = "mCursorDrawableRes";
    final int THRESHOLD = 1;

    mSearchView = (SearchView) searchItem.getActionView();

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    mSearchView.setMeasureWithLargestChildEnabled(true);

    autoCompleteTextView = (AutoCompleteTextView) mSearchView.findViewById(R.id.search_src_text);
    autoCompleteTextView.setThreshold(THRESHOLD);


}

protected void setSearchViewListener() {



    mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String s) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String s) {
            if (s!= null )
            {
                if (s.isEmpty()){
                    loadRecentList();
                }
                else{
                    search(s);
                }
            }
            return true;
        }

    });

btn_search 项目:

<item
    android:id="@+id/btn_search"
    android:icon="@drawable/ic_search_small"
    android:title="@string/tooltip_search"
    app:actionViewClass="android.support.v7.widget.SearchView"
    app:showAsAction="always"
    />

最佳答案

我用这样的方法解决

 searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            Log.i("MyApp", searchView.getQuery().toString());
            consultarListaParadas(searchView.getQuery().toString());
            getActivity().runOnUiThread(new Runnable() {
                public void run() {
                    adaptadorListaParadasBus.setListaParadas(listaParadas);
                    adaptadorListaParadasBus.notifyDataSetChanged();
                }
            });

            return true;
        }

        @Override
        public boolean onQueryTextChange(String newText) {

            if(newText.equals("")){
                this.onQueryTextSubmit("");
            }
            return true;
        }
    });

唯一的问题是它会在您不按搜索按钮的情况下抛出。

关于Android SearchView - 空查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30046201/

相关文章:

java - android searchview setOnActionExpandListener on Honeycomb 3.2

android - SearchView imeOptions 和 onQueryTextSubmit 支持

java - 我怎样才能点击屏幕上的任意位置

android - 如何将 native 库加载到 native android 代码中? (安卓工作室)

android - 窗口 > AVD 管理器在我的 Eclipse 中不存在

android - 带有搜索 View 的操作栏。反向兼容问题

javascript - 为什么在Android中旋转屏幕时setIntervals不能被杀死?

java - SimpleDateFormat 在 android 5.1.1 中不起作用吗?

android - 在 android 中使用 google map api 菜单的可搜索自动完成

android - SearchView 因通货膨胀错误而崩溃 (androidx) - 未找到资源异常