Android: Mehrere Aktionen in einer Listenansicht - Fokusproblem

8

Ich möchte eine ListView implementieren, die ich mit meinem Cursor nicht machen kann. Je nachdem, auf welcher Zeile Sie klicken, gelangen Sie jetzt zu einer neuen Aktivität, basierend auf den Informationen, die in dieser Zeile gedrückt werden (genau wie es sein sollte und wie erwartet). Ich möchte jedoch eine Schaltfläche haben, um die Zeile zu löschen, sodass ein Benutzer einen beliebigen Teil der Zeile drücken kann, um die neue Aktivität zu starten. Wenn er jedoch die Schaltfläche in der Zeile drückt, löscht er die Zeile (oder startet eine Löschaktivität). Funktion).

Wenn Sie @ DroidRecord sehen können, haben sie ein ähnliches Layout, wie ich nach achive suchen.

Danke!

Chris.

    
Chrispix 01.02.2009, 05:17
quelle

6 Antworten

4
___ antwort500494 ___

Was ist deine Frage? Wie füge ich eine Schaltfläche zu einer Listenzeile hinzu?

Ganz einfach, wie Sie es erwarten, wird es dem Layout der Zeile hinzugefügt.

Leider wird das aber auch die ganze Reihe "unberührbar" machen. Der Google-Entwickler, den ich gefragt habe, sagte, dass dies beabsichtigt ist (soweit ich mich erinnere), und dass Sie TouchDelegate verwenden sollten, um damit fertig zu werden. Da es keine Beispiele gibt, nicht einmal in der Android-Quelle und nur sehr dünne Dokumentation das hat bei mir nicht funktioniert

Wie auch immer, es scheint, dass nicht viele Anwendungen eine Schaltfläche in der Listenzeile verwenden. Ich kenne nur meine ( newsrob , siehe Artikelliste) und den Wecker. Vielleicht könnten Sie ein Kontextmenü verwenden?

Andernfalls wäre die hässliche Lösung, in der Zeilenansicht in der getView-Methode zum Aufruf setOnClickListener () hinzuzufügen.

Prost

    
___ answer6439270 ___

Eine weitere mögliche Problemumgehung: Sie können anstelle der Schaltfläche ein ImageView verwenden und onClickListener des ImageView festlegen (z. B. beim Aufblasen der Zellenansicht).

ImageView ist nicht fokussierbar, sodass OnListItemClick () nicht blockiert wird. Wenn Sie auf das Bild klicken, wird nur der Listener des Bildes ausgelöst.

    
___ qstnhdr ___ Android: Mehrere Aktionen in einer Listenansicht - Fokusproblem ___ answer501575 ___

Es ist nicht die Antwort auf Ihre Frage, aber der Long-Click / Tab ist in der Regel der Ort, um ein Kontextmenü aufzurufen und zusätzliche Aktionen wie Löschen zu setzen. Sie können lesen, wie es hier geht: Wie Implementieren Sie das Kontextmenü in einer ListActivity auf Android?

    
___ answer16158835 ___

Ich habe es versucht, um auf die Knöpfe zu klicken, aber es hat nicht für mich funktioniert     android: fokussierbar="falsch"     android: focusableInTouchMode="false"

Also habe ich das Aktivitätslayout in scrollview geändert und dann ein linerLayout darin eingefügt. Danach können Sie Schaltflächen zum Layout hinzufügen und jede Schaltfläche kann angeklickt werden.

    
___ answer8474986 ___

Ich möchte Verwaltungsrat für seinen Hinweis danken, der den Status %code% entfernt hat auf die Schaltfläche (n), es hat meinen Tag gerettet.

Aber zur Information, da die Schaltfläche nicht mehr %code% - %code% auf & lt; Selektor & gt; xml -, das Design wird dem Benutzer nicht mehr angezeigt.

Diese Schaltflächen erhalten zwar weiterhin den Status %code% , aber auch, wenn Sie irgendwo anders auf die übergeordnete Ansicht klicken (irgendwo anders, aber eine andere Schaltfläche)!

Denken Sie daran, es könnte keine gute Lösung für Ihren eigenen Fall sein, aber es funktioniert gut.

    
___ tag123android ___ Android ist das mobile Betriebssystem von Google, das zum Programmieren oder Entwickeln von digitalen Geräten (Smartphones, Tablets, Automobile, Fernseher, Wear, Glass, IoT) verwendet wird. Verwenden Sie für Themen rund um Android Android-spezifische Tags wie android-intent, nicht intent, android-activity, nicht activity, android-adapter, nicht adapter usw. Bei anderen Fragen als der Entwicklung oder Programmierung, aber im Zusammenhang mit Android Framework, verwenden Sie Der Link: https://android.stackexchange.com. ___ tag123listview ___ Ein ListView ist ein grafisches Screen Control oder Widget, das von UI-Bibliotheken in den meisten modernen Betriebssystemen bereitgestellt wird, um Elemente in Listenform anzuzeigen. ___ answer2765202 ___

Wie Mariano Kamp sagte, macht das Hinzufügen von Schaltflächen zu einer Zeile es "unberührbar", aber nach meiner Erfahrung verschwindet dieses Problem, wenn Sie diese Eigenschaften auf die Schaltflächen setzen:

%Vor%

Siehe auch Wie man onListItemClick in feuert Listaktivität mit Schaltflächen in der Liste?

    
___ tag123button ___ Schaltflächen sind einfache Elemente in grafischen Benutzeroberflächen, die Mausklicks oder Fingertipps (auf mobilen Geräten) als Eingabe verwenden. ___ tag123focus ___ Focus bezeichnet die Komponente der grafischen Benutzeroberfläche, die momentan für den Empfang von Eingaben ausgewählt ist. ___ qstntxt ___

Ich möchte eine ListView implementieren, die ich mit meinem Cursor nicht machen kann. Je nachdem, auf welcher Zeile Sie klicken, gelangen Sie jetzt zu einer neuen Aktivität, basierend auf den Informationen, die in dieser Zeile gedrückt werden (genau wie es sein sollte und wie erwartet). Ich möchte jedoch eine Schaltfläche haben, um die Zeile zu löschen, sodass ein Benutzer einen beliebigen Teil der Zeile drücken kann, um die neue Aktivität zu starten. Wenn er jedoch die Schaltfläche in der Zeile drückt, löscht er die Zeile (oder startet eine Löschaktivität). Funktion).

Wenn Sie @ DroidRecord sehen können, haben sie ein ähnliches Layout, wie ich nach achive suchen.

Danke!

Chris.

    
___
Mariano Kamp 01.02.2009, 09:33
quelle
9

Wie Mariano Kamp sagte, macht das Hinzufügen von Schaltflächen zu einer Zeile es "unberührbar", aber nach meiner Erfahrung verschwindet dieses Problem, wenn Sie diese Eigenschaften auf die Schaltflächen setzen:

%Vor%

Siehe auch Wie man onListItemClick in feuert Listaktivität mit Schaltflächen in der Liste?

    
BoD 04.05.2010 12:28
quelle
6

Eine weitere mögliche Problemumgehung: Sie können anstelle der Schaltfläche ein ImageView verwenden und onClickListener des ImageView festlegen (z. B. beim Aufblasen der Zellenansicht).

ImageView ist nicht fokussierbar, sodass OnListItemClick () nicht blockiert wird. Wenn Sie auf das Bild klicken, wird nur der Listener des Bildes ausgelöst.

    
Hatchmaster 22.06.2011 11:45
quelle
1

Es ist nicht die Antwort auf Ihre Frage, aber der Long-Click / Tab ist in der Regel der Ort, um ein Kontextmenü aufzurufen und zusätzliche Aktionen wie Löschen zu setzen. Sie können lesen, wie es hier geht: Wie Implementieren Sie das Kontextmenü in einer ListActivity auf Android?

    
pupeno 01.02.2009 21:05
quelle
0

Ich möchte Verwaltungsrat für seinen Hinweis danken, der den Status focusable entfernt hat auf die Schaltfläche (n), es hat meinen Tag gerettet.

Aber zur Information, da die Schaltfläche nicht mehr focusable - state_focused auf & lt; Selektor & gt; xml -, das Design wird dem Benutzer nicht mehr angezeigt.

Diese Schaltflächen erhalten zwar weiterhin den Status pressed , aber auch, wenn Sie irgendwo anders auf die übergeordnete Ansicht klicken (irgendwo anders, aber eine andere Schaltfläche)!

Denken Sie daran, es könnte keine gute Lösung für Ihren eigenen Fall sein, aber es funktioniert gut.

    
Darkendorf 12.12.2011 13:21
quelle
0

Ich habe es versucht, um auf die Knöpfe zu klicken, aber es hat nicht für mich funktioniert     android: fokussierbar="falsch"     android: focusableInTouchMode="false"

Also habe ich das Aktivitätslayout in scrollview geändert und dann ein linerLayout darin eingefügt. Danach können Sie Schaltflächen zum Layout hinzufügen und jede Schaltfläche kann angeklickt werden.

    
DannyY2K4StackOverflow 23.04.2013 00:13
quelle

Tags und Links