2012-01-08 23 views
12

Używam obiektu ExpandableListView i próbuję bezskutecznie przesuwać obraz podczas rozwijania grupy (obraz będący częścią widoku grupowego).Uzyskaj rozszerzony widok grupowy obiektu ExpandableListView za pomocą polecenia onGroupExpand

Oto mój kod:

my_list_view.setOnGroupExpandListener(new OnGroupExpandListener() 
{ 
    @Override 
    public void onGroupExpand(int groupPosition) 
    { 
     Toast.makeText(getBaseContext(), "Group " + my_list_view.getGroupId(groupPosition), Toast.LENGTH_SHORT).show(); 
    } 
}); 

Zasadniczo mój problem: w jaki sposób mogę uzyskać dostęp do rozszerzonego widoku grupy, gdy tylko mogę użyć zmiennej jest groupPosition?

Każda odpowiedź typu "musisz utworzyć niestandardowy adapter" nie będzie akceptowana. Próbowałem już tego i nie działa na mój problem. Potrzebuję tylko słuchać zdarzenia onGroupExpand.

+0

Naprawdę, nie wiem jak to zrobić. Domyślam się, że funkcja, której powinienem użyć, to 'getGroupView (int groupPosition, boolean isExpanded, View convertView, ViewGroup parent)' ale chodzi o to, że mam tylko 'groupPosition'. Domyślam się, że 'isExpanded' powinno być ustawione na true, ale co z' convertView' i 'parent' ??? – thomaus

+0

masz jakieś rozwiązanie? –

+0

Sprawdź tę odpowiedź. Działa ze mną (http://stackoverflow.com/a/22912225/5621162) –

Odpowiedz

11

W końcu zrobiłem to za pomocą boolean isExpanded, którą otrzymujesz za darmo w getGroupView, gdy tworzysz niestandardową kartę. Udało mi się sprawić, że wszystko działa tak, jak chciałem, zamiast robić to w działaniu. Jeśli zapiszesz kontekst, który otrzymasz w konstruktorze, możesz go użyć do uzyskania zasobów.

@Override 
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { 
    if (isExpanded) { 
    mContext.getResources().getDrawable(R.drawable.arrow) 
    doSomething(); 
    } 
    else { 
    doSomethingElse(); 
    } 
} 

To dużo łatwiejsze niż inne moją odpowiedź (co było nieco buggy tak), więc zapomnij o tym jednym :)

+3

Dzięki. Próbowałem już tego rozwiązania jakiś czas temu i jest błędne + nie ma sensu zmieniać widoku grupowego w tej klasie. Powinien znajdować się wewnątrz zdarzenia onGroupExpand. – thomaus