Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Studio:如何在recyclerview上添加过滤器以及如何实现它_Java_Android - Fatal编程技术网

Java Android Studio:如何在recyclerview上添加过滤器以及如何实现它

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

我想在我的recyclerview上添加过滤器,并将其用于搜索功能。请。帮助我,如果你能让它变得简单。谢谢大家。

第1步实现适配器的可过滤接口并实现其方法

例如:

步骤5:实现所有方法

步骤6:像这样更新适配器

 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;
}