Gibt ExpandableListView
es eine Möglichkeit, den Gruppenindikator für Gruppen ohne Kinder auszublenden?
107
Gibt ExpandableListView
es eine Möglichkeit, den Gruppenindikator für Gruppen ohne Kinder auszublenden?
Antworten:
Versuchen Sie dies >>>
für alle Artikel
In XML
quelle
Das
android:groupIndicator
Eigenschaft hat einen Status aktiviert, der gezeichnet werden kann. Das heißt, Sie können unterschiedliche Bilder für unterschiedliche Zustände festlegen.Wenn die Gruppe keine Kinder hat, lautet der entsprechende Status 'state_empty'.
Siehe diese Referenzlinks:
dies und das
Zum
state_empty
, können Sie ein anderes Bild gesetzt , die nicht verwirrend ist, oder einfach transparente Farbe Display nichts verwenden ...Fügen Sie diesen Artikel zusammen mit anderen in Ihr Stateful Drawable ein ....
Ihre Statelliste kann also folgendermaßen aussehen:
Wenn Sie eine ExpandableListActivity verwenden, können Sie den Gruppenindikator in onCreate wie folgt festlegen:
Ich habe dies getestet, um zu funktionieren.
quelle
Basierend auf der Antwort von StrayPointer und dem Code aus dem Blog können Sie den Code noch weiter vereinfachen:
Fügen Sie in Ihrer XML das Folgende zu ExpandableListView hinzu:
Dann machen Sie im Adapter Folgendes:
Mit der setImageResource-Methode erledigen Sie alles mit einem Einzeiler. Sie benötigen die drei Integer-Arrays in Ihrem Adapter nicht. Sie benötigen auch keinen XML-Selektor für den erweiterten und reduzierten Status. Alles wird über Java erledigt.
Außerdem zeigt dieser Ansatz auch den richtigen Indikator an, wenn eine Gruppe standardmäßig erweitert wird, was mit dem Code aus dem Blog nicht funktioniert.
quelle
getGroupView()
Methode IhrerBaseExpandableListAdapter
Implementierung verwendet werden. Schauen Sie sich diese Beispielimplementierung an .ViewHolder
Muster.indicator
ist der Variablenname des Ansichtsinhabers.Wie in einer anderen Antwort erwähnt, wird das Symbol nicht gezeichnet, da Android eine nicht erweiterte Listengruppe als leer behandelt, selbst wenn die Gruppe untergeordnete Elemente hat.
Dieser Link hat das Problem für mich behoben: http://mylifewithandroid.blogspot.com/2011/06/hiding-group-indicator-for-empty-groups.html
Grundsätzlich müssen Sie das Standard-Drawable als transparent festlegen, das Drawable als ImageView in Ihre Gruppenansicht verschieben und das Bild in Ihrem Adapter umschalten.
quelle
Verwenden Sie in Ihrem Code einfach die benutzerdefinierte XML-Liste für Gruppen und fügen Sie die ImageView für GroupIndicator ein .
Fügen Sie in Ihrem ExpandableListAdapter die folgenden Arrays hinzu
Fügen Sie auch in der ExpandableListAdapter- Methode dieselben Dinge wie unten hinzu
Referenz: http://mylifewithandroid.blogspot.in/2011/06/hiding-group-indicator-for-empty-groups.html
quelle
In XML
In
ExpandableListAdapter
->getGroupView
folgenden Code kopierenquelle
Dies könnte ein anderer Weg von XML sein, gesetzt
android:groupIndicator="@null"
Referenzlink: https://stackoverflow.com/a/5853520/2624806
quelle
Schlagen Sie mir meine Lösung vor:
1) Standard-Gruppenindikator löschen:
2) in ExpandableAdapter:
quelle
Ich wollte nur Mihir Trivedis Antwort verbessern. Sie können dies in getGroupView () platzieren, das sich in der MyExpandableListAdapter-Klasse befindet
... und was die Layoutansicht betrifft, so sieht meine group_items.xml so aus
Hoffe das hilft ... denk daran, eine positive Bewertung abzugeben
quelle
Verwenden Sie dies, es funktioniert perfekt für mich.
quelle
Haben Sie versucht,
ExpandableListView
das Attribut zu ändernandroid:groupIndicator="@null"
?quelle
Sie erstellen einfach ein neues XML-Layout mit height = 0 für den ausgeblendeten Gruppenheader. Zum Beispiel ist es 'group_list_item_empty.xml'
Dann lautet Ihr normales Gruppenheader-Layout 'your_group_list_item_file.xml'.
Schließlich aktualisieren Sie einfach die getGroupView-Methode in Ihrer Adapterklasse:
WICHTIG : Das Root-Tag der Layoutdateien (versteckt und normal) muss unterschiedlich sein (wie im obigen Beispiel LinearLayout und RelativeLayout).
quelle
convertView.setVisibility (View.GONE) sollte den Trick machen.
quelle