Java RecyclerView在用户选择单个项目时选择多个项目

Java RecyclerView在用户选择单个项目时选择多个项目,java,android,android-recyclerview,recyclerview-layout,Java,Android,Android Recyclerview,Recyclerview Layout,我创建了recycler视图并对其进行了膨胀,包括文本视图和图像视图。问题是当用户按任意一个位置将其添加到书签时,所选的项目很好,但我发现有另一个项目自动添加了书签,这是什么问题 这是一个密码 public void onBindViewHolder(final ViewHolder holder, int position) { Get_Set_Note movie=moviesList.get(position); holder.title.setText(movie.getTit

我创建了recycler视图并对其进行了膨胀,包括文本视图和图像视图。问题是当用户按任意一个位置将其添加到书签时,所选的项目很好,但我发现有另一个项目自动添加了书签,这是什么问题

这是一个密码

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


以下是您可以解决此问题的方法

您需要将一个布尔属性添加到Get\u Set\u注意:我最喜欢一个布尔属性

像这样

Get_Set_Note.java

只需在适配器中根据此条件设置星形映像即可

if(movie.isFavorite){
   holder.imageView.setImageResource(R.drawable.btn_star_big_on); 
 }else{
  holder.imageView.setImageResource(R.drawable.btn_star_big_off); 
}
单击listener,您可以设置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()
     }
  });
}

创建现场-不要使用外部服务来显示代码。您创建了吗?数据模型中的布尔值?用于填充和填充星形的?public void on BindViewHolder最终视图holder,int position{Get_Set_Note movie=moviesList.getposition;holder.title.setTextmovie.getTitle;holder.time.setTextmovie.getTime;holder.imageView.setonclicklistener新建视图.OnClickListener{@Override public void onClickView v{holder.imageView.setImageResourceR.drawable.btn_star_big_on;};单击任何回收商查看项目将其添加书签时的上方代码。但它会将多个项目添加书签。请将您的问题提供一个演示该问题的示例。谢谢Arbaz PirwaniMy朋友
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()
     }
  });
}