Android App开发中RecyclerView控件的基本使用教程

2019-12-10 18:28:08王振洲

Item的布局文件

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://www.easck.com/apk/res/android"
  android:layout_width="match_parent"
  android:background="#44ff0000"
  android:layout_height="wrap_content" >

  <TextView
    android:id="@+id/id_num"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:gravity="center"
    android:text="1" />
</FrameLayout>

这么看起来用法与ListView的代码基本一致哈~~ 
看下效果图:

Android,App开发,RecyclerView

看起来好丑,Item间应该有个分割线,当你去找时,你会发现RecyclerView并没有支持divider这样的属性。那么怎么办,你可以给Item的布局去设置margin,当然了这种方式不够优雅,我们文章开始说了,我们可以自由的去定制它,当然我们的分割线也是可以定制的。

ItemDecoration

我们可以通过该方法添加分割线: 

mRecyclerView.addItemDecoration() 

该方法的参数为RecyclerView.ItemDecoration,该类为抽象类,官方目前并没有提供默认的实现类(我觉得最好能提供几个)。 
该类的源码:

public static abstract class ItemDecoration {

public void onDraw(Canvas c, RecyclerView parent, State state) {
      onDraw(c, parent);
 }


public void onDrawOver(Canvas c, RecyclerView parent, State state) {
      onDrawOver(c, parent);
 }

public void getItemOffsets(Rect outRect, View view, RecyclerView parent, State state) {
      getItemOffsets(outRect, ((LayoutParams) view.getLayoutParams()).getViewLayoutPosition(),
          parent);
}

@Deprecated
public void getItemOffsets(Rect outRect, int itemPosition, RecyclerView parent) {
      outRect.set(0, 0, 0, 0);
 }