触摸事件后重绘 RecyclerView

Redraw RecyclerView After A Touch Event

我有一个 RecycleView,它显示了一堆列表,其中一个项目通过显示其背景颜色蓝色 selected,现在我希望用户 select 列表中的任何项目及其颜色变成蓝色如何在 RecyclerView.Adapter 或任何其他逻辑

中实现这个
    public class ToggleAdapter extends RecyclerView.Adapter<ToggleAdapter.ToggleViewHolder>{

    private ArrayList<ToggleParams> dataList=new ArrayList<>();
    private Context context;
    private static int selection;

    public ToggleAdapter(ArrayList<ToggleParams> dataList, Context context,int selection) {
        setData(dataList,context,selection);
    }



    @Override
    public ToggleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.card_view_row,parent,false);

        ToggleViewHolder toggleViewHolder=new ToggleViewHolder(v);
        return toggleViewHolder;
    }

    @Override
    public void onBindViewHolder(ToggleViewHolder holder, int position) {
        if(position==selection){
            holder.selected_item.setBackgroundColor(context.getResources().getColor(R.color.blue));
            holder.text_view.setTextColor(context.getResources().getColor(android.R.color.white));
        }
        holder.image_view.setImageDrawable(context.getResources().getDrawable(dataList.get(position).getIMAGE_ID()));
        holder.text_view.setText(dataList.get(position).getTOGGLE_TEXT());

    }

    private void setData(ArrayList<ToggleParams> dataList, Context context,int selection) {
        this.dataList = dataList;
        this.context = context;
        this.selection = selection;
    }

    @Override
    public int getItemCount() {
        return dataList.size();
    }

    public  static class ToggleViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

        public LinearLayout selected_item;
        public ImageView image_view;
        public TextView text_view;

        public ToggleViewHolder(View itemView) {
            super(itemView);

            selected_item= (LinearLayout) itemView.findViewById(R.id.selected_item);
            selected_item.setOnClickListener(this);
            image_view= (ImageView) itemView.findViewById(R.id.imageView);
            text_view= (TextView) itemView.findViewById(R.id.textView);
        }


        public void onClick(View v) {
            selection=getPosition();
            //After getting this position I want that this item list in recyclerview to change its background color but how to call notifyDataSetChange() here something equivalent to that  
        }
    }
}

您可以在 onBindViewHolder 中使用 setOnCLickListener 并可以在那里调用 notifyDatasetChanged 或者更好的方法是定义一个接口,当单击 itemView 时调用该接口并实例化它在适配器中。例如看下面的回答 Why doesn't RecyclerView have onItemClickListener()? And how RecyclerView is different from Listview?