如何在可扩展列表中使用ListView?

时间:2011-01-21 14:30:38

标签: android listview expandablelistview

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

我尝试这样做的第一种方法是在空白项目下面添加一个ViewStub,我用自定义视图充气,最后还包含一个ViewStub,我为下一个项目依次充气,从而添加了项目递归地创建这种项目列表。遗憾的是,当列表变得太长时,会导致StackOverflowError(使用短列表,这非常有效)。

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

任何人都可以告诉我如何告诉这个项目列表不可滚动并占用它所需的所有空间(它是否知道创建子节点时的大小?)或帮助我有一个替代解决方案来解决我的问题? (哦,我已经考虑过在我的布局中加入一些不合理的ViewStubs,但这看起来很愚蠢,而且非常糟糕。如果我错了,请纠正我)

alt text

1 个答案:

答案 0 :(得分:1)

如果我理解正确,那么为什么不采用实现ExpandableListAdapter的ExpandableList + Adapter?这是一种有点丑陋的方法,但它起作用并且没有太多麻烦。

  

MyAdapter实现ExpandableListAdapter

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

}

在这种方法中,您可以简单地判断当前的childPosition是标题之一还是其​​中一个子项,并从xml中膨胀相应的View。