2

我一直在使用自定义 ExpandableList(见下面的示例图片),其中每个项目总是有一个孩子。这个孩子由三个部分组成。每个部分都有一个标题(红色条),下面是一个空项目或项目列表。此列表的长度会有所不同。

我尝试执行此操作的第一种方法是在空项目下方添加一个 ViewStub,我使用自定义视图对其进行膨胀,该视图最后还包含一个 ViewStub,我依次为下一个项目膨胀,从而递归地添加项目以创建这种项目列表。可悲的是,当列表变得太长时,这会导致 StackOverflowError(对于短列表,这非常有效)。

所以在我的第二次尝试中,我尝试使用带有自定义适配器的 ListView。可悲的是,这个列表只使用了我屏幕的一小部分,其余的项目被遮挡在下一部分的标题后面(这个迷你列表看起来可以滚动,因为旁边出现了第二个滚动条,但它没有滚动。不是我会认为在滚动列表中滚动是一个很好的解决方案,但只是想提一下)。

谁能告诉我如何告诉这个项目列表不可滚动并占用它需要的所有房间(它是否知道创建子节点时它将是什么大小??)或帮助我我的问题的替代解决方案?(哦,我考虑过在我的布局中放置大量的 ViewStub,但这看起来很愚蠢,而且非常糟糕。如果我错了,请纠正我)

替代文字

4

1 回答 1

1

如果我理解正确,那你为什么不直接使用一个实现 ExpandableListAdapter 的 ExpandableList + Adapter?这是一种有点丑陋的方法,但它有效并且并不麻烦。

MyAdapter 实现 ExpandableListAdapter

@Override
public View getChildView(int groupPosition, int childPosition,boolean isLastChild, View convertView, ViewGroup parent) {

}

在这种方法中,您可以简单地确定当前的 childPosition 是标题之一还是子节点之一,并从 xml 膨胀适当的视图。

于 2011-01-22T16:14:30.287 回答