如何过滤listview

时间:2013-09-23 17:59:05

标签: android search android-listview filter

我知道这不是一个新问题,已经有很多类似的问题,但我的问题有点不同。我正在尝试在ListView上实现搜索功能。我有一个listview如下:

ListView list;
List<HashMap<String, String>> myDataCollection;

我正在从XML中读取大量数据并从中创建。

BinderMyrData bindingData = new BinderMyData(this,  myDataCollection);    
list = (ListView) findViewById(R.id.list);
// Adding items to listview
inputSearch = (EditText) findViewById(R.id.inputSearch);
list.setAdapter(bindingData);
/*** Enabling Search Filter * */
inputSearch.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2,
                    int arg3) {
                // When user changed the Text
                    //Some code to be added no clue..
                }

                @Override
                public void beforeTextChanged(CharSequence arg0, int arg1,
                        int arg2, int arg3) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void afterTextChanged(Editable arg0) {
                    // TODO Auto-generated method stub
                }
            });

我知道我必须在onTextChanged中添加一些代码。我不知道代码是什么......非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您是否阅读了this主题?

它完全解释了如何将搜索功能应用于ListView。

长话短说:

bindingData.getFilter().filter(cs); 方法中添加 onTextChanged()

但是,如果您使用标准ArrayAdapter<E>,那么这是最方便的方法,并且您正在使用某种奇怪的List<HashMap<String, String>> myDataCollection;适配器作为散列映射列表。如果这不起作用,您应该考虑将适配器更改为更友好的适配器,例如ArrayAdapter<E>