【问题标题】:Nested ListView - ListView in ListView嵌套 ListView - ListView 中的 ListView
【发布时间】:2014-03-01 11:07:27
【问题描述】:

我一直在尝试不同类型的“列表”,而不是只有一种类型,我决定制作一个可以容纳不同类型 ListView 的 ListView。

在我的 ListView 自定义视图中,我有一个“Title(TextView)”、“Splitter 或 Border(TextView)”,然后是 ListView。这样我可以创建一个包含类别的列表,而不是让它们看起来都一样。在列表中可能有另一个列表,其中只有文本,一个包含图像和文本,一个包含图像、文本和按钮。

这两个都有自己的 ListView。我可以通过更改适配器将其更改为另一种 ListView 类型。

首先,这是一个好主意 - 性能方面吗?

其次,我在第一个和第二个列表中添加了多个项目,但它们没有显示出来。仅显示每个列表中的第一项。 为什么? 只显示 ListView 中每个 ListView 的第一项。我猜它不是自动调整到列表中的项目。有可能还是会这样?

这样,至少可以灵活地创建一个“设置”页面,该页面可以包含不同类型的设置以及如何更新/更改/添加它们。

更新与 ExpandeListView:

...确实是一样的!

如果有人错过了,现在有 2 个 ListView,每个都包含 1 个 ListView。列表#1 应该能够是“不同的”,例如该列表中的 EditText 列表。所以它不适用于正常的解决方案!

【问题讨论】:

  • 我知道将多个布局相互放置在性能方面是“糟糕的”,但我的意图是在 ListView 中的 ListView 中没有 ListView。就是这种“类型”的设置。

标签: android listview view android-listview nested


【解决方案1】:

我认为使用一个具有多种视图类型的 Listview 会比你想象的更好。看看下面的教程http://logc.at/2011/10/10/handling-listviews-with-multiple-row-types/

此外,您可以查看 ExpandableListView,然后让所有父级展开并禁止父级关闭。这样一来,你就有可能得到你所需要的。

【讨论】:

  • 尝试使用 ExpandeListView,将“TextView”作为标题,将 ListView 作为子项 - 因此您可以向每个组添加多个 ListView。但是同样的事情发生了,ListView 没有扩展到它的内容的大小。我的解决方案看起来更好。否则,如果我只使用只有一种类型的 ExpandeListView,它就会成为“正常”的 LIstView,仅在组中且可扩展。不是我想要的。
  • 是的,这行得通。谢谢。将其添加到您的答案中,我会标记它。
  • ...或者它工作了很长时间。现在,当我添加几个列表然后旋转屏幕时,ListView 中的第一个“项目”会被复制。我对这些项目进行了序列化,并通过将其保存在捆绑包中来恢复它们……但同样的事情发生了。假设我有 5 个列表,#1、#2、#3、#4、#5... 当垂直时,所有列表都是可见的。当水平时,#1-#3 是可见的,因为它们适合屏幕。 #4 和 #5 成为 #1 的任何内容。
  • 我发现了你的问题,当你使用这个不可滚动的列表视图时,你将根据它的高度和宽度来测量要为列表绘制的窗口。但是,当您更改配置时,此计算不再有效。所以,我会考虑在 onMeasure 屏幕中使用设备屏幕配置。
【解决方案2】:

您的数组适配器可以为不同类型的数据扩展不同的视图

https://developer.android.com/reference/android/widget/BaseAdapter.html#getItemViewType(int)

这就是你要问的吗?

【讨论】:

  • 我拥有的是一个“ListViewItemCategory”,或者它被称为。它由一个TextView、一个Border 和一个ListView 组成。这总是一样的。但是那个 ListView 的内容应该是灵活的;所以我可以添加任何其他类型的列表。然后将 ListViewItemCategory 添加到它自己的 ListView 中。具有特定项目(类别)和类别内的“静态”ListView,可以添加任何类型的列表,或者可以添加具有自己的“样式”集的任何类型的适配器。所以每个列表可能看起来不同。而不是 100% 的页面只有一种类型的列表 = 很多页面!
  • 至少对于设置“活动”而言,这是一种分类和使用不同控件更改设置的好方法。
猜你喜欢
  • 2018-07-05
  • 2021-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
相关资源
最近更新 更多