由于RecyclerView使用ViewHolders,这意味着您必须为每一行预定义布局。但是,如果每行需要显示可变数量的视图呢?
例如,假设我正在创建一个即时消息应用程序,用户可以将图片附加到消息中。他们可以附加从0到x图片的任何地方。当您创建RecyclerView以显示这些图片(从服务器下载)时,如何使行包含正确数量的ImageView以显示它们?
有几种方法可以让我想到这样做,但没有一种方法看起来像是不错的选择。
这就是我所能想到的。有没有其他选择是针对我没有遇到的这种情况而设计的?或者针对这个问题采取的典型方法是什么?
答案 0 :(得分:0)
您需要创建一个异构的RecyclerView
,它会显示多个不同的ViewHolder
。有几种方法可以实现这一目标。
基本方法是,根据与RecyclerView.Adapter
中每个项目关联的照片/视频数量,您将覆盖getItemViewType(int position)
(属于RecyclerView.Adapter
类的方法)返回不同的int
。此int
是传递到viewType
的{{1}}参数。然后,您将使用基于createViewHolder(ViewGroup parent, int viewType)
参数的正确ViewHolder
/布局。
有关优秀教程,请参阅here。
如果您不介意使用库替代方法,我建议使用AdapterDelegates。