7
votes

OnClickListener sur l'élément spécifique de la recyclerview à Android

Je vais poser une question très basique, mais je suis coincé pendant une longue période.

après la carte de la carte Il y a un recyclage qui a 2 images dans chaque rangée. Maintenant, je veux créer l'auditeur de clic sur les images plutôt que le recyclage.

La disposition correspondante (layout_main.xml) de cette activité (MainAlacit.java) ne contient que recyclerview. Les éléments de chaque ligne se trouvent dans une autre mise en page (layout_images.xml). Je reçois les images de layout_images.xml et les gonflez dans la classe de l'adaptateur (adaptateur.java).

Maintenant comment mettre à l'écoute d'action sur les images uniquement.

Deuxièmement, je Voulez-vous obtenir l'image sur laquelle j'ai cliqué. Comment obtenir ça. Comme, lorsque nous cliquons sur une vue, nous créons une méthode comme xxx

où la vue est l'objet sur lequel nous avons cliqué. Dans mon cas, comment obtenir l'image sur laquelle j'ai cliqué. Utilisation de Type Cast, il peut s'agir d'une exception lorsque l'utilisateur ne clique pas sur l'image.


0 commentaires

6 Réponses :


0
votes

Vous pouvez vérifier avec la balise ou l'élément d'élément comme celui-ci:

public void onClick(View view){
if(view.getId() == image1.getId())
{

}else if(view.getId() == image2.getId())
{}

}


0 commentaires

1
votes

Implémentez le View.Onclicklistener Dans votre Classe de la vue Classe et implémentez le onclick méthode. Ensuite, définissez l'écoute de clic pour votre imageView à cet écoute. Ajoutez la fonctionnalité requise dans la méthode OnClick. Si vous souhaitez implémenter la fonctionnalité de clic dans une autre classe, créez simplement une interface et déclarez une méthode de clic. Vous pouvez mettre en œuvre cette méthode dans l'activité / fragment contenant cette recyclage. Ensuite, à partir de votre mode de vue ONCliquez, vous pouvez appeler la méthode d'interface.


0 commentaires


9
votes

Plusieurs événements OnClick à l'intérieur d'un recyclageView: xxx

pour obtenir quel élément a été cliqué sur lequel vous correspond à la vue Ivgetid () == VourVievem.getid ()


3 commentaires

pour v.getid () == YourViewItem.getid () Puis-je interpréter YourViewItem comme r.id.image1? ou je dois utiliser wederviede () < / Code> puis utilisez cette variable pour la correspondance d'identité imageview im = (imageview) FOUTVIEDYID (r.id.image1); im.getide () == v.getid ou v.getid == r.id.image1 lequel est correct? Y a-t-il une différence entre les deux?


Comparer ID comme r.id.View, il s'agit d'une valeur entière lorsque vous pouvez se produire, nous pouvons trouver cette méthode de la valeur v.getid (). v.getd == r.id.image1 (utilisez ceci)


Dans l'adaptateur, il y a deux façons de le faire soit directement surClick dans OnBindviewholder (...) Like titulaire.Button.setonclickListener (Nouvelle vue.Onclicklistener () {@Override publique Void OnClick (View V) {}); ou élément de mise en œuvre Cliquez sur Écouter par MyViewholderClass (comme dans cet article)



6
votes

Vous devez définir onclicklistener code> sur imageview code> s à l'intérieur de la méthode code> Onbindviewholder code>, reportez-vous aux locages suivants pour référence (code à l'intérieur Onbindviewholder Code> Méthode)

holder.imageView1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //put your code for first imageview here
    }
});
holder.imageView2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //put your code for second imageView here
    }
});


0 commentaires

0
votes

Tout d'abord défini surClickListener à chaque vue que vous souhaitez être cliquée. Bon endroit pour le faire dans Viewholderconstructor. par exemple

switch (v.getId()) {
            case R.id.im_gallery_one: {
              p = 0;
            }
            break;
            case R.id.im_gallery_two: {
              p = 1;
            }
            break;
            case R.id.im_gallery_three: {
              p = 2;
            }
            break;
            case R.id.im_gallery_four: {
              p = 3;
            }
            break;
          }


0 commentaires