使用recyclerview的时候难免要添加分割线,但是它又不像listview一样可以 在xml文件里面直接添加属性就可以方便修改。
reycclerview需要我们自己写,mRecyclerView.addItemDecoration(ItemDecoration decor)属性,不同列表又有不同分割线样式,这样就需要自己重新定义一个分割线类。
public class SpacesItemDecoration extends RecyclerView.ItemDecoration {
private int space;
public SpacesItemDecoration(int space) {
this.space = space;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
outRect.left = space;
outRect.right = space;
outRect.top = space;
outRect.bottom = space;
//根据item位置设置边距值
if (parent.getChildAdapterPosition(view) % 2 == 0) {
outRect.bottom = 0;
outRect.left = 0;
}
if (parent.getChildAdapterPosition(view) % 2 == 1) {
outRect.bottom = 0;
outRect.right = 0;
outRect.left = 0;
}
if (parent.getChildAdapterPosition(view) == 0 || parent.getChildAdapterPosition(view) == 1) {
outRect.top = 0;
}
}
效果如下: