Java Android Studio:如何在recyclerview上添加过滤器以及如何实现它
我想在我的recyclerview上添加过滤器,并将其用于搜索功能。请。帮助我,如果你能让它变得简单。谢谢大家。第1步实现适配器的可过滤接口并实现其方法 例如: 步骤5:实现所有方法 步骤6:像这样更新适配器Java Android Studio:如何在recyclerview上添加过滤器以及如何实现它,java,android,Java,Android,我想在我的recyclerview上添加过滤器,并将其用于搜索功能。请。帮助我,如果你能让它变得简单。谢谢大家。第1步实现适配器的可过滤接口并实现其方法 例如: 步骤5:实现所有方法 步骤6:像这样更新适配器 SearchView sv = (SearchView) itemView.findViewById(R.id.search); sv.setVisibility(View.VISIBLE); sv.setQueryHint("Search Here"); sv.setOnQuery
SearchView sv = (SearchView) itemView.findViewById(R.id.search);
sv.setVisibility(View.VISIBLE);
sv.setQueryHint("Search Here");
sv.setOnQueryTextListener(this);
你好只想在我现有的活动中尝试你的代码。我想要一个位于操作栏菜单中的可折叠搜索按钮,在我的recyclerview上进行搜索/筛选。。代码是什么?很抱歉问这个问题。我刚开始使用android和java编写代码,我应该把/键入ValueFilter类放在哪里?我应该创建一个新的java类文件吗?您可以在adapter类Only中找到它请解释contactList和contactListCopy。我需要声明一些类吗?不,这只是我的过滤器的逻辑。你需要有你自己的实现,我投票结束这个问题,因为它是一个零努力的需求转储。
public class MyAdapter extends
RecyclerView.Adapter<MyAdapter.ViewHolder> implements Filterable{
// Other code
}
private class ValueFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
contactList = contactsListCopy;
// Replace with your own logic
if (constraint != null && constraint.length() > 0) {
List<Contacts> filterList = new ArrayList();
for (int i = 0; i < contactList.size(); i++) {
if ((contactList.get(i).getName().toUpperCase())
.contains(constraint.toString().toUpperCase())) {
filterList.add(contactList.get(i));
}
}
contactList = filterList;
results.count = filterList.size();
results.values = filterList;
} else {
results.count = contactsListCopy.size();
results.values = contactsListCopy;
}
return results;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults results) {
contactList = (List<Contacts>) results.values;
notifyDataSetChanged();
}
<android.support.v7.widget.SearchView
android:id="@+id/search"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
SearchView sv = (SearchView) itemView.findViewById(R.id.search);
sv.setVisibility(View.VISIBLE);
sv.setQueryHint("Search Here");
sv.setOnQueryTextListener(this);
@Override
public boolean onQueryTextSubmit(String query) {
mAdapter.getFilter().filter(query);
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
mAdapter.getFilter().filter(newText);
return true;
}