Je veux ajouter OnLongClickListener
à ma vue de liste. Chaque fois que l'utilisateur appuie longuement sur l'élément de la liste, une action doit être effectuée, mais mon code n'attrape pas cet écouteur. Faites-moi savoir où je vais mal. Le code similaire fonctionne setOnItemClickListener
très bien.
Voici le code:
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> arg0, View v,
int index, long arg3) {
// TODO Auto-generated method stub
Log.d("in onLongClick");
String str=listView.getItemAtPosition(index).toString();
Log.d("long click : " +str);
return true;
}
});
Réponses:
Vous devez définir setOnItemLongClickListener () dans ListView:
Le XML pour chaque élément de la liste (si vous utilisez un XML personnalisé) doit également avoir
android:longClickable="true"
(ou vous pouvez utiliser la méthode pratiquelv.setLongClickable(true);
). De cette façon, vous pouvez avoir une liste avec seulement quelques éléments répondant à un clic long.J'espère que ceci vous aidera.
la source
lv.setLongClickable(true);
également.lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {...
Si votre élément de ligne ListView fait référence à un fichier XML distinct, assurez-vous de l'ajouter
android:longClickable="true"
à ce fichier de mise en page en plus du paramètresetOnItemLongClickListener()
de votre ListView.la source
ou essayez ce code:
la source
Je pense que ce code ci-dessus fonctionnera sur LongClicking la liste, pas les éléments individuels.
pourquoi ne pas l'utiliser
registerForContextMenu(listView)
. puis obtenez le rappel dans OnCreateContextMenu.Pour la plupart des cas d'utilisation, cela fonctionnera de la même manière.
la source
Dans xml ajouter
Dans le fichier java
essayez ce setOnItemLongClickListener ()
la source
cela devrait fonctionner
n'oubliez pas non plus de dans votre xml
android:longClickable="true"
ou si vous avez une vue personnalisée, ajoutez-la à votre classe de vue personnaliséeyouCustomView.setLongClickable(true);
voici la sortie du code ci-dessus
la source
J'ai essayé la plupart de ces réponses et elles échouaient toutes pour TextViews qui avait activé la liaison automatique, mais qui devait également utiliser une pression longue au même endroit!
J'ai créé une classe personnalisée qui fonctionne.
la source
Cela a fonctionné pour moi pour cardView et fonctionnera de la même manière pour listview à l'intérieur des cals d'adaptateur, dans la
onBindViewHolder()
fonctionla source
Si vous souhaitez le faire dans l'adaptateur, vous pouvez simplement le faire:
la source
Fait vraiment l'affaire.
la source