【问题标题】:Android SearchView filtered listview - how to remove query box?Android SearchView 过滤列表视图 - 如何删除查询框?
【发布时间】:2013-05-15 14:50:53
【问题描述】:

我已将 SearchView 添加到过滤 ListView 的 ActionBar。

一切正常,唯一的问题是当我在 SearchView 中编写查询时,查询文本也以大字体出现在屏幕中间的一个框中。

我猜这是某种查询预览。我如何取消它? 我在文档中找不到任何内容。

谢谢。

【问题讨论】:

  • 我以前从未见过。你在什么手机上运行这个?
  • Nexus 4。这是来自 APIDemos 示例的搜索过滤器演示。 (所以不是我的代码)。

标签: android android-listview android-search


【解决方案1】:

尝试改变实现 onQueryTextChange 的方式。我评论 listview.clearTextFilter();并将其更改为 ca.getFilter().filter(null);

这是我使用的代码

        @Override
        public boolean onQueryTextChange(String newText) {
            System.out.println("tap");
            yourAdapter ca = (yourAdapter)listview.getAdapter();

            if (TextUtils.isEmpty(newText)) {
                System.out.println("isEmpty");
                //listview.clearTextFilter();
                ca.getFilter().filter(null);
            } else {

                ca.getFilter().filter(newText);
                //listview.setFilterText(newText);

            }
            return true;
        }

【讨论】:

    【解决方案2】:

    这是ListView 上的文本过滤器(实际上是它的超类AbsListview)。获取ListView 的句柄并调用

        yourListview.setTextFilterEnabled(false);
    

    参见AbsListView.setTextFilterEnabled(boolean)的API文档。

    如果您好奇:他们使用PopupWindow 来显示当前输入的查询文本。

    【讨论】:

    • 这可行,但如果我使用它,那么我无法通过文本归档列表视图。我确实想在没有弹出窗口的情况下进行过滤。
    • @Ran, here 你找到了解决方案。它涉及自己管理适配器的过滤器。
    猜你喜欢
    • 2012-11-14
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 2013-01-17
    相关资源
    最近更新 更多