问题描述
搜索视图位于回收视图内,但无法正常工作。 RecyclerView 搜索过滤器不起作用:
public class searchAdapter extends RecyclerView.Adapter<searchAdapter.SearchViewHolder> implements
Filterable {
Context context;
ArrayList<String> data=new ArrayList<>();
ArrayList<String> fulldata=new ArrayList<>();
public searchAdapter(Context context,ArrayList<String> data) {
this.context = context;
this.data = data;
this.fulldata=new ArrayList<>(data);
}
@NonNull
@Override
public SearchViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
View
view=LayoutInflater.from(parent.getContext()).inflate(R.layout.recycledata,parent,false);
return new SearchViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull SearchViewHolder holder,int position) {
holder.textView.setText(data.get(position));
}
@Override
public int getItemCount() {
return data.size();
}
@Override
public Filter getFilter() {
return filter;
}
Filter filter=new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
ArrayList<String> filterlist=new ArrayList<>(data);
if (constraint.toString().toLowerCase().isEmpty()){
filterlist.addAll(fulldata);
}else{
for (String movie:fulldata){
if (movie.toLowerCase().contains(constraint.toString().toLowerCase())){
filterlist.add(movie);
}
}
}
FilterResults results=new FilterResults();
results.values=filterlist;
return results;
}
@Override
protected void publishResults(CharSequence constraint,FilterResults results) {
data.clear();
data.addAll((Collection<? extends String>) results.values);
notifyDataSetChanged();
}};
class SearchViewHolder extends RecyclerView.ViewHolder{
TextView textView;
public SearchViewHolder(@NonNull View itemView) {
super(itemView);
textView=itemView.findViewById(R.id.textview);
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)