0
votes

Kotlin Open AlertDialog dans recycleurview item Cliquez sur

J'ai recyclerview , je veux ouvrir alertdialog lorsque l'élément de recyclerview est cliqué, j'essaie de suivre le concept de < un href = "https://stackoverflow.com/questions/45438215/androïd-alertdialog-on-RecyClerView-item-Click"> cette question basée sur Java mais cela n'a pas fonctionné pour moi

​​ Mon adaptateur xxx

Configurez le recyccleview xxx

s'il vous plaît Suggestion


0 commentaires

3 Réponses :


0
votes

Vous avez oublié la création () xxx

espère qu'il aide


0 commentaires

1
votes

Tout d'abord, ne mettez jamais votre ONCLICK dans Onbindviewholder. Ce n'est pas une bonne pratique. Deuxièmement, si vous souhaitez effectuer n'importe quel événement de clic sur l'élément, vous pouvez opter pour une interface ou mettre votre élément Cliquez sur l'auditeur dans la classe Viewholder (classe interne) qui étend RecyclERView.Viewholder.

item.setOnClickListenr{
  AlertDialog.Builder(this)
            .setTitle("My Title")
            .setMessage("My Message"))
            .setPositiveButton("Yes") { dialog, which -> todoFunctiononpositiveclick() }
            .setNegativeButton("No") { dialog, which -> dialog.dismiss() }
            .show()
 }


6 commentaires

Merci pour votre suggestion J'ai essayé votre solution mais je ne fonctionne toujours pas, vérifiez la question mise à jour que je supprimez onclick dans Onbindviewholder et mais c'est la classe intérieure


Pouvez-vous expliquer mieux ou relier une référence expliquant la raison pour laquelle la raison pour laquelle n'est-elle pas une bonne pratique de la mettre dans OnBindviewholder? Je trouve beaucoup de références qui font ça et je le fais personnellement moi-même? Merci d'avance


@Shermano je n'ai aucune idée de cela aussi, j'ai besoin de savoir pourquoi n'est-elle pas une bonne pratique pour la mettre dans OnBindviewholder?


Je suis désolé @jimaleabdi, je demandais à @minichrip \


Ici github.com/googlesamples/android-sunflower/blob/master/appr/s rc / ... Quelque partie de l'échantillon Googel, et même dans leur tutoriel, ils ont mentionné l'exécution d'un clic auditeur sur la classe intérieure au lieu de l'onbind


@JIMALE Vérifiez cela aussi Stackoverflow.com/Questtions/33845846/...



2
votes

Votre code fonctionne J'ai vérifié et reproduit le code de votre adaptateur et cela fonctionne, envoyez moi votre présentation XML et votre code d'inticitation que l'adaptateur

mise à jour:

Vous ne pouvez pas envoyer ApplicationContext, vous devez envoyer le contexte de votre activité. Correction de ce VAL Adapter = OperatinderAdapter (Ceci, ArrayList ) Vous ne pouvez pas créer de boîte de dialogue dans une classe d'application car, la boîte de dialogue doit être jointe à une fenêtre, une application n'est pas une classe de l'UI et n'a pas de fenêtre. , donc il ne peut pas montrer la boîte de dialogue.


8 commentaires

Merci je vais poster le code XML s'il vous plaît vérifier la question mise à jour


@JIMALEABDI Votre application est-elle crash lorsque vous cliquez sur?


Oui, il commence à écraser


@Jimaleabdi j'ai trouvé une solution. Vous ne pouvez pas envoyer ApplicationContext, vous devez envoyer le contexte de votre activité. Correction de ce Val Adapter = OperationAdapter (ceci, ArrayList) Vous ne pouvez pas créer de boîte de dialogue dans une classe d'application car, la boîte de dialogue doit être jointe à une fenêtre, une application n'est pas une classe de l'UI et n'a pas de fenêtre, il ne peut donc pas montrer la boîte de dialogue.


@Jimaleabdidi et sur Ne mettez jamais votre ONCLICK dans Onbindviewholder . Votre méthode appelée "Onbindviewholder" et il ne doit que lier votre député avec votre modèle (article) et rien de plus. Votre code nettoyeur de code et lisible, car vous gardez le premier Principal SRP (responsabilité unique principale). Notbad Exemple


@Jimaleabdiiez toujours un crash?


@Jimaleabdi c'est la même chose. Essayez de trouver votre journal sur votre exception et envoyez-moi


Merci cela fonctionne s'il vous plaît mettre à jour votre réponse pour aider l'autre à nouveau merci de m'aider