嘿伙计们搜索我的对象列表的最佳方式是什么,他们会返回一些字符串,姓氏和名字等。
这里我当前正在搜索,但我的搜索需要匹配我不想要的整个字符串。搜索需要它匹配部分字符串,如我们手机上的联系人列表,并忽略大小写。
if (searchQ.equalsIgnoreCase(child.first_name)) {
addChildToList(child);
}
我试过包含并从例如开始,它们不起作用。怎么回事?
谢谢!干杯!
答案 0 :(得分:1)
您可以使用TextWatcher搜索列表,例如以这种方式为EditText(搜索框)定义TextWatcher:
TextWatcher filterTextWatcher = new TextWatcher() { //TextWatcher to Filter RealTime Input Data
public void beforeTextChanged(CharSequence s, int start, int count,int after)
{
}
public void onTextChanged(CharSequence s,int start, int before,int count) //Filter Data When Entering Data On ItemType Dialog TextView
{
}
@Override
public void afterTextChanged(Editable arg0)
{
}
};
EditText filterText = (EditText)dialog.findViewById(R.id.edtItemFilter);
filterText.addTextChangedListener(filterTextWatcher);
然后在onTextChange()回调函数中,您可以将插入的字符作为参数发送到适配器,以使用getFilter过滤List或使用过滤的Cursor设置列表:
public void onTextChanged(CharSequence s,int start, int before,int count)
{
ListView lv = getListView();
ListAdapter adapter = (ListAdapter) lv.getAdapter();
lv.setTextFilterEnabled(true);
adapter.getFilter().filter(s.toString());
}