2013-06-07 17 views
12

Ich verwende ein ExpandableListView mit einem benutzerdefinierten Adapter, der BaseExpandableListAdapter erweitert. Jetzt möchte ich einen Header zu dieser erweiterbaren Liste hinzufügen, also anstatt mein Apapter zu verwenden, um die Ansicht der Elemente zu erhalten, muss ich die "automatisch" mit der Kopfzeile erstellt, so bekomme ich keine IndexOutOfBoundsExceptions, weil jetzt die header ist ein Element an der Position 0.ursprünglichen Adapter aus erweiterbaren Listview mit Header abrufen

In anderen Fällen, wo mein Adapter nicht erweiterbar war, muss ich nur myList.getAdapter() aufrufen und alles war in Ordnung, aber jetzt brauche ich den Adapter, der BaseExpandableListAdapter erweitert und ich kann den Weg nicht finden.

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); 

Irgendwann muss ich für myAdapter die getChildView Methode aufzurufen (erweitert BaseExpandableListAdapter), aber ich kann nicht direkt myAdapter verwenden, da, dass man den Header nicht haben. Ich muss es über die Liste machen. Ich versuche, es durch die getWrappedAdapter

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

zu tun, aber es ist mir eine Classcast geben, android.widget.ExpandableListConnector kann nicht auf MyAdapter

gegossen werden Kennt jemand eine Möglichkeit, den Original-Adapter durch die bekommen Methoden auflisten?

Danke

Antwort

37

Vom docs,

public ListAdapter getAdapter() 

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

so verwenden, getExpandableListAdapter() und dann getChildView

+1

Thank you! Ich hatte die Warnung nicht gesehen und machte mich wütend mit dem anderen Adapter! – nirvik

+0

Ihre Begrüßung! :) – petey

+1

Erstaunlich, kratzte ich meinen Kopf lange Zeit. Casting getAdapter() mit meinem benutzerdefinierten Adapter verursachte kein Problem bei der Verwendung meiner benutzerdefinierten Funktion 'add (CustomObject obj)', aber es wurde nicht aktualisiert. Habe meinen Tag gerettet! –

Verwandte Themen