如何从listview筛选器中移除弹出文本?

7

我正在ListView上使用文本过滤器,并且希望摆脱显示过滤文本的弹出视图。有没有办法删除这个视图?

以下是一些示例代码:

    ArrayList<String> buildingNames = new ArrayList<String>();
    ListView list = (ListView)findViewById(R.id.list);

    list.setAdapter(new ArrayAdapter<String>(this, R.layout.menu_item, buildingNames));
    list.setTextFilterEnabled(true);

    list.setFilterText("test_filter");

当我设置过滤文本时,ListView底部会弹出一个非常丑陋的视图,显示当前的过滤文本:

ListView filter text popup


请提供一些示例源代码,以便隔离您所面临的问题。 - pkk
2个回答

8
我在这里找到了答案:http://markmail.org/message/7uju6bmmaswag2lu:
通过调用setTextFilterEnabled(),您请求此弹出窗口。如果您不想要它,请禁用文本过滤。 这是用户的交互功能。 它不应该以编程方式使用。 如果要在程序上过滤您的适配器,请直接在适配器上调用getFilter()(如果适配器支持过滤)。
因此,您需要直接使用过滤器来代替使用setTextFilterEnabled,操作如下:
CustomAdapter customAdapter = (customAdapter)myListView.getAdapter();
Filter filter = customAdapter .getFilter();
filter.filter("search string");

0
尝试进行这个更改。
@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;
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接