J'avais le support suivant qui fonctionnait, c'est-à-dire que j'étais capable de cocher/décocher la case. (La case à cocher fait partie de la RecyclerView carte):Comment implémenter l'élément Android Recyclerview, cliquez sur ET l'élément de la case à cocher, cliquez sur?
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.bindData(numbers.get(position));
//in some cases, it will prevent unwanted situations
holder.checkbox.setOnCheckedChangeListener(null);
//if true, your checkbox will be selected, else unselected
holder.checkbox.setChecked(numbers.get(position).isSelected());
holder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
numbers.get(holder.getAdapterPosition()).setSelected(isChecked);
}
});
}
Je voulais mettre en œuvre un clic de l'élément sur RecyclerView. Donc, j'ai pris de cette solution - s'il vous plaît vérifier: https://stackoverflow.com/a/26196831/4013399
Cependant, maintenant, le clic de l'ensemble de l'élément de la carte fonctionne, mais la case ne peut pas être cochée/décochée. Comment résoudre ceci?
Aidez-nous s'il vous plaît. Merci.
Mise à jour
J'ai fait des changements - cependant, "ICI-1,2 et 3" lignes sont jamais entrée.
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
Log.e("I AM ", "HERE-0");
holder.bindData(numbers.get(position));
final RelativeLayout rlyItem = holder.rlyItem;
final CheckBox checkbox = holder.checkbox;
rlyItem.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View view) {
mListener.onItemClicked(holder.getLayoutPosition());
Log.e("I AM ", "HERE-1");
}
});
checkbox.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View view) {
if (((CheckBox) view).isChecked()) {
checkbox.setChecked(false);
Log.e("I AM ", "HERE-2");
} else {
checkbox.setChecked(true);
Log.e("I AM ", "HERE-3");
}
// Inform to Activity or the Fragment where the RecyclerView reside.
mListener.onItemCheckBoxChecked(((CheckBox) view).isChecked(), holder.getLayoutPosition());
}
});
//in some cases, it will prevent unwanted situations
holder.checkbox.setOnCheckedChangeListener(null);
//if true, your checkbox will be selected, else unselected
holder.checkbox.setChecked(numbers.get(position).isSelected());
checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
numbers.get(holder.getAdapterPosition()).setSelected(isChecked);
Log.e("I AM ", "HERE-4");
//Log.e(Integer.toString(holder.getAdapterPosition()), " IS CHECKED");
}
});
}
Vous devez actualiser l'article lorsqu'il est coché. Vous pouvez utiliser 'notifyItemChanged (int position)' dans votre adaptateur –