我正在尝试子类化ExpandableListView,以便我可以添加不同的组。
通过不同的组,我的意思是每个组包含不同的子视图类型(其中所有的孩子在整个组中都是相同的)。
那是:
Group 1
TextView 1
TextView 2
TextView 3
Group 2
EditText 1
EditText 2
EditText 3
...
我尝试在LinearLayout中堆叠两个ELV ontop,但是我想要获得的主要行为(这是我首先使用ELV的唯一原因)是丢失的:每个列表变得独立可滚动的,如果使用包含多个组的单个ELV,它们将一起滚动)。
我已经看过帖子了
How to add image in expandable List in parent in android?
然而,这并不是我想要的。这解决了组内多个不同孩子的问题:
Group 1
TextView 1
Image 1
----------
TextView 2
Image 2
...
我确信有足够的时间我可以从中解决这个问题,但我想知道是否有人已经做过这件事。
我已经实现了我的ELV适配器,并且编译好并运行正常,现在我已准备好调整代码来解决这个特殊问题。
谢谢。
答案 0 :(得分:2)
没有来自android的支持。一种常见的方法是为列表元素创建一个包装器对象。例如,假设您要在列表中显示Car
和Person
,那么您可以执行类似
class ListElement {
Car car = null;
Person person = null;
}
在运行时,car
或person
为空。在getView()
的实现中,您可以执行类似的操作,
ListElement e = getItem(position);
if (e.car != null) {
// create view for Car
} else if (e.person != null) {
// create view for Person
} else {
// error!
}
如果您使用转换视图(您应该使用),则必须小心。例如,如果转换视图为Car
充气,您应该获得Person
的视图。处理此问题的方法是创建包含Car
和Person
视图的超级视图,然后您只需隐藏或显示getView()
中的相应部分。
<FrameLayout ...>
<LinearLayout android:id="@+id/car_layout" ... />
<LinearLayout android:id="@+id/person_layout" ... />
</FrameLayout>
另一种方法是有两个单独的可扩展ListView
。