如何在android

时间:2016-04-04 14:50:47

标签: android filter android-arrayadapter

在我的应用程序中,我创建了一个适配器列表,我想使用过滤器,以便可以根据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适配器 它不起作用,它仍然完全是我所描述的。再次 - 我可以做过滤,但结果仍然如上所述

0 个答案:

没有答案