プロジェクトでページングデータを読み込んで更新するのが最も一般的です。SmartRefreshLayoutコントロールを使用して、コントロールをより包括的な更新コントロールに変更します。
githubアドレス:https : //github.com/scwang90/SmartRefreshLayout
1.ホームページは、lib-base(ライブラリ専用のプロジェクト)の更新制御コードベースを紹介します。
api 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //1.0.5及以前版本的老用户升级需谨慎,API改动过大
2.次に、レイアウトファイルxmlにレイアウトを記述します。
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/srl_deal_flow"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srlEnableScrollContentWhenLoaded="true"
app:srlEnableFooterFollowWhenLoadFinished="true">
// RecyclerView 控件
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
3.コントロールの初期化について言うことはあまりありませんが、
4.プルダウンして更新し、プルアップしてネットワークデータを呼び出すメソッドをさらにロードします。
private int page = 1;
// 下面10为offset 偏移量
mSrl_dealFlow.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
mSrl_dealFlow.getLayout().postDelayed(new Runnable() {
@Override
public void run() {
page = 1;
// 四个参数
getRechargeData(DateUtil.getYear(),DateUtil.getMonth(),page,10);
mSrl_dealFlow.finishRefresh();
mSrl_dealFlow.resetNoMoreData();//setNoMoreData(false);
}
},2000);
}
});
mSrl_dealFlow.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
public void onLoadMore(@NonNull final RefreshLayout refreshLayout) {
mSrl_dealFlow.getLayout().postDelayed(new Runnable() {
@Override
public void run() {
if (commonDealFlowAdapter.getCount() > 30) {
ToastUtil.show(getActivity(),"数据全部加载完毕");
refreshLayout.finishLoadMoreWithNoMoreData();//将不会再次触发加载更多事件
} else {
page++;
// 两个参数
getRechargeData(page,10);
refreshLayout.finishLoadMore();
}
}
},2000);
}
});
5. Listコレクションを初期化するときは、データを初期化するときに初期化する必要があります。
@Override
public void initData(Bundle savedInstanceState) {
mRechargeList = ObjectUtil.newArrayList();
getRechargeData(1,10);
}
6.サーバーから返されたデータを処理するときは、ページ値が1、つまり最初のページである場合に注意する必要があります。Listコレクション内のデータをクリアする必要があります。今回はデータを更新します。
private void processRechargeData(String str) {
if(page == 1){
mRechargeList.clear();
}