【问题标题】:live searching on the actionbar's searchView在操作栏的 searchView 上进行实时搜索
【发布时间】:2015-03-11 13:15:59
【问题描述】:

我想知道我们如何在操作栏上的搜索视图小部件下方实现/创建一个列表视图。最后在输入字符串时过滤列表,就像 Google Play 商店中的那样。

【问题讨论】:

    标签: android filtering searchview


    【解决方案1】:
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
        searchView.setIconifiedByDefault(true);   
    
        SearchView.OnQueryTextListener textChangeListener = new SearchView.OnQueryTextListener() 
        {
            @Override
            public boolean onQueryTextChange(String cs) 
            {
                YourActivity.this.adapter.getFilter().filter(cs);
                YourActivity.this.adapter.setTextToFilter(cs);
                return false;
            }
    
            @Override
            public boolean onQueryTextSubmit(String query) 
            {
                YourActivity.this.adapter.getFilter().filter(query);
                YourActivity.this.adapter.setTextToFilter(query);
                return false;
            }
        };
        searchView.setOnQueryTextListener(textChangeListener);
    

    将此代码放在活动中的 oncreateOptionMenu 中

    它只能使用 arrayadapter 工作

    【讨论】:

    • 谢谢大家,但我想知道你们是如何在没有列表视图的情况下实现适配器的。如果有一个 listView 你是如何将它实现在操作栏下方的
    • @I'amNaolKebede 看看下面我的 cmets
    【解决方案2】:

    当您configure a SearchView 时,您调用setSearchableInfo()。根据Adding Custom Suggestions 培训,这涉及添加一行,例如

    android:searchSuggestAuthority="com.example.MyCustomSuggestionProvider"
    

    到您的searchable.xml。然后你必须实现一个可以处理传入搜索查询的ContentProvider

    【讨论】:

    • 其实还有一个更简单的方法:OnQueryTextListener
    • @pskink - 如果您知道将OnQueryTextListener 绑定到 SearchView 的建议下拉列表的方法,请务必写下答案。但是,您会发现内置 SearchView 没有一种机制来提供基于正确创建的 ContentProvider 的结果之外的任何内容的下拉建议。
    • 我看到 OP 不想要一个下拉列表,而是想要一个单独的可过滤 ListView,即使他想要一个下拉列表,您也可以使用 setSuggestionsAdapter(CursorAdapter 适配器)或者我错过了什么?
    • @pskink - 他提到了 Play 商店,它的搜索下方没有 ListView(而是使用下拉菜单)。 CursorAdapter 需要以该自定义建议培训中列出的确切格式返回 Cursor - 期待您在没有支持 ContentProvider 的情况下实现过滤的答案
    • 我对你的评论有点迷茫,所以你同意你可以使用你自己的 CursorAdapter 而不实现 ContentProvider 并且不声明 searchable.xml?
    猜你喜欢
    • 2015-10-05
    • 2014-03-02
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    相关资源
    最近更新 更多