机器人 : search in custom listview

标签 android listview

我想用自定义数据填充我的 ListView ,所以我创建了这个扩展 BaseAdapter 的类:

public class PersonAdapter extends BaseAdapter{

        List<Person> persons= getDataforListViewList();
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return persons.size();
        }

        @Override
        public Object getItem(int arg0) {
            // TODO Auto-generated method stub
            return persons.get(arg0);
        }

        @Override
        public long getItemId(int arg0) {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public View getView(int arg0, View arg1, ViewGroup arg2) {
             if(arg1==null)
             {
                 LayoutInflater inflater = (LayoutInflater) MainActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                 arg1 = inflater.inflate(R.layout.listitem, arg2,false);
             }

             TextView Name = (TextView)arg1.findViewById(R.id.txtName);
             TextView PhoneNumber = (TextView)arg1.findViewById(R.id.txtPhone);

             Person person = persons.get(arg0);

             Name.setText(person.name);
             PhoneNumber.setText(person.phoneNumber);

             return arg1;
        }
}

然后我以这种方式填充我的 ListView :

PersonAdapter pe;
@Override
protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            pe=new PersonAdapter();
            ListView personListView = (ListView)findViewById(R.id.listView1);
            personListView.setAdapter(pe);          
            EditText inputSearch=(EditText) findViewById(R.id.inputSearch);
                    txtEditText.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
            // TODO Auto-generated method stub

        }


}

上面的代码工作正常,现在我想为我的 ListView 添加搜索功能,我该怎么做?

最佳答案

您可以使用 Filter 类,该类将使用编辑文本 addTextChangedListener 过滤 ListView 中的每个数据..

 myFilter.addTextChangedListener(new TextWatcher() {

  public void afterTextChanged(Editable s) {
  }

  public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  }

  public void onTextChanged(CharSequence s, int start, int before, int count) {
   dataAdapter.getFilter().filter(s.toString());
  }
  });

您需要创建一个扩展 Filter 的类。

有很好的例子here

关于机器人 : search in custom listview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23718844/

相关文章:

javascript - 如何一次开发实现网站、Android应用程序和Iphone应用程序?

android - Android Google Api 在中国是否可用以及如何测试我的应用程序?

android - 改造和 reddit api 问题

android - 如何在android中的 fragment 中显示带有图像的 ListView

Android:列表元素,固定布局

.net - ASP.NET GridView 与 ListView

android - 在 Android 中加载所有语言

android - 在 android 4 ssl 上改造 + okhttp

android - ListView 项目位置切换并在滚动时干扰

c++ - 从我的应用程序的 ListView 拖放到外部应用程序(例如 Windows 资源管理器)