实时搜索在 android 列表视图中无法正常工作

Live Search is not working properly in android listview

我正在尝试对我的列表视图执行搜索操作。当我键入列表中不存在的字符或字符串时,我的代码可以完美运行(即它不显示任何内容,因为未找到匹配项)但是,当我输入列表中存在的名称时,无论在什么位置名称存在 我的代码仅显示列表视图中的第一条记录。这是我的搜索操作代码:

 NameListAdapter = new MyAdapter(this,
                    android.R.layout.simple_list_item_1,NameArrayList
                    );
            lvSearch.setAdapter(NameListAdapter);
            editTextSearch.addTextChangedListener(new TextWatcher() {
                @Override
                public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
                    NameListAdapter.getFilter().filter(cs);
                }
                @Override
                public void beforeTextChanged(CharSequence cs, int arg1, int arg2,
                                              int arg3) {
                }
                @Override
                public void afterTextChanged(Editable cs) {
                }
            });

请帮助asap.Thank你

我解决了这个问题,而不是使用系统过滤器,而是使用我自己的过滤器进行搜索。我的代码进行了以下更改:

@Override
                public void onTextChanged(CharSequence cs, int arg1, int arg2,
                                          int arg3) {

                    String text = edSearch.getText().toString();
                    NameListAdapter.filter(text);
                }

并添加了此过滤器方法:

 // Filter method for search
    public void filter(String charText) {
        charText = charText.toLowerCase(Locale.getDefault());
        NameArrayList.clear();
        int j;
        if (charText.length() == 0) {
            NameArrayList.addAll(arrayList);
        }
        else
        {
            NameArrayList.clear();
            for (j=0;j<arrayList.size();j++)
            {

           if(arrayList.get(j).toLowerCase(Locale.getDefault()).contains(charText))
                {
                    NameArrayList.add((arrayList.get(j)));
                }
            }
        }
        notifyDataSetChanged();
    }

我已经做了同样的事情而没有创建这种耗时的过滤方法。 NameListAdapter.getFilter().过滤器(cs);如果 NameArrayList 是 ArrayAdapter 类型,也将有效。

谢谢。