将TextWatcher与自定义适配器连接以通过EditText过滤文本

时间:2015-12-15 15:27:56

标签: java android listview android-edittext

我是Android开发的新手,我已经在一个关于自定义ListView的网站上的示例的帮助下编写了一些代码,现在我想附加一个ListView EditText过滤文本并在ListView中仅显示我写的内容。

目前,当我输入任何内容时ListView变为空白且没有显示任何内容,但当我删除输入时,ListView会恢复原始项目。

这是我的适配器类:

public class EntryAdapter extends ArrayAdapter<Item> {

     private Context context;
     private ArrayList<Item> items;
     private LayoutInflater vi;
     public Context conx;

     public EntryAdapter(Context context, ArrayList<Item> items) {
          super(context,0, items);
          this.context = context;
          this.items = items;
          vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     }

这是我为main-class

插入的数据
  items.add(new SectionItem("letters"));
  items.add(new EntryItem("a","subtitle","image"));
  items.add(new EntryItem("b","subtitle","image"));

这是我的textWatcher,这是我创建的一个简单的:

inputSearch = (EditText) findViewById(R.id.inputSearch);
inputSearch.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
        // When user changed the Text
        StartClass.this.adapter.getFilter().filter(cs);
    }

    @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
    }
});

此处应用adapter并设置listview

EntryAdapter adapter = new EntryAdapter(this, items);
x = adapter;
  listview.setAdapter(adapter);

有人能告诉我我做错了什么吗?我曾尝试过观看几个教程,但没有一个能够向我展示如何实现它,我实现了它但它不起作用。任何想法,我可能会失踪..?

0 个答案:

没有答案