La case à cocher est sélectionnée de manière aléatoire dans Recyclerview lors de l'utilisation de notifyDatasetChange
. Voici mon code. Je ne suis pas capable de comprendre pourquoi la fonction notifyDataSetChanged
ne fonctionne pas correctement.Case à cocher sélectionnée de manière aléatoire dans Recyclerview lors de l'utilisation de notifyDatasetChange
Répondre
Utilisation checkChangeListener au lieu de onClickListener
holder. checkBox.setOnCheckedChangeListener(null);
//if true, your checkbox will be selected, else unselected
holder.checkBox.setChecked(pass the boolean from your list);
holder.checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//set your object's last status
yourarrayobject.setSelected(isChecked);
}
});
_pass le booléen de votre liste_ quelles valeurs Je dois passer –
Une fois que vous cliquez sur la case son état change correctement il doit être stocké dans votre liste pour que la case à cocher reste cochée même si vous rechargez la liste, donc vous devez stocker l'état de la case dans votre liste sera faux pour toutes les cases à cocher) et le transmettra chaque fois que vous chargez la liste pour que la case cochée précédemment reste cochée. – SaravInfern
J'utilise le type de données de liste et qui ont le détail de membre de groupe et la quantité de groupe que je dois partager également dans le membre choisi. Par défaut tout le membre est choisi. Si décochée n'importe quel membre alors ce sera le membre choisi. si possible s'il vous plaît envoyez-moi un lien ou un code –
Votre notifyDataSetChanged()
a besoin pour fonctionner sur l'interface utilisateur de cette discussion. J'avais rencontré des difficultés similaires lorsque l'adaptateur n'était pas correctement mis à jour. Essayez de faire cela dans votre OnClickListener:
@Override
public void onClick(View v) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
notifyDataSetChanged();
}
});
}
Je pense case à cocher sélectionné lorsque vous faites défiler la recyleview, vous pouvez plaire Viewholder concept de, il faut donc ajouter à viewHolder.CheckBox.setChecked(isItemChecked);
onBindViewHolder et il fonctionnera. Vous devrez remplacer isItemChecked avec votre logique de récupération de l'état actuel de l'élément à la position ...
ce qui est isItemChecked –
c'est des valeurs booléennes – Vadivel
Je pense que vous devez utiliser setOnCheckedChangeListener() pour ce pas onClick() –