RecyclerView使用方法举例(2)

  本文紧接着RecyclerView使用方法举例(1),继续介绍RecyclerView的一些用法。

1. 自定义ItemDecoration分隔item

1.1. 实现SpacesItemDecoration

  可以通过加入自定义ItemDecoration的方式,为RecyclerView中的item添加装饰。如下面的SpacesItemDecoration为item四周添加指定的间距。

  通过重写 getItemOffsets() ,为item四周加入指定的offset,使得各个item能够分隔开来。

  完整文件在这里

1.2. 使用SpacesItemDecoration

  使用自定义的ItemDecoration,只需使用RecyclerView的 addItemDecoration() 即可:

完整文件在这里

2. 自定义OnScrollListener实现无限滚动

2.1. 实现EndlessRecyclerOnScrollListener

  RecyclerView支持通过添加OnScrollListener的方式来获取滚动距离。下面通过自定义OnScrollListener,实现“无限滚动”的效果,当列表滚动到接近末尾的位置时,自动加载更多的数据。

  实现 EndlessRecyclerOnScrollListener 如下:

重写 onScrolled() ,获取当前可见item个数 onScrolled ,当前总item个数 totalItemCount ,以及当前可见第一个item位置 firstVisibleItem ,此时 totalItemCount - firstVisibleItem - visibleItemCount 即为在当前可见item后面还不可见的剩余item个数,如果剩余item个数小于阈值 VISIBLE_THRESHOLD ,则增加页面计数 currentPage ,并调用 onLoadMore() 来加载更多数据。 onLoadMore() 由继承 EndlessRecyclerOnScrollListener 的具体子类实现。

  完整文件在这里

2.2. 使用EndlessRecyclerOnScrollListener

  使用自定义的OnScrollListener,只需使用RecyclerView的 addOnScrollListener() 即可:

这里 fetchMovies(current_page) 用于请求第 current_page 页的数据。

  完整文件在这里

3. 添加动画效果

  使用ItemAnimator可以为item的添加、移动和移除添加动画效果,有一些很方便的库可以使用,比如recyclerview-animators