【发布时间】:2016-10-17 00:37:23
【问题描述】:
由于 RecyclerView 使用 ViewHolders,这意味着您必须为每一行预先定义布局。但是如果每一行都需要显示不同数量的视图呢?
例如,假设我正在创建一个即时消息应用程序,用户可以在其中将图片附加到消息中。他们可以附加从 0 到 x 张图片的任何位置。当您创建 RecyclerView 来显示这些图片(从服务器下载的)时,如何使行包含正确数量的 ImageView 以显示它们?
我有几种方法可以做到这一点,但似乎没有一个是好的选择。
- 在 onBindViewHolder 中创建 ImageView,将它们添加到 ViewHolder 中的布局中。 (这不是 ViewHolder 试图阻止的吗?这可能会很滞后,尤其是在有很多图片的情况下)
- 将用户可以附加到消息的图片数量限制为 x,然后将 x 个 ImageView 添加到设置为不可见/消失的布局中。在onBindViewHolder中,设置ImageViews显示图片,并设置这些ImageViews可见。 (如果我允许附加图片和视频怎么办?那么我还需要添加 x ImageViews 和 x VideoViews 吗?)
- 在每个 RecyclerView 项中放置一个 GridView 并填充 GridView 在 onBindViewHolder 里面。 (我认为这对 选项 #1,因为它几乎是一样的?)
这就是我能想到的。是否有任何其他选项专为我没有遇到过的这种情况而设计?或者解决这个问题的典型方法是什么?
【问题讨论】:
标签: java android android-recyclerview