RecyclerView select 多项目当用户 select 单项目

RecyclerView select multi item when user select single item

我创建了回收站视图并为其添加了许多元素,如文本视图和图像视图问题是当用户按下任何一个位置为其添加书签时选择的项目很好但是我发现有另一个项目自动添加了书签什么问题。

这是一个代码

public void onBindViewHolder(final ViewHolder holder, int position) {
  Get_Set_Note movie=moviesList.get(position); 
  holder.title.setText(movie.getTitle()); 
  holder.time.setText(movie.getTime());

  holder.imageView.setOnClickListener(new View.OnClickListener() { 
       @Override public void onClick(View v) { 

       holder.imageView.setImageResource(R.drawable.btn_star_big_on); 
     }
  });
}

https://drive.google.com/file/d/1bg2T3krPedlC6ue_sldk4X8zyW675EzV/view?usp=drivesdk

这是解决问题的方法

您需要向 Get_Set_Note 添加一个布尔值 属性 isFavorite

像这样

Get_Set_Note.java

Boolean isFavorite = false

只需在您的适配器中根据此条件设置您的星形图像

if(movie.isFavorite){
   holder.imageView.setImageResource(R.drawable.btn_star_big_on); 
 }else{
  holder.imageView.setImageResource(R.drawable.btn_star_big_off); 
}

在 Click 侦听器上,您可以设置布尔值 属性 并通知适配器

holder.imageView.setOnClickListener(new View.OnClickListener() { 
       @Override public void onClick(View v) {
         if(movie.isFavorite){ 
              movie.isFavorite = false
         }else{
             movie.isFavorite = true  
         }
          notifyDataSetChanged()
     }
});

最后你的 bindViewHolder 会像这样

public void onBindViewHolder(final ViewHolder holder, int position) {
  Get_Set_Note movie=moviesList.get(position); 
  holder.title.setText(movie.getTitle()); 
  holder.time.setText(movie.getTime());

  if(movie.isFavorite){
    holder.imageView.setImageResource(R.drawable.btn_star_big_on); 
  }else{
    holder.imageView.setImageResource(R.drawable.btn_star_big_off); 
  }

  holder.imageView.setOnClickListener(new View.OnClickListener() { 
       @Override public void onClick(View v) {
         if(movie.isFavorite){ 
              movie.isFavorite = false
         }else{
             movie.isFavorite = true  
         }
          notifyDataSetChanged()
     }
  });
}