从带有标头的expandablelistview中检索原始适配器

时间:2013-06-07 16:35:09

标签: android expandablelistview

我正在使用ExpandableListView和一个扩展BaseExpandableListAdapter的自定义适配器。 现在我想在可扩展列表中添加一个标题,所以我不需要使用我的apapter来获取元素的视图,而是需要使用标题“自动”创建的元素,所以我没有得到IndexOutOfBoundsExceptions,因为现在标题是0位置的元素。

在我的适配器不可扩展的其他ocassions中我只需要调用myList.getAdapter()并且一切正常,但现在我需要获得扩展BaseExpandableListAdapter的适配器,我找不到这样做的方法。 / p>

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

在某些时候,我需要为myAdapter调用getChildView方法(扩展BaseExpandableListAdapter),但我不能直接使用myAdapter,因为那个没有标头。我需要通过列表来完成。我正试图通过getWrappedAdapter

来做到这一点
HeaderViewListAdapter headerAdapter = ((HeaderViewListAdapter) myList .getAdapter());
((MyAdapter ) headerAdapter.getWrappedAdapter()).getChildView(0, i - 1, false, view, myList );

但是它给了我一个ClassCastException,android.widget.ExpandableListConnector无法强制转换为MyAdapter

有没有人知道通过列表方法获取原始适配器的方法?

谢谢

1 个答案:

答案 0 :(得分:38)

来自docs

public ListAdapter getAdapter ()

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

所以使用,getExpandableListAdapter()然后使用getChildView