Jetpack插件化学习之AndroidX Paging 大数据列表加载库二--使用

本文详细介绍了如何在Android项目中使用Jetpack的Paging库进行大数据列表的分页加载。从DataSource的创建,到PagedList及LivePagedListProvider的运用,再到Adapter的配置,展示了Paging库在网络数据加载和RecycleView适配器更新上的完整流程。
摘要由CSDN通过智能技术生成

Jetpack插件化学习之AndroidX Paging 大数据列表加载库二–使用

上一篇主要介绍了Paging加载库的主要组件,以及组件之间的工作方式,不是很清楚的可以移步上一篇
Jetpack插件化学习之AndroidX Paging 大数据列表加载库一

本篇主要介绍Paging库如何在项目中使用。
开篇之前,本文的数据来源以及demo代码的书写参考了这位大佬的文章。
使用Paging Library获取网络数据
本篇也是直接加载的网络数据。

首先在项目中添加Paging库依赖

    // androidx  paging
    implementation "androidx.lifecycle:lifecycle-extensions:2.0.0"
    annotationProcessor "androidx.lifecycle:lifecycle-compiler:2.0.0"
    implementation "androidx.paging:paging-runtime:2.1.0-alpha01"

依赖中看到有AndoridX的依赖。关于AndoridX的介绍以及Android到AndroidX的升级

接下来按照Paging的组件,依次创建

  1. DataSource
  2. PagedList&LivePagedListProvider

DataSource

初始化一个PositionalDataSource对象并实现相关方法。loadInitialloadRange


public class PagingItemDataViewModel extends AndroidViewModel {

    public static final int CONTENT_LENGTH = 20;
    public static final int FIRST_PAGE = 1;
    private int mPage = FIRST_PAGE;

//    final List<GankData> resultBeans = new ArrayList<>();

    private LiveData<PagedList<GankData>> mLiveData;

    public PagingItemDataViewModel(@NonNull Application application) {
        super(application);

    }

    public LiveData<PagedList<GankData>> getmLiveData() {
        initPageList();
        return mLiveData;
    }

    private void initPageList() {

        final PositionalDataSource<GankData> positionalDataSource = new PositionalDataSource<GankData>() {
            private int computeCount() {
                //这里的实际计数代码
                return CONTENT_LENGTH;
            }

            /**
             * 网络请求耗时操作
             * @param onHttpRequestListener 网络请求成功的回调
             * @param page 加载到第几页
             */
            private void loadRangeInternal(final OnHttpRequestListener onHttpRequestListener, int page) {
                //这里的实际加载代码
                ManageHttp.getWelfare1(new BaseOnResponseCallBack<List<GankData>>(List.class) {

                    @Override
                    public void onNext(List data, int IDUrl, boolean isCache) {
                        onHttpRequestListener.onNext(data, IDUrl, isCache);
                    }

                    @Override
                    public void onStart(int IDUrl, boolean isCache) {

                    }

                    @Overri
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值