SmartRefreshLayoutプルダウンリフレッシュおよびプルアップしてより多くのデータ処理をロード

プロジェクトでページングデータを読み込んで更新するのが最も一般的です。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();
        }

 

 

 

 

 

 

 

 

 

公開された57元の記事 ウォンの賞賛0 ビュー10000 +

おすすめ

転載: blog.csdn.net/java9832/article/details/104829965