Il y a des réponses à ces questions mais aucune d'entre elles n'a résolu mon problème. Voici mon code.Comment sélectionner une seule case à cocher dans une vue recycleur avec plusieurs cases à cocher
public class QuizAdapter extends RecyclerView.Adapter<QuizAdapter.MyViewHolder> {
Context context;
private List<Quiz_G_S> quiz_g_sList = null;
int selectedPosition = -1;
public QuizAdapter(Context context, List<Quiz_G_S> list) {
this.context = context;
this.quiz_g_sList = list;
}
@Override
public QuizAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.quiz_single_row, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(final QuizAdapter.MyViewHolder holder, int position) {
final int pos = position;
holder.answers.setText(quiz_g_sList.get(pos).getMCQ());
holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
quiz_g_sList.get(pos).setChecked(true);
}
});
if (quiz_g_sList.get(pos).isChecked()) {
holder.checkBox.setChecked(true);
notifyDataSetChanged();
} else {
holder.checkBox.setChecked(false);
}
}
@Override
public int getItemCount() {
return quiz_g_sList.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView answers;
CheckBox checkBox;
public MyViewHolder(View v) {
super(v);
answers = (TextView) v.findViewById(R.id.quiz_adap_ans);
checkBox = (CheckBox) v.findViewById(R.id.quiz_adap_check);
}
}
Ci-dessus est mon code adaptateur.
Ceci est ma Quiz_G_S classe
public class Quiz_G_S {
String MCQ;
int Rank;
boolean checked;
public boolean isChecked() {
return checked;
}
public void setChecked(boolean checked) {
this.checked = checked;
}
public String getMCQ() {
return MCQ;
}
public void setMCQ(String mcq) {
this.MCQ = mcq;
}
public int getRank() {
return Rank;
}
public void setRank(int rank) {
this.Rank = rank;
}
}
Ce que je veux faire est de savoir si je vérifie une case à cocher, puis toutes les cases tournerai sans contrôle, sauf celui que je vérifié Il y a une erreur sur notifyDataSetChanged . Je suppose que la logique est juste, mais je ne sais pas comment rafraîchir case à cocher state.The seule chose que je sais est notifyDataSetChanged est-il une autre méthode pour rafraîchir ou est-il une solution à ce problème
mais comment vais-je rafraîchir l'état des cases à cocher? –
S'il vous plaît voir mon édition – YoLo
ce qui est setChecked (true) dans quiz_g_sList.get (pos) .setChecked (true) ;. Est-ce une méthode que je dois créer? –