Ich möchte OnLongClickListener
meiner Listenansicht hinzufügen . Immer wenn der Benutzer lange auf das Element in der Liste drückt, sollte eine Aktion ausgeführt werden, aber mein Code fängt diesen Listener nicht ab. Bitte lassen Sie mich wissen, wo ich falsch liege. Der ähnliche Code funktioniert setOnItemClickListener
sehr gut.
Hier ist der 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;
}
});
Antworten:
Sie müssen setOnItemLongClickListener () in der ListView festlegen:
Das XML für jedes Element in der Liste (sollten Sie ein benutzerdefiniertes XML verwenden) muss ebenfalls vorhanden sein
android:longClickable="true"
(oder Sie können die Convenience-Methode verwendenlv.setLongClickable(true);
). Auf diese Weise können Sie eine Liste mit nur einigen Elementen erstellen, die auf Longclick reagieren.Hoffe das wird dir helfen.
quelle
lv.setLongClickable(true);
auch an.lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {...
Wenn Ihre Listview Zeile Element an einen separaten XML - Datei verweist, müssen Sie hinzufügen
android:longClickable="true"
zu dieser Layout - Datei zusätzlich zu EinstellungsetOnItemLongClickListener()
zu Ihrem Listview.quelle
oder versuchen Sie diesen Code:
quelle
Ich denke, dieser obige Code funktioniert bei LongClicking der Listenansicht, nicht der einzelnen Elemente.
warum nicht verwenden
registerForContextMenu(listView)
. und erhalten Sie dann den Rückruf in OnCreateContextMenu.In den meisten Anwendungsfällen funktioniert dies genauso.
quelle
In XML hinzufügen
In der Java-Datei
versuchen Sie dies setOnItemLongClickListener ()
quelle
das sollte funktionieren
Vergessen Sie auch nicht, dies in Ihrer XML-Datei zu tun.
android:longClickable="true"
Wenn Sie eine benutzerdefinierte Ansicht haben, fügen Sie diese Ihrer benutzerdefinierten Ansichtsklasse hinzuyouCustomView.setLongClickable(true);
Hier ist die Ausgabe des obigen Codes
quelle
Ich habe die meisten dieser Antworten ausprobiert und sie scheiterten alle bei TextViews, bei denen die automatische Verknüpfung aktiviert war, die aber auch lange Zeit an derselben Stelle drücken mussten!
Ich habe eine benutzerdefinierte Klasse erstellt, die funktioniert.
quelle
Dies funktionierte für mich für cardView und funktioniert genauso für die Listenansicht in Adapter-Calss innerhalb der
onBindViewHolder()
Funktionquelle
Wenn Sie dies im Adapter tun möchten, können Sie dies einfach tun:
quelle
Auf jeden Fall macht der Trick.
quelle