0

我知道这不是一个新问题,并且已经有很多类似的问题,但我的问题有点不同。我正在尝试在 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 中添加一些代码。我不知道什么代码......任何帮助都非常感谢。

4

1 回答 1

0

你读过这个话题吗?

它很好地解释了如何将搜索功能应用于您的 ListView。

长话短说:

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

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

于 2013-09-23T21:04:47.113 回答