在短视频系统源码开发中,短视频内容的刷新有多种操作方式,接下来主要介绍的是下拉刷新的方式,一起来看看吧。
数据刷新
短视频系统源码内容刷新布局采用了SwipeRefreshLayout,实现经典式的下拉刷新控制。
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/srf_video_list"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_little_video"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
模拟数据请求,定义isLoadMoreData判断是刷新数据还是加载更多内容,isLoadingData判断是否正在加载数据,防止短视频系统源码中数据重复请求;
/**
* 数据请求
*/
private void requestNewData() {
if (!isLoadMoreData) {
mRefreshView.setRefreshing(true);
}
isLoadingData = true;
// 模拟网络请求,2秒后进行数据返回
Log.e("PageIndex", String.valueOf(mLastProductIndex));
mHandler.sendEmptyMessageDelayed(0, 2000);
}
Handler接收到消息,模拟接收到网络请求返回数据信息,进行短视频系统源码数据更新;
/**
* 模拟网络请求完毕,数据更新
*/
Handler mHandler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(@NonNull Message msg) {
onVideoListUpdate(VideoBean.getTikTokVideoList());
return false;
}
});
数据更新,如果是刷新,则重新设置适配器内容,如果是记载更多则往适配器结合中加入更多数据内容。
/**
* 数据更新
*
* @param videoList 网络回调获取数据
*/
public void onVideoListUpdate(List<VideoBean> videoList) {
isEnd = videoList == null || videoList.size() < 10;
isLoadingData = false;
if (mRefreshView != null && mRefreshView.isRefreshing()) {
mRefreshView.setRefreshing(false);
}
if (videoList == null) {
return;
}
mLastProductIndex += videoList.size();
if (isLoadMoreData) {
// 加载更多数据
if (mLittleVideoAdapter != null) {
mLittleVideoAdapter.addData(videoList);
}
} else {
// 刷新数据
isEnd = false;
mLittleVideoAdapter.setNewData(videoList);
}
}
以上就是“短视频系统源码开发,下拉刷新控制的实现”的全部内容了,希望对大家有所帮助。