使用联系人姓名和号码的搜索过滤器
我想创建一个搜索过滤器,它可以从我的来自mySQL的联系人列表中搜索名称或号码。使用联系人姓名和号码的搜索过滤器
我已经准备一个适配器,其中我通过接触在数组列表:
if (books.size() > 1) {
for (int i = 0; i < books.size(); i++) {
if (i != (books.size() - 1)) {
if (!books.get(i).get("contact_name").toString().equals(books.get(i + 1).get("contact_name").toString())) {
UniqueBooks.add(books.get(i));
}
} else {
UniqueBooks.add(books.get(i));
}
}
} else {
UniqueBooks = books;
}
Books = UniqueBooks;
mStringFilterList = UniqueBooks;
和用于过滤联系人,我已经做了哪些搜索按名称接触。
private class ValueFilter extends Filter {
//Invoked in a worker thread to filter the data according to the constraint.
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
if (constraint != null && constraint.length() > 0) {
ArrayList> filterList = new ArrayList>();
for (int i = 0; i < mStringFilterList.size(); i++) {
String contactNo = (String) mStringFilterList.get(i).get("contact_name");
contactNo = contactNo.toLowerCase();
constraint = (CharSequence) constraint.toString().toLowerCase();
//System.out.println("contactNo "+contactNo+ " char "+constraint);
if (contactNo.contains(constraint)) {
filterList.add(mStringFilterList.get(i));
}
}
results.count = filterList.size();
results.values = filterList;
} else {
results.count = mStringFilterList.size();
results.values = mStringFilterList;
}
return results;
}
有没有办法按姓名和号码过滤联系人?
您可以将contact_name,contact_no或任何其他查询作为query
传入。 覆盖可能会失败,因此您可以将其作为一项功能。
如果你想通过筛选姓名和电话号码联系在一起,那么你只需要两次调用函数,如:
valuefilter.filter_result = valuefilter.performFiltering("constraint", "contact_name");
valuefilter.filter_result = valuefilter.performFiltering("constraint", "contact_no");
我不能告诉你如何得到mStringFilterList
。从我对上述代码的最好理解中,可以最小化更改代码结构。
FilterResults performFiltering(CharSequence constraint, String query) {
//...
for (int i = 0; i < mStringFilterList.size(); i++) {
String contactNo = (String) mStringFilterList.get(i).get(query);
//...
}
//...
return results;
}
@Roy谢谢,它是为我的BaseAdapter工作,但对于Recycler查看它不工作。你有任何想法使它在Recycler视图上工作吗? – Himadri
请使用您的Recyclerview代码发布一个新问题,并将我链接到此处。我有一种感觉,这将是一个不同的问题。 –
是的,如果(contactNo.contains(约束))到如果(contactNo.contains(约束)||(contactName.contains(约束)),希望这有助于 – Nisarg
你为什么不执行更改此行在内容提供具体的方法做工作,为您和给定的选择arguements查询数据库? –
是mStringFilterList静态? –