繁体   English   中英

android:在自定义listview中搜索

[英]android : search in custom 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;
        }
}

然后我以这种方式填充列表视图:

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

        }


}

上面的代码可以正常工作,现在我想为列表视图添加搜索功能,该怎么做?

您可以使用Filter类,该类将使用edittext addTextChangedListener过滤列表视图内的每个数据。

 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的类。

有很好的例子在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM