RecyclerView 的一些实用用法

自从谷歌推出RecyclerView 以来,ListView 逐渐的淡出历史舞台,RecyclerView使用的越来越多,但是尽管RecyclerView有那么多的优势,但是我们在平时的使用中可能还是会遇到一些小问题。

  • 给RecyclerView添加默认的分割线

RecyclerView 不像ListView那样可以直接在布局的时候设置Divider,所以默认RecyclerView 是没有分割线的,但是官方也是默认提供了添加的途径的,方法如下:

addItemDecoration(new DividerItemDecoration(getActivity(),DividerItemDecoration.VERTICAL));
  • 给RecyclerView 的item 添加点击效果

RecyclerView 添加点击效果不像ListView 直接在里面设置listSelector即可,RecyclerView 里面是没有这个属性的,而且你如果按照ListView的方法来添加很可能要失望,不过RecyclerView 的方法也简单,最简单的办法就是在item中添加如下代码:

android:background="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
  • Recycleview 纵向间距设置
/**
 * linearlayout item 纵向分割器
 */
public class SpaceItemDecoration extends RecyclerView.ItemDecoration {
    int mSpace;
    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
        super.getItemOffsets(outRect, view, parent, state);
        outRect.left = mSpace;
        outRect.right = mSpace;
        outRect.bottom = mSpace;
        if (parent.getChildAdapterPosition(view) == 0) {
            outRect.top = mSpace;
        }
    }

    public SpaceItemDecoration(int space) {
        this.mSpace = space;
    }
}
  • Recycleview 宫格间距设置
public class GridSpaceItemDecoration extends RecyclerView.ItemDecoration {
    private int padding;

    public GridSpaceItemDecoration(Context context, int space) {
        padding = space;
    }

    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
        super.getItemOffsets(outRect, view, parent, state);
        //outRect就是你那个item条目的矩形
        outRect.left = padding;  //相当于 设置 left padding
        outRect.top = padding;   //相当于 设置 top padding
        outRect.right = padding; //相当于 设置 right padding
        outRect.bottom = padding;  //相当于 设置 bottom padding
    }
}

你可能感兴趣的:(RecyclerView 的一些实用用法)