你能把一个可扩展列表放在一个可扩展列表中吗

can you put an expandable list within an expandable list

是否可以在可扩展列表中创建可扩展列表

我正在制作一个食谱应用程序,我有三个相同类型的可扩展列表 - 维生素、矿物质和常量营养素,使用 android studio

的 expandablelistview 创建

是否可以将这三个可扩展列表放在一个名为营养的可扩展列表下?如果可以,您能否简要概述一下如何做。提前致谢

简短的回答,是的,你可以,但你真的不应该。

我以前试过这个但结果并不好,我不记得确切的原因,但是当尝试在不同的适配器中布局视图时,触摸侦听器和测量通过之间会发生冲突计算正确。

您可以在网络上找到许多自定义的 ExpandableLists 试图做您想要的,但我发现它们也有类似的问题。

我最终做的是构建我自己的可扩展列表视图。如果您检查 Android 的 ExpandableListView 和 ExpandableListAdapter 的源代码,您会发现它基本上是

  • 只是一个普通的列表视图
  • 可见项目列表
  • 数据源的异步过滤器
  • 一些元数据来判断它是 child 还是组,展开还是折叠等等

因此,如果您的所有项目都已折叠,则可见列表仅包含组项目。 展开一个组项,异步过滤器被触发,并用组项和展开组项的 Children 填充可见列表。 根据元数据,它将调用 getGroupView 或 getChildView。

因此,如果您愿意,可以尝试自己编写。

我为我写的 ExpandableList 写了一篇博客 post,理论上它可以无限扩展。 NLevelExpandableListView