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. P>
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). p>
Maintenant comment mettre à l'écoute d'action sur les images uniquement. P>
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 p> 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. P> P>
6 Réponses :
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())
{}
}
Implémentez le View.Onclicklistener Code> Dans votre Classe de la vue Code> Classe et implémentez le onclick code> 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. p>
Plusieurs événements OnClick à l'intérieur d'un recyclageView: pour obtenir quel élément a été cliqué sur lequel vous correspond à la vue Ivgetid () == VourVievem.getid () P> P> P> P> P >
pour v.getid () == YourViewItem.getid () Code> Puis-je interpréter YourViewItem comme r.id.image1? code> ou je dois utiliser wederviede () < / Code> puis utilisez cette variable pour la correspondance d'identité imageview im = (imageview) FOUTVIEDYID (r.id.image1); code> im.getide () == v.getid code> ou v.getid == r.id.image1 code> 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 (...) i> 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)
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
}
});
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;
}