在CardViews中嵌入RecyclerView的元素

时间:2017-04-08 12:39:58

标签: android android-recyclerview android-cardview android-viewholder

我有RecyclerView显示文档每天的修改列表。项目为TextView,其值为“第3行更新为...”,“第5行已删除”等。ViewHolder处理2种类型的视图:

  • 标题:这些日子。这些也很简单,TextView也是粗体,更大等等。
  • 日志:这就是我所说的:“第3行更新......”等。

我想要的是每个“日”及其相应的日志都嵌入在CardView中。但是文档每天可以进行大量修改(> 100)。因此,以编程方式创建一个以CardView为根的布局,在其上调用100次addView()以添加每个日志,然后将此布局传递给RecyclerView对我来说似乎不是一个好主意。 / p>

他们以任何方式划分将嵌入CardView内的“positionStart”和“positionEnd”视图吗?在我看来,这是不可能的,或者通过在TextView内以编程方式添加每个CardView,但它会减慢视图的绑定并打破ViewHolder模式。我是对的还是他们没有想到的解决方案?

1 个答案:

答案 0 :(得分:1)

你有3个选项来实现这一目标"分组在一张卡片中"行为。

  1. (如上所述)您自己创建布局并将整个内容放入recyclerview中。这可能是最糟糕的解决方案,因为它首先否定了回收查看的想法。

  2. 您只需将每件商品包裹在CardView中(并将转角半径设置为0dp)。
    在< 21个设备(我认为)会有一些额外的填充,每个项目都会显示为自己的卡片,但在更高的API版本中,这些卡片将彼此相邻并且只有一些"接缝"它们之间。角落里的阴影也有点儿,但这可能是最简单,最便宜的解决方案。

    或者,您也可以创建一个自定义视图来修复上面提到的错误(两者之间的边距和阴影),并使用您自己的视图来包装视图。 (我相信这是收件箱应用程序的功能,如果我没记错的话,它还具有卡片中的列表。)

  3. 您使用ItemDecoration。对于这种方法,您需要一种稳定的数据集设置,但如果它只是标题和日志,您可以在标题上方绘制阴影,在每个项目的左侧和右侧绘制边框,并在最后一个项目下方绘制阴影登录。这也需要一些设置,如果你引入更多的视图类型,你还必须修改这个代码(它高度依赖于你的数据集)

  4. 1。方法可能是最糟糕的想法。它适用于小型列表。

    2。方法可以正常工作,但您要么必须创建自己的自定义视图,要么使用" bugged"低api级别的版本。

    3。方法是我尝试过的一次有趣的方法,并且可以使用,但是您的数据,适配器和装饰之间会有一些额外的依赖关系。您可以看到此decoration here on GitHub的示例。它只会在所有项目周围留下阴影。