Android 使用ItemDecoration的每个项目的边距

示例

您可以使用aRecyclerView.ItemDecoration在RecyclerView中的每个项目周围放置额外的边距。在某些情况下,这可以清理适配器实现和项目视图XML。

public class MyItemDecoration
    extendsRecyclerView.ItemDecoration{

    private final int extraMargin;

    @Override
    public void getItemOffsets(Rect outRect, View view,
            RecyclerView parent,RecyclerView.Statestate) {

        int position = parent.getChildAdapterPosition(view);

        // 在最后一项上增加额外的保证金很容易...
        if (position + 1 == parent.getAdapter().getItemCount()) {
           outRect.bottom= extraMargin; // 单位是px
        }

        // ...或者您可以给RecyclerView中的每个项目都不同
        // 根据其位置的利润率...
        if (position % 2 == 0) {
           outRect.right= extraMargin;
        } else {
           outRect.left= extraMargin;
        }

        // ...或根据商品本身的某些属性
        MyListItem item = parent.getAdapter().getItem(position);
        if (item.isFirstItemInSection()) {
           outRect.top= extraMargin;
        }
    }

    public MyItemDecoration(Context context) {
        extraMargin = context.getResources()
                .getDimensionPixelOffset(R.dimen.extra_margin);
    }
}

要启用装饰,只需将其添加到您的RecyclerView中:

// 在你的onCreate()中
RecyclerView rv = (RecyclerView) findItemById(R.id.myList);
rv.addItemDecoration(new MyItemDecoration(context));