Comment mettre en œuvre la multi-sélection dans RecyclerView?
ListView a eu plusieurs choix de mode, que dois-je utiliser pour la mise en œuvre de la même aide de la RecyclerView? Comment gérer onItemCheckedStateChanged?
J'ai vérifié cette,
Mais je ne pouvais pas faire beaucoup de cela. Un fragment de code ou un exemple de mise en oeuvre du projet ce serait la même grande. Merci à l'avance.
- Trouver la réponse à votre question. enoent.fr/blog/2015/01/18/recyclerview-basics
- Im essayant de fragments. Mon Activité s'étend
AppCompatActivity
. Je suis coincé avecactionMode = getActivity().startActionMode(actionModeCallback);
mentionné dans le lien donné ci-dessus. - Le remplacer par getActivity().startActionMode(yourFragmentName.c');
- Je l'ai eu. Cherché un peu et trouvé stackoverflow.com/questions/18204386/...
- grand, upvote si u pense que les commentaires ont été utiles. Heureux de codage.
- même après initialisation de la
actionMode = getActivity().startActionMode(actionModeCallback);
toujours coincé avec NullPointerException - Avez-vous ou de ne pas trouver une solution? avez-vous utilisé ce getActivity().startActionMode(yourFragmentName.c'); si u n'a , encore en train de nullPointerException ?
- Aussi a u obtenir une réponse à partir du lien que vous avez posté stackoverflow.com/questions/18204386/...
- si vous avez vu le code dans le lien que tu as mentionné plus haut il s'agit d'une méthode
toggleSelection(position)
qui utilise ceactionMode
. Cette méthode aactionMethod.finish()
c'est en jetant un NPE.
Vous devez vous connecter pour publier un commentaire.
Je sais que c'est un peu tard pour répondre à cette question. Et je ne sais pas si elle répond aux exigences de l'OP ou pas. Mais cela peut aider quelqu'un. J'ai mis en place ce multi-sélectionnez RectyclerView avec un truc simple. Voici mon code.
activity_main.xml
item_row.xml
Dans
item_row.xml
android:clickable="true"
est important.MainActivity.java
Model.java
RecyclerViewAdapter.java
Comment ça fonctionne?
onBindViewHolder()
méthode lie les données de liste de tableaux d'Affichage des objets. Donc, à l'heure de liaison de données à la vue, il devient l'unique objet de ArrayList qui estModel model = mModelList.get(position);
à la position actuelle. Maintenant, nous devons vérifier si cet objet est sélectionné ou non. Comme ça,qui renvoie
true
oufalse
. Si l'objet est déjà sélectionné, nous avons besoin de changer la couleur de fond derow_item
sélectionné. Pour cela, voici le codeSi il est sélectionné changer la couleur d'arrière-plan à
cyan
d'autrewhite
.Pour la sélection, nous avons besoin d'utiliser
setOnClickListener()
méthode. (ici, je suis, utilisez uniquement unTextView
. Donc, je suis à l'exécution d'un événement de clic surTextView
). Iciholder.view
, l'ensemble de l'uniqueitem_row
. Onclick basculer les valeurs booléennes àtrue
oufalse
.Dans votre Activité ou Fragment qui est de l'hébergement RecyclerView, vous pouvez obtenir les objets sélectionnés/articles comme ce
Voici la sortie
Edit 1: Restreindre l'utilisateur à sélectionner un seul élément.
J'espère que ce sera utile.
List<SomeModelClass>
à l'intérieur de l'Adaptateur mais je ne sais pas si c'est faisable ou pas?. Et ce que vous êtes confronté à une difficulté dans l'évolution de la structure du modèle actuel de la classe?Création de ceux mentionnés personnalisé multi sélectionner travaux de mise en œuvre correcte mais pourrait avoir des problèmes de performances lorsque le jeu de données est énorme. Je vous recommande vivement de lire la section "Création de Recycler Vue de permettre à la liste de la sélection de l'élément" documentation par google. J'ai énuméré le lien
Android de la Documentation pour la création de recycler afficher un élément, cliquez sur activer
Sans créer de modèle de classe, nous pouvons multi sélectionner un élément dans le recyclerview. utilisez ce code dans recyclerview adaptateur
Simple et court chemin pour le faire: