在我的应用程序中,我创建了一个适配器列表,我想使用过滤器,以便可以根据EditText中输入的文本过滤列表。我正在使用ArrayAdapter。我还在主活动中实现了addTextChangedListener()。现在它在追加后进行过滤, 但它不起作用,因为我希望它起作用。
例如:
我的数组字符串中有3个字符串,名为:treesNumbers []
* 2080
0506582039
0506582038
我的ArrayAdapter获取treesNumbers数组:
adapter = new ArrayAdapter<String> (getActivity(),R.layout.list_item_search,R.id.tree_name, treesNumbers);
如果我将输入字符*它将执行过滤器但在过滤器后返回
* 2080
0506582039
0506582038
我希望它能回归: * 2080
并且只有在我输入字符2之后它才会在过滤后返回 * 2080
如果我输入字符6,它将在过滤后返回 * 2080 只有我输入任何我会得到的角色: &#34; &#34;
我该怎么做才能解决这个问题?
Activity类的代码:
number.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
// When user changed the Text
if( treesNumbers != null) {
if (adapter == null) {
adapter = new ArrayAdapter<String>(getActivity(), R.layout.list_item_search, R.id.tree_name, treesNumbers);
}
adapter.getFilter().filter(cs);
adapter.notifyDataSetChanged();
filteredData = new ArrayList<>();
for (int i = 0; i < adapter.getCount(); i++)
filteredData.add(adapter.getItem(i));
countSearch.setText(String.valueOf(adapter.getCount()));
if (adapter.getCount() > 0){
inputSearch.setText(adapter.getItem(0));
linearLayoutSearch.setVisibility(View.VISIBLE);}
else {
inputSearch.setText("");
linearLayoutSearch.setVisibility(View.GONE);
}}
提前致谢。
编辑:
我尝试使用带有过滤器Android的自定义Listview适配器 它不起作用,它仍然完全是我所描述的。再次 - 我可以做过滤,但结果仍然如上所述