【问题标题】:How to filter listview如何过滤列表视图
【发布时间】:2013-09-24 05:04:47
【问题描述】:

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

【问题讨论】:

    标签: android search android-listview filter


    【解决方案1】:

    你读过this的话题吗?

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

    长话短说:

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

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

    【讨论】:

    • 谢谢我已经阅读了你提到的话题。 getFilter 不适用于 Hashmap。我想我必须更改整个代码才能使用 ArrayAdapter。
    猜你喜欢
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    相关资源
    最近更新 更多