onListItemClick funktioniert nicht für listview?

8

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%     
JM India 19.03.2012, 04:41
quelle

9 Antworten

40

Fügen Sie Ihrem TextView im XML-Code den folgenden Code hinzu

%Vor%

und versuchen Sie es erneut.

Eine weitere einfache Lösung: Fügen Sie android:descendantFocusability="blocksDescendants" zur Root-Viewgroup hinzu.

    
dreamtale 19.03.2012, 05:20
quelle
3

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.

    
Lalit Poptani 19.03.2012 04:53
quelle
1

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.

    
sguidos 05.06.2013 16:20
quelle
1

Die Problemumgehung, die ich gefunden habe, vermeide das

%Vor%

in ListView , aber nutze den Adapter-Konstruktor, der einen Context als Parameter akzeptiert:

%Vor%

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:

%Vor%

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.

    
quelle
0

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.

    
pan7an 03.09.2013 08:04
quelle
0

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.

%Vor%     
gregdev 14.03.2016 02:14
quelle
0

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.

    
primehalo 25.03.2016 08:23
quelle
0

Ich habe gekämpft, als ich versehentlich android: inputType="textCapWords" mit der Textbox nach dem Entfernen legte es ist behoben

    
user2746732 14.08.2016 06:03
quelle
0

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%

'

    
TastyCatFood 18.09.2016 11:08
quelle