RecyclerView выбрать несколько элементов, когда пользователь выбирает один элемент - PullRequest
0 голосов
/ 10 мая 2019

Я создаю представление рециркулятора и раздуваю его во многих элементах, таких как текстовое представление и представление изображений, проблема в том, что когда пользователь нажимает на одну из позиций, чтобы добавить в закладки выбранный элемент, но обнаружил, что в другом пункте автоматически добавлена ​​закладка, в чем проблема.

Вот код

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 голосов
/ 10 мая 2019

Вот как вы можете решить эту проблему

Вам необходимо добавить к вашему 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()
     }
  });
}
...