我正在使用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
有没有人知道通过列表方法获取原始适配器的方法?
谢谢
答案 0 :(得分:38)
来自docs,
public ListAdapter getAdapter ()
Added in API level 1
This method should not be used, use getExpandableListAdapter().
所以使用,getExpandableListAdapter()
然后使用getChildView