欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

RecyclerView 的一些实用用法

程序员文章站 2024-01-22 21:32:52
...

自从谷歌推出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
    }
}