Android 如何避免装饰第一排recyclerview

Android 如何避免装饰第一排recyclerview,android,android-recyclerview,Android,Android Recyclerview,我如何才能不装饰我的recyclerview中的第一行,使我的项目装饰器每隔一行装饰一次呢?在onBindView方法中,测试位置变量是否为0。只需在 @Override public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) { int childCount = parent.getChildCount(); for (int i = 0; i < childCount

我如何才能不装饰我的recyclerview中的第一行,使我的项目装饰器每隔一行装饰一次呢?

在onBindView方法中,测试位置变量是否为0。

只需在

@Override
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
    int childCount = parent.getChildCount();
    for (int i = 0; i < childCount; i++) {
     }
   }
在您的RecyclerView.Item装饰类中


另外,您还可以在

上找到了解更多信息的好方法,只需在您的自定义RecyclerView.ItemDecoration中检查第一个位置和“return”。更确切地说,是这样的:

@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
    super.getItemOffsets(outRect, view, parent, state);
    int position = parent.getChildAdapterPosition(view);

    if (position == RecyclerView.NO_POSITION || position == 0) {
        return;
    }

    ...The rest of your decorator logic goes here...
}

同意科雷尔的回答

我的代码如下所示:

    @Override public void getItemOffsets(
        Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
    int l, t, r, b;
    l = leftMargin;
    t = topMargin;
    r = rightMargin;
    b = bottomMargin;
    if (mIgnoreAfterLast && parent.getChildAdapterPosition(view) == parent.getAdapter().getItemCount() - 1) {
        if (mHorizontal) {
            r = 0;
        } else {
            b = 0;
        }
    }
    if (mIgnoreBeforeFirst && parent.getChildAdapterPosition(view) == 0) {
        if (mHorizontal) {
            l = 0;
        } else {
            t = 0;
        }
    }
    outRect.set(l, t, r, b);
}