Nie działa: przetestowano w systemie Android 4.0.2 (ICS). Zobacz inne odpowiedzi na to pytanie na tej stronie. Wygląda na to, że Android uważa nierozwiniętą grupę za pustą. Po prostu ustaw wskaźnik grupy na przezroczysty, a następnie dodaj imageView do wiersza grupy, aw metodzie getGroupView adaptera ustaw go na żądaną ikonę.
Fraggle
1
Ten kod również u mnie nie działa (testowany na Androidzie 4.4). Rozwinięta grupa jest uważana za pustą (brak dzieci), więc ikona jest ustawiona na kolor / przezroczysta.
Guicara,
1
Dzięki za kod, ale wygląda to na żart: tak złożony kod do tak prostego zadania?
Antonio Sesto,
1
Trudno uwierzyć, że ta odpowiedź otrzymała tak wiele „przydatnych” i nagród, podczas gdy jest udokumentowane, że upadłe grupy są uważane za puste ze względu na wydajność!
3c71
41
Bazując na odpowiedzi StrayPointer i kodzie z bloga, możesz jeszcze bardziej uprościć kod:
Używając metody setImageResource, osiągniesz to wszystko za pomocą jednej linijki. W adapterze nie są potrzebne trzy tablice liczb całkowitych. Nie potrzebujesz także selektora XML dla stanu rozwiniętego i zwiniętego. Wszystko odbywa się za pośrednictwem języka Java.
Ponadto takie podejście wyświetla również prawidłowy wskaźnik, gdy grupa jest domyślnie rozwinięta, co nie działa z kodem z bloga.
Jak wspomniano w innej odpowiedzi, ponieważ system Android traktuje nierozwiniętą grupę list jako pustą, ikona nie jest rysowana, nawet jeśli grupa ma dzieci.
Zasadniczo musisz ustawić domyślny element do rysowania jako przezroczysty, przenieść element do rysowania do widoku grupy jako ImageView i przełączyć obraz w adapterze.
Odpowiedzi:
Spróbuj tego >>>
dla wszystkich przedmiotów
W xml
źródło
android:groupIndicator
Nieruchomość trwa stan włączony rozciągliwej. Oznacza to, że możesz ustawić inny obraz dla różnych stanów.Gdy grupa nie ma dzieci, odpowiedni stan to „state_empty”
Zobacz te linki referencyjne:
to i to
Do
state_empty
, można ustawić inny obraz, który nie jest skomplikowane, albo po prostu użyć kolor przezroczysty na wyświetlaczu nic ...Dodaj ten element do swojego stanowego rysunku wraz z innymi ....
Twoja statystyka może wyglądać następująco:
Jeśli używasz ExpandableListActivity, możesz ustawić wskaźnik grupy w onCreate w następujący sposób:
Przetestowałem to, aby działało.
źródło
Bazując na odpowiedzi StrayPointer i kodzie z bloga, możesz jeszcze bardziej uprościć kod:
W swoim xml dodaj do ExpandableListView:
Następnie w adapterze wykonujesz następujące czynności:
Używając metody setImageResource, osiągniesz to wszystko za pomocą jednej linijki. W adapterze nie są potrzebne trzy tablice liczb całkowitych. Nie potrzebujesz także selektora XML dla stanu rozwiniętego i zwiniętego. Wszystko odbywa się za pośrednictwem języka Java.
Ponadto takie podejście wyświetla również prawidłowy wskaźnik, gdy grupa jest domyślnie rozwinięta, co nie działa z kodem z bloga.
źródło
getGroupView()
metodzieBaseExpandableListAdapter
implementacji. Spójrz na tę przykładową implementację .ViewHolder
wzoru.indicator
to nazwa zmiennej posiadacza widoku.Jak wspomniano w innej odpowiedzi, ponieważ system Android traktuje nierozwiniętą grupę list jako pustą, ikona nie jest rysowana, nawet jeśli grupa ma dzieci.
Ten link rozwiązał problem za mnie: http://mylifewithandroid.blogspot.com/2011/06/hiding-group-indicator-for-empty-groups.html
Zasadniczo musisz ustawić domyślny element do rysowania jako przezroczysty, przenieść element do rysowania do widoku grupy jako ImageView i przełączyć obraz w adapterze.
źródło
W swoim kodzie po prostu użyj niestandardowego kodu XML dla listy grup i umieść w nim ImageView dla GroupIndicator .
I dodaj poniższe tablice do ExpandableListAdapter
również w metodzie ExpandableListAdapter dodaj te same rzeczy, co poniżej
Źródła: http://mylifewithandroid.blogspot.in/2011/06/hiding-group-indicator-for-empty-groups.html
źródło
W XML
W
ExpandableListAdapter
->getGroupView
skopiuj następujący kodźródło
może to być inny sposób z XML-a, zestaw
android:groupIndicator="@null"
Link referencyjny: https://stackoverflow.com/a/5853520/2624806
źródło
proponuję moje rozwiązanie:
1) Wyczyść domyślną grupę Wskaźnik:
2) w ExpandableAdapter:
źródło
Chciałem tylko poprawić odpowiedź Mihira Trivediego. Możesz to umieścić w getGroupView (), który znajduje się w klasie MyExpandableListAdapter
... a co do widoku układu, tak wygląda mój group_items.xml
Mam nadzieję, że to pomoże ... pamiętaj, aby zostawić głos za
źródło
Użyj tego, że działa idealnie dla mnie.
źródło
Czy próbowałeś zmienić
ExpandableListView
atrybutandroid:groupIndicator="@null"
?źródło
Po prostu utwórz nowy układ XML z wysokością = 0 dla ukrytego nagłówka grupy. Na przykład jest to „group_list_item_empty.xml”
Wtedy twój normalny układ nagłówka grupy to „your_group_list_item_file.xml”
Na koniec wystarczy zaktualizować metodę getGroupView w klasie adaptera:
WAŻNE : Znacznik główny plików układu (ukryty i normalny) musi być inny (jak w powyższym przykładzie, LinearLayout i RelativeLayout)
źródło
ConvertView.setVisibility (View.GONE) powinno załatwić sprawę.
źródło