0
votes

Recyclerview Onclick pour ouvrir un nouveau fragment

J'ai recyclévoie en fragment. Lorsque je clique sur l'un des éléments de RECYCLERVIEW, Ä ± Vous voulez ouvrir un nouveau fragment. Je dois colonne dans mon adaptateur comme vous voyez la photo:  Entrez la description de l'image ici J'ai créé deux fragments également. (fragment_opel et fragment Chevrolet.) Lorsque l'utilisateur clique sur la ligne de Chevrolet, Fragment_chevrolet doit ouvrir. Je suis nouveau sur Android Studio.Je crée une méthode onclick dans mon adaptateur. Mais je ne peux pas remplir cette fonction. :) Pouvez-vous m'aider à ce sujet s'il vous plaît?

mon adaptateur: xxx

mon fragment: xxx


4 commentaires

Je ne vois pas un auditeur click n'importe où dans votre code. Avez-vous traversé cet article? . Il s'agit de définir un auditeur, vous pouvez faire ce que vous voulez.


Vous voulez le faire dans l'adaptateur ou dans l'activité?


@DanialClarc RecyclerView est défini mon fragment. Donc, je dois définir sur l'adaptateur.


@Taseerahmad j'ai défini cliquez sur écouteur sur mon adaptateur. Tu peux voir ça. Mais il est vide. Parce que je ne fais pas comment faire ça.Maybe je pourrais être totalement faux.


4 Réponses :


0
votes

Vous devez implémenter une interface OnClickListener pour votre adaptateur. Après cela, vous pouvez définir votre visibilité de RECYCLERVIEW disparue et FrameLayout visible. maintenant envoyer quel fragment que vous voulez dans FRAMELAYOUT.

ou

Implémentez l'adaptateur ONCLICKLISTENER Dans votre activité principale et indiquez quel fragment que vous souhaitez par sélectionnez RecyclERView Item Index


6 commentaires

Merci pour votre aide. Pour le deuxième conseil, mon recyclageview est dans mon fragment. Donc, mon activité principale est vide. Devrais-je mettre en œuvre l'adaptateur onclicklistener sur mon MainActiviy, même si? ou utiliser en fragment?


Y compris certains code aidera le lecteur à comprendre correctement la solution.


@akiilhan Vous souhaitez modifier un fragment déjà passé dans Framelayout et qui est déjà défini en maadactivité, n'est-ce pas? Dans ce cas, vous devez implémenter l'adaptateur onclicklistener dans votre main-d'œuvre et remplacer le deuxième fragment par fragmenttransaction.


@Taseerahmad Désolé. C'est comme ça que je peux aider maintenant. Votre réponse a le plus fait.


@Hoseinhaqiqian j'ai créé deux lignes à l'aide de RecyclERView. Mais j'ai créé recyclerview dans mon fragment pas dans ma maigre. Mon but est quand je clique sur la ligne, un fragment différent devrait s'ouvrir. En fait, ı Maintenant, comment réussir le fragment de données en fragment à l'aide du bouton. Mais maintenant, il n'y a pas de bouton et j'utilise RecyclERView. Je suis tellement confus.


Cher @akiilhan, les interfaces peuvent être transmises à travers le fragment, puis à l'activité pour gérer différentes situations comme celle-ci.



1
votes

première configuration A Click Lister:

Définir A Click Lister sur le porte-visuelle Code> Objet. P>

class MainActivity : AppCompatActivity(), ClickEventHandler  {
  override fun forwardClick(holder: AracMarkaViewHolder) {
     //Launch a new fragment here.
  }
}


6 commentaires

Bonjour Taseer. Je vous remercie beaucoup. Je arrange mon code d'accord sur votre avis.mais, pour ce code: Valick Handler: Cliquez sur EventHandler = Contexte comme cliquez sur EventHandler, le contexte ne peut pas résoudre.


Vous devez passer contexte à la classe Adapter. Par exemple, Adaptateur de classe (contexte: contexte) . Ensuite, adaptateur (ceci) .


Désolé pour mes questions, mais je ne peux pas l'obtenir.


Vérifiez la modification, il vous suffit de passer context comme paramètre sur la classe de l'adaptateur exactement comme vous y passez une liste.


Bonjour Taseer, réellement merci beaucoup pour votre aide. Le problème est dans la classe AracMarkaadapter, ARACMarkaviewholder est URESOLVE.


Laissez-nous Continuez cette discussion en chat .



1
votes

Il suffit d'implémenter le "Aller à Fragment" dans votre Onbindviewholder Code> Méthode comme celui-ci-

override fun onBindViewHolder(holder: AracMarkaViewHolder, position: Int) {
    holder.aracismi.text = araclar.get(position).aracAdi
    holder.aracLogo.setImageResource(araclar.get(position).aracLogo)
    holder.setOnClickListener {
        if (position == 0) {
            TODO("Go to first fragment")
        } else {
            TODO("Go to second fragment")
        }
    }
}


2 commentaires

Bonjour, merci beaucoup. Maintenant, je peux obtenir des positions. Mais maintenant, aller au premier fragment, je ne peux pas appeler "soutienfragmentManager". Avez-vous maintenant comment faire ça?


Définition d'un auditeur dans Onbindviewholder est une mauvaise pratique que sur le défilement, il continue à définir des écouteurs sur chaque titulaire de vue. En outre, ce n'est pas un travail de classe d'adaptateur de gérer cette logique. Il devrait être propagé au niveau d'activité et y manipulé.



1
votes

Juste au cas où cela aide tous ceux qui utilisent Kotlin et Android Studio 4.

J'utilise des adaptateurs sur un recyclage dans un fragment. Vous ne pouvez faire que le remplacement de la classe MainActivity.kt n'est pas la classe de l'adaptateur car ce n'est pas sur le fil principal si vous allez montrer une nouvelle vue de fragment. P>

Donc, mon constructeur dans mon adaptateur pour mon RecyclerView est remplacé par: p> xxx pré>

alors j'ai une variable dans ma classe d'adaptateur: p> xxx pré>

Puis j'ai ajouté le SETONClickListener dans ma classe d'adaptateur à la méthode OnCreateViewholder: p>

 override fun viewFollow(holder: View) {
}


0 commentaires