Android RecyclerView addItemDecoration 不会在 RecyclerView 底部添加装饰

Set*_*ast 2 android android-recyclerview

我在网上找不到这个问题的答案,所以答案一定很简单,没有人愿意问,我就是不知道。

本质上,我想在我的 recyclerView 和 RecyclerView 底部的每个项目之间添加一条水平线。我找到了一种在 RecyclerView 中的每个项目之间放置分隔线的方法,但在最后没有

根据文档(在这里找到:https : //developer.android.com/reference/android/support/v7/widget/RecyclerView.html#addItemDecoration ( android.support.v7.widget.RecyclerView.ItemDecoration , int) )

将负整数放入 addItemDecoration(RecyclerView.ItemDecoration decor, int index)。应该解决这个问题,说明:

如果此值为负,则装饰将添加到最后。

这是我的自定义 RecyclerView 的构造函数方法:

public CustomRecyclerView(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
    setHasFixedSize(true);
    setLayoutManager(new LinearLayoutManager(context));
    decor = new HorizontalDividerItemDecoration.Builder(context).build();
    addItemDecoration(decor, -1);
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我在 addItemDecoration() 中使用了一个负整数,但我无法弄清楚为什么它没有按预期方式工作。

任何帮助将不胜感激!

Set*_*ast 6

按照 Janice Kartika 的建议,我将代码复制并粘贴到我的项目中。在我复制粘贴 Janice 的代码后,Android Studio 给了我这个建议:

替换为 android.support.v7.widge.DividerItemDecoration?

旧版本的 RycyclerView 库不包含分隔符装饰器,但在支持演示中作为示例提供了一个分隔符装饰器。这个分隔符类已被广泛复制/粘贴到各种项目中。

在支持库的最新版本中,现在包含分隔符装饰器,因此您可以使用“内置”版本 android.support.v7.widget.DividerItemDecoration 替换自定义副本

因此,不要像这样使用 Horizo​​ntalDividerItemDecoration(它是我们导入的外部库的一部分):

decor = new HorizontalDividerItemDecoration.Builder(context).build();
addItemDecoration(decor, -1);
Run Code Online (Sandbox Code Playgroud)

我使用了默认的“DividerItemDecoration”,如下所示:

decor = new DividerItemDecoration(context, DividerItemDecoration.VERTICAL);
addItemDecoration(decor);
Run Code Online (Sandbox Code Playgroud)

它奏效了。事实证明,如果您不将“int index”放入 addItemDecoration,它将默认为 -1 并默认将装饰添加到底部。