HTRefreshRecyclerView
是一种基于 RecyclerView 的支持刷新和加载更多功能的控件。根据README文档,基本了解了HTRefreshRecyclerView
的特点以及快速使用的方法。
主要是通过继承HTBaseViewHolder
类来完成,详情的实现示例,可以参考demo。
- 设置刷新视图和加载更多视图:
重写
onInitRefreshView()
和onInitLoadMoreView()
方法设置视图。
- 刷新视图和加载更多视图背景色
使用
setRefreshViewBackgroundResId(int refreshViewBackgroundResId)
方法设置刷新视图的背景色。
- 手指移动距离和刷新控件移动距离比值
使用
setPullDistanceScale(float pullDistanceScale)
方法设置,参数不对则抛出异常。默认比例值是1.8f
。
- 刷新控件的弹簧距离设置(触发刷新事件的距离)
刷新控件的弹簧距离通过设置与刷新控件的高度比例值进行限定,调用
setSpringDistanceScale(float springDistanceScale)
方法设置,参数不对则抛出异常。默认比例值是1.0f
。
- 动画时间设置
使用
setAnimationTime(int animationTime)
设置刷新中动画执行时间,参数不对则抛出异常。默认时间是500ms
。
实现刷新视图变化监听接口HTRefreshUIChangeListener
和加载更多视图变化监听接口HTLoadMoreUIChangeListener
,从而在各个界面操作视图变化。
onReset()
控件的刷新视图重置时回调。
onRefreshPrepare()
刷新视图移动时回调。
onRefreshing()
控件即将处于刷新状态时回调。
onRefreshComplete()
控件刷新操作结束时回调。
onRefreshPositionChange(float scale, float moveDistance, int refreshStatus, HTViewHolderTracker viewHolderTracker)
刷新视图产生位移时回调,可以用于处理基于移动距离或者比值的视图动画操作等。 参数:
scale
的变化范围为0~1.0f
(达到触发刷新条件以后,继续拉动,也保持1.0f
);moveDistance
代表刷新控件移动距离的值(与PULL_DISTANCE_SCALE
计算之后的距离);refreshStatus
表示当前的刷新状态(其值是RefreshStatus
类内,如IDLE
、REFRESH_PREPARE
、REFRESHING
、COMPLETE
);viewHolderTracker
用来记录刷新视图的位移数据,可参考HTViewHolderTracker。
onLoadMoreStart(boolean hasMore)
控件触发加载更多时回调,
hasMore
可以用于视图内容相关的逻辑处理。
onLoadMoreComplete(boolean hasMore)
控件加载更多操作完成时回调,
hasMore
可以用于视图内容相关的逻辑处理。
主要通过XML
布局文件定义,支持vertical_down
(默认)、vertical_up
、horizontal_left
、horizontal_right
方向的刷新和加载更多。
HTRefreshRecyclerView
是基于RecyclerView
实现的控件,一些常用方法和RecyclerView
保持统一(暂时只提供常用的一些方法),如setAdapter()
和setLayoutManager()
方法等,这里就不做详细介绍了。
setEnableScrollOnRefresh(boolean enableScrollOnReFresh)
,设置是否允许刷新的时候,界面滚动setRefreshCompleted(boolean hasMore)
,设置刷新操作完成startAutoRefresh()
,触发自动刷新,刷新状态的视图可见startAutoLoadMore()
,触发自动加载更多,加载更多状态的视图可见setLoadMoreShow(boolean loadMoreShow)
,设置没有更多数据时,加载更多视图的显示样式,默认为一直显示setOnLoadMoreListener(HTLoadMoreListener loadMoreDelegate)
,设置加载更多事件监听,不设置则默认不支持加载更多功能setOnRefreshListener(HTRefreshListener refreshDelegate)
,设置刷新事件监听,不设置则默认不支持刷新功能setRecyclerViewDragListener(HTRecyclerViewDragListener recyclerViewDragListener)
,设置刷新方向的拖拽事件监听setRefreshViewHolder(@NonNull HTBaseViewHolder refreshViewHolder)
,设置自定义的刷新样式,不设置默认使用带箭头的刷新样式setRefreshViewHolderClass(@NonNull Class<? extends HTBaseViewHolder> mViewHolderClass)
,设置全局的自定义的刷新样式RecyclerView getRecyclerView()
,返回控件内被包裹的RecyclerView
对象,建议在当前的刷新控件不能满足某些功能需求的情况下使用
HTRefreshListener
是控件的刷新监听事件回调接口,如果用户希望控件支持刷新功能需要实现该接口。
-
onRefresh()
控件在刷新状态时回调该方法,可以在该方法内处理相关的业务逻辑。刷新完成后必须调用
setRefreshCompleted(boolean hasMore)
方法完成刷新操作。
HTLoadMoreListener
是控件的加载更多监听事件回调接口,如果用户希望控件支持刷新功能需要实现该接口。
-
onLoadMore()
控件在加载更多状态时回调该方法,可以在该方法内处理相关的业务逻辑。加载完成后必须调用
setRefreshCompleted(boolean hasMore)
方法完成加载操作。
HTRecyclerViewDragListener
是控件在刷新方向上的拖拽事件监听接口,如果用户希望控件在拉动刷新或者拖拽列表滚动的时候进行相关操作,需要实现该接口。
onRefreshViewPrepareToMove()
刷新视图产生位移时回调。
onRecyclerViewScroll()
在控件刷新方向上拖拽使列表滚动时回调。该方法基于
RecyclerView.OnScrollListener()
事件实现,如果已经实现该接口,不用再重复添加RecyclerView.OnScrollListener()
事件来监听列表拖拽事件。