2013-06-07 16 views
12

Używam ExpandableListView z niestandardowym adapterem, który rozszerza BaseExpandableListAdapter. Teraz chcę dodać nagłówek do tej rozwijanej listy, więc zamiast używać mojego apletu, aby uzyskać widok elementów, potrzebuję użyć tego "automatycznie" utworzonego z nagłówkiem, więc nie dostaję IndexOutOfBoundsExceptions, ponieważ teraz nagłówek to element na pozycji 0.pobierz oryginalny adapter z expandablelistview z nagłówkiem

W innych przypadkach, w których mój adapter nie był rozwijany, wystarczy zadzwonić do myList.getAdapter() i wszystko było ok, ale teraz potrzebuję uzyskać adapter, który rozszerza BaseExpandableListAdapter i nie mogę znaleźć sposobu, aby to zrobić.

myList = (ExpandableListView)findViewById(R.id.my_list); 
myList .setGroupIndicator(null); 
myList .setOnGroupClickListener(this); 
myList .setOnChildClickListener(this); 

//add a header 
View addSummaryLayout = View.inflate(this, R.layout.add_summary, null); 
groupedMultimediaListView.addHeaderView(addSummaryLayout); 

myAdapter = new MyAdapter (this, uploadingMedias); 
myList .setAdapter(myAdapter); 

Na jakiś czas, muszę wywołać metodę getChildView dla myAdapter (rozciąga BaseExpandableListAdapter), ale nie można używać bezpośrednio myAdapter dlatego, że nie ma nagłówek. Muszę to zrobić na liście. Staram się robić to przez getWrappedAdapter

HeaderViewListAdapter headerAdapter = ((HeaderViewListAdapter) myList .getAdapter()); 
((MyAdapter) headerAdapter.getWrappedAdapter()).getChildView(0, i - 1, false, view, myList); 

ale to daje mi ClassCastException, android.widget.ExpandableListConnector nie mogą być oddane do MyAdapter

Czy ktoś zna sposób, aby uzyskać oryginalny zasilacz za pośrednictwem wymienić metody?

Dziękuję

Odpowiedz

37

Z docs,

public ListAdapter getAdapter() 

Added in API level 1 
This method should not be used, use getExpandableListAdapter(). 

więc używać, getExpandableListAdapter() a następnie getChildView

+1

Dziękujemy! Nie widziałem ostrzeżenia i doprowadzałem się do szału używając drugiej przejściówki! – nirvik

+0

Twoje powitanie! :) – petey

+1

Niesamowite, długo drapałem się po głowie. Przesyłanie getAdapter() z moją niestandardową kartą nie powodowało problemu podczas korzystania z mojej niestandardowej funkcji 'add (CustomObject obj)', ale nie było odświeżania. Uratowałem mój dzień! –

Powiązane problemy