Hallo onListItemClick für Listview funktioniert nicht. Hier hole ich Daten von SQLite mit AsyncTask und zeige sie in einer Listenansicht an. Und ich möchte einige Aktionen ausführen, wenn eine Liste in einer ListView geklickt hat. Aber der Klick passiert nicht. Ich habe viel dafür ausprobiert. Bitte hilf mir. Hier ist mein Code
%Vor%Und Layout-Code ist materiallist.xml
%Vor%Und listso3.xml ist
%Vor% Sie sollten android:focusable="false"
für ListView-Zeilenelemente hinzufügen, um ListView Clikable zu machen. Da die Ansichten in der ListView-Reihe den Fokus erhalten, ist ListView nicht fokussierbar. In Ihrem Fall können Sie also android:focusable="false"
zu den TextViews Ihrer ListView-Zeile hinzufügen.
Ich hatte die gleichen Symptome und es hat mich eine Weile verrückt gemacht. Das Hinzufügen von android:focusable="false"
für die Listenelemente, wie oben vorgeschlagen, behebt das Problem für mich.
Aber das eigentliche Problem war, dass ich android:textIsSelectable="true"
für meine Listenelemente gesetzt hatte (als Reaktion auf eine von Eclipse erzeugte Warnung); Die Einstellung android:textIsSelectable="false"
hat das Problem für mich behoben und ich brauchte die Option android:focusable="false"
überhaupt nicht.
Die Problemumgehung, die ich gefunden habe, vermeide das
%Vor% in ListView
, aber nutze den Adapter-Konstruktor, der einen Context
als Parameter akzeptiert:
Bei der Übergabe von ActivityName.this
ist es möglich, das Context
in der Klasse des Adapters als ActivityName
auf sichere Weise zu konvertieren und seine Methoden wie Callbacks zu verwenden:
Da die getView()
-Methode der Adapter-Klasse einen position
-Parameter hat, ist es möglich, diesen Wert an die activityMethod(int position)
zu übergeben, um zu wissen, welcher Listeneintrag in die Aktivität gedrückt wurde. ListView
ist.
Eine andere Lösung.
Wenn Sie viele untergeordnete Steuerelemente haben und Probleme haben, android:focusable="false"
zu jedem untergeordneten Steuerelement hinzuzufügen, können Sie android:descendantFocusability="blocksDescendants"
zu seinem übergeordneten Steuerelement hinzufügen.try. it.
Ich kämpfte eine Zeit lang damit - keine der bereitgestellten Lösungen funktionierte für mich. Am Ende habe ich festgestellt, dass ein Aufruf von getListView()
in meiner onViewCreated()
Methode den Trick gemacht hat, obwohl ich keine Ahnung habe warum. Dies ist eher für ein Fragment als für eine Aktivität. nicht sicher, ob dies einen Unterschied macht.
Ich habe auch mit diesem Problem gekämpft und keine der vorgeschlagenen Lösungen hat funktioniert. Mein Problem war, dass ich eine Überschreibung für onViewCreated
vorgenommen, aber nicht super.onViewCreated(view, savedInstanceState);
aufgerufen habe. Hoffentlich hilft das jemand anderem, damit sie nicht stundenlang versuchen herauszufinden, was vor sich geht.
Ich habe gekämpft, als ich versehentlich android: inputType="textCapWords" mit der Textbox nach dem Entfernen legte es ist behoben
Nur die folgende Zeile funktionierte für mich:
%Vor%Die gesamte list_view_item.xml:
%Vor%Das obige soll in getView wie verwendet werden:
%Vor%'
Tags und Links android android-layout listview onitemclicklistener