Когда я нажимаю на один из них, ставится несколько флажков

#java #checkbox #android-recyclerview #android-checkbox

Вопрос:

Я использую представление recycler для отображения данных из моей базы данных, но у меня проблема, когда я нажимаю, например, на второй элемент, он выбирается, но также одновременно выбираются 12 и 22 элемента, я понятия не имею, почему это работает таким образом, особенно я писал очень похожий адаптер раньше и у меня нет этой проблемы. Может быть, есть какие-то параметры для флажков, чтобы предотвратить эту ситуацию, но я их не нашел. Код для моего класса адаптера:

 package com.example.ofiicial.WORKOUT;  import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.ImageView; import android.widget.TextView;  import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView;  import com.example.ofiicial.EXERCISES.Exercises; import com.example.ofiicial.R;  import java.util.ArrayList;  public class ExercisesInAddExerciseToWorkoutRecViewAdapter extends RecyclerView.Adapterlt;ExercisesInAddExerciseToWorkoutRecViewAdapter.ViewHoldergt; {  public ExercisesInAddExerciseToWorkoutRecViewAdapter(){}   private ArrayListlt;Exercisesgt; exercises = new ArrayListlt;gt;();  public static ArrayListlt;Integergt; exerciseIDtoAdd = new ArrayListlt;gt;();   @NonNull  @Override  public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)  {  View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.exercises_in_add_exercise_to_workout_list, parent, false);  ExercisesInAddExerciseToWorkoutRecViewAdapter.ViewHolder vHolder = new ExercisesInAddExerciseToWorkoutRecViewAdapter.ViewHolder(view);  return vHolder;  }   @Override  public void onBindViewHolder(@NonNull ViewHolder holder, int position)  {  holder.exerciseName.setText(exercises.get(position).getExercise_name());  holder.exerciseType.setText(exercises.get(position).getExercise_type());   //Adding exercises to list when state of the checkbox changes  holder.exerciseCheckbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()  {  @Override  public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)  {  if(isChecked)  {  exerciseIDtoAdd.add(exercises.get(position).getID());  }  else  {  exerciseIDtoAdd.remove(exercises.get(position).getID());  }  }  });  }   @Override  public int getItemCount()  {  return exercises.size();  }   public void setExercises(ArrayListlt;Exercisesgt; exercises)  {  this.exercises = exercises;  notifyDataSetChanged();  }   public class ViewHolder extends RecyclerView.ViewHolder  {  private TextView exerciseName, exerciseType;  private ImageView exerciseImg;  private CheckBox exerciseCheckbox;   public ViewHolder(@NonNull View itemView)  {  super(itemView);  exerciseName = itemView.findViewById(R.id.exercise_in_add_exercise_to_workout_name);  exerciseType = itemView.findViewById(R.id.exercise_in_add_exercise_to_workout_type);  exerciseImg = itemView.findViewById(R.id.exercise_in_add_exercise_to_workout_image);  exerciseCheckbox = itemView.findViewById(R.id.exercise_add_to_workout_checkBox);  }  } }   

Я надеюсь, что это вся необходимая информация, которая поможет решить мою проблему