当用户选择单个项目时,RecyclerView选择多个项目

时间:2019-05-10 14:49:16

标签: java android recycler-adapter recyclerview-layout

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

这是一个代码

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

1 个答案:

答案 0 :(得分:0)

这是解决问题的方法

您需要向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侦听器上,您可以设置boolean属性并通知适配器

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