7

# 安卓中实现分页加载方案总结(一)——基于SmartRefreshLayout

 1 year ago
source link: https://blog.51cto.com/baorant24/5723001
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

# 安卓中实现分页加载方案总结(一)——基于SmartRefreshLayout

精选 原创

baorant24 2022-09-29 15:16:46 博主文章分类:Android ©著作权

文章标签 加载 分页 安卓 smartrefresh 文章分类 Java 编程语言 阅读数170

安卓中实现分页加载方案总结(一)——基于SmartRefreshLayout

项目中多场景使用到了列表分页加载的操作,比如消息列表,先总结一下基于SmartRefreshLayout的分页加载方案。

一、导入SmartRefreshLayout相关jar包

    // 下拉刷新
    implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0'
    implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'

二、xml布局文件引入SmartRefreshLayout

     <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        ...>
        <com.scwang.smartrefresh.layout.SmartRefreshLayout
                android:id="@+id/refreshLayout"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <com.scwang.smartrefresh.layout.header.ClassicsHeader
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />


                <androidx.recyclerview.widget.RecyclerView
                    android:id="@+id/rv_list"    
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@color/transparent"
                    android:overScrollMode="never"
                    tools:listitem="@layout/list_message_item" />

                <com.scwang.smartrefresh.layout.footer.ClassicsFooter
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />

            </com.scwang.smartrefresh.layout.SmartRefreshLayout>
         ...
    </LinearLayout>

三、activity(fragment)中进行相应调用

public class MyActivity extends PermissionActivity implements View.OnClickListener{
    ...
    ...
    // 1、page变量,标记每次请求的页面number
    private int page = 1;
    private SmartRefreshLayout refreshLayout;

    @Override
    protected int getContentLayoutId() {
        return R.layout.activity_my_carrier;
    }

    @Override
    protected void initWidget() {
        ...
        ...
        refreshLayout.setOnRefreshListener(new OnRefreshListener() {
            @Override
            public void onRefresh(RefreshLayout refreshLayout) {
                prePage = page;
                // 刷新的时候也是加载第一页的数据,和第一次进入一致
                page = 1;
                refreshLayout.setEnableLoadMore(true);
                requestWeb();
            }
        });
        // 2、加载更多监听,通过page获取新增page的页面数据
        refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
            @Override
            public void onLoadMore(RefreshLayout refreshLayout) {
                page++;
                requestWeb();
            }
        });
    }

    @Override
    protected void intiData() {
        refreshLayout.autoRefresh();
    }

    // 请求网络数据
    private void requestWeb(){
            // 通过传入page和pageSize参数从后台获取该页的数据。
            RetrofitHelper.getInstance().getInformation(page, 10)
                .subscribe(new BaseObserver<PageInfo<Information>>() {
                    @Override
                    public void onNext(@NonNull PageInfo<Information> rsp) {
                        loading.setValue(false);
                        if (null != rsp.getList()) {
                            // 3、获取查询到的数据,增加到我们的data数组中。
                            infoMutableLiveData.setValue(rsp);
                        }
                    }

                    @Override
                    public void onError(Throwable e) {
                        super.onError(e);
                        loading.setValue(false);
                    }
                });
    }
    ...
    ...
}

本文简单总结了下,基于SmartRefreshLayout实现分页加载和刷新的思路,可供参考,持续优化。

  • 收藏
  • 1评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK