gpt4 book ai didi

android - 可扩展 ListView : Distinct View Groups

转载 作者:行者123 更新时间:2023-11-29 21:50:20 24 4
gpt4 key购买 nike

我正在尝试对 ExpandableListView 进行子类化,以便我可以添加不同的组。

不同的组是指每个组包含不同的 subview 类型(其中所有 subview 在整个组中都是相同的)。

即:

Group 1
TextView 1
TextView 2
TextView 3
Group 2
EditText 1
EditText 2
EditText 3
...

我尝试在 LinearLayout 中将两个 ELV 堆叠在一起,但是我试图获得的主要行为(这是我首先使用 ELV 的唯一原因)丢失了:每个列表变得独立可滚动,如果使用包含多个组的单个 ELV,它们将一起滚动)。

我已经看过了

How to add image in expandable List in parent in android?

然而,这并不是我想要的。这解决了一个组中多个不同 child 的问题:

Group 1
TextView 1
Image 1
----------
TextView 2
Image 2
...

我敢肯定,如果有足够的时间,我也许可以从中弄明白,但我想看看以前是否有人做过。

我已经实现了我的 ELV 适配器并且编译和运行一切正常,现在准备好调整代码来解决这个特定问题。

谢谢。

最佳答案

android 不支持它。一种常见的方法是为您的列表元素制作一个包装器对象。例如,假设你想在列表中显示 CarPerson,那么你会做类似的事情

class ListElement {
Car car = null;
Person person = null;
}

在运行时,carperson 为空。在 getView() 的实现中,您可以做类似的事情,

ListElement e = getItem(position);
if (e.car != null) {
// create view for Car
} else if (e.person != null) {
// create view for Person
} else {
// error!
}

如果您使用转换 View (您应该这样做),则必须小心。例如,如果 convert view 为 Car 膨胀,而您应该为 Person 获取 View 。处理此问题的一种方法是创建一个 super View ,其中包含 CarPerson View ,然后您只需在 getView() 中隐藏或显示相应部分

<FrameLayout ...>
<LinearLayout android:id="@+id/car_layout" ... />
<LinearLayout android:id="@+id/person_layout" ... />
</FrameLayout>

另一种方法是有两个独立的可扩展 ListView

关于android - 可扩展 ListView : Distinct View Groups,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14571921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com