如何从listview过滤器中删除弹出文本?

时间:2011-11-03 17:13:52

标签: android android-listview

我在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

2 个答案:

答案 0 :(得分:8)

我在这里找到答案: http://markmail.org/message/7uju6bmmaswag2lu

  

通过调用setTextFilterEnabled(),您可以请求此弹出窗口。如果你   不想要它,禁用文本过滤。这是一个互动功能   为用户。它并不意味着以编程方式使用。如果你想   以编程方式过滤你的适配器,调用你的getFilter()   直接适配器(如果您的适配器支持过滤。)

     

Romain Guy

因此,您需要直接使用过滤器,而不是使用setTextFilterEnabled:

CustomAdapter customAdapter = (customAdapter)myListView.getAdapter();
Filter filter = customAdapter .getFilter();
filter.filter("search string");

答案 1 :(得分: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;
        }