有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java搜索视图回收器视图搜索过滤器在安卓中无法正常工作

搜索视图位于回收视图中,但工作不正常。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);
        }
    }
}

共 (0) 个答案