嘿伙计们,搜索我的对象列表的最佳方法是什么,它们返回一些字符串,例如姓氏和名字。
这是我目前的搜索方式,但我的搜索需要匹配我不想要的整个字符串。搜索需要它匹配字符串的一部分,例如我们手机上的联系人列表并忽略大小写。
if (searchQ.equalsIgnoreCase(child.first_name)) {
addChildToList(child);
}
我试过包含并开始,例如,他们没有工作。这是怎么回事?
谢谢!干杯!
您可以使用 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() 回调函数中,您可以将插入的字符作为参数 s 发送到您的适配器,以使用 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());
}