首页
学习
活动
专区
圈层
工具
发布

使用 Paging 3 实现分页加载

Paging 3 亮点 Paging 3 的 API 对分页加载时可能需要实现的常见功能提供了支持: 跟踪获取前一页或后一页所需要的参数; 当用户滚动到现有数据的末尾时,自动请求正确的下一页; 确保不会同时触发多个请求...我们还让 Paging 3 的一些组件向后兼容 Paging 2.0。因此,如果您已经在应用中使用了 Paging,则可以逐步 迁移至 Paging 3。...下图为您应用的各个层级中推荐直接接入 Paging 的 Android 应用架构: ? Paging 组件及其在应用架构的集成 定义数据源 数据源的定义取决于您从哪里加载数据。...您可以实现 load() 函数来从数据源获取分页数据,并返回加载好的数据和加载前后页的参数信息。...请参阅以下资源开始使用 Paging: Android 开发文档|Paging 3 库概述 Codelab|Android Paging 代码示例|Paging With Network Sample

2.3K31

Android Jetpack架构组件(九)之Paging

一、Paging简介 在Android应用开发中,我们经常需要以列表的方式来展示大量的数据,这些数据可能来自网路,也可以来自本地的数据库。为了避免一次性加载大量的数据,对数据进行分页就显得很有必要。...[在这里插入图片描述] 如上图所示,主要的步骤如下: 使用DataSource从服务器获取或者从本地数据库获取数据。 将数据保存到PageList中。...三、Paging3 3.1 概述 Paging是JetPack框架提供的一个分页库,它可以帮助开发者从本地存储或通过网络加载显示数据,不过由于历史原因,早期的Paging存在各种使用上的问题,因此Android...3.1.3 Paging3应用架构 下面是Android官方推荐的接入 Paging3的应用架构图。...Paging 3的数据源可以是PagingSource,也可以是RemoteMediator,它们的区别如下。

4.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Jetpack 系列之Paging3,看这一篇就够了~

    前言 许久没有更新Jetpack系列的文章了,本篇文章为大家分享分页库Paging3的使用,如果你还没有看过我Jetpack其他的文章,可以移步至链接: Android JetPack系列文章 ,持续更新中...而Paging3是Paging库当前的最新版本,仍处于测试版本,相比较于Paging2的使用就简洁多了。...PagingSource 一次加载的项目数。...Paging的加载状态 Paging3 为我们提供了获取Paging加载状态的方法,其中包含添加监听事件的方式以及在adapter中直接显示的方式,首先我们来看监听事件的方式 使用监听事件方式获取加载状态...除此之外,Paging3中还有一个比较重要的RemoteMediator,用来更好的加载网络数据库和本地数据库,我们后续有机会再为大家单独分享吧~ 2020年11月21日更新 paging3的设计理念是不建议对列表数据直接修改

    2.4K20

    kotlin--综合运用Hilt、Paging3、Flow、Room、Retrofit、Coil等实现MVVM架构

    ,利用Paging3实现列表功能,Paging3和Paging2一样,支持数据库缓存 一、依赖 主项目gradle中导入hilt插件 dependencies { classpath...我们就可以从数据库获取PagingSource,传递给后续的Pager @OptIn(ExperimentalPagingApi::class) class MovieRemoteMediator(...:Repository 定义一个Repository接口获取FlowPagingDataT>>数据,T应该为MovieItemModel,因为对外(ViewModel)而言,使用的都是MovieItemModel...网络对象,对内使用的才是MovieEntity数据库对象 interface RepositoryT : Any> { fun fetchList(): FlowPagingDataT>>...binding.refreshLayout.isRefreshing = it.refresh is LoadState.Loading } } 十、App Starup实现无网络数据组件初始化 RemoteMediator中可以在无网络时从数据库获取数据

    4.2K31

    Jetpack 系列之Paging3,看这一篇就够了~

    前言 许久没有更新Jetpack系列的文章了,本篇文章为大家分享分页库Paging3的使用,如果你还没有看过我Jetpack其他的文章,可以移步至链接: Android JetPack系列文章 ,持续更新中...而Paging3是Paging库当前的最新版本,仍处于测试版本,相比较于Paging2的使用就简洁多了。...PagingSource 一次加载的项目数。...Paging的加载状态 Paging3 为我们提供了获取Paging加载状态的方法,其中包含添加监听事件的方式以及在adapter中直接显示的方式,首先我们来看监听事件的方式 使用监听事件方式获取加载状态...除此之外,Paging3中还有一个比较重要的RemoteMediator,用来更好的加载网络数据库和本地数据库,我们后续有机会再为大家单独分享吧~ 2020年11月21日更新 paging3的设计理念是不建议对列表数据直接修改

    3.9K10

    获取数据并绑定到 UI | MAD Skills

    我们使用了 PagingSource 来为我们的应用获取并使用数据,以及用 PagingConfig 来创建能够提供 FlowPagingData> 给 UI 消费的 Pager 对象。...我们可以调用该方法来创建基于用户输入搜索词的 FlowPagingData>。...Flow 给 UI 注意 cachedIn 运算符的使用 在 UI 中消费 PagingData 首先我们要做的就是将 RecyclerView Adapter 从 ListAdapter 切换到 PagingDataAdapter...ListAdapter 切换到 PagingDataAdapter 接下来,我们开始从 PagingData Flow 中收集数据,我们可以这样使用 submitData 挂起函数将它的发射绑定到 PagingDataAdapter...我们还可以传入参数实现当出现错误时重试加载,我将会在下一篇文章中详细介绍。 后续 我们已经将 PagingData 绑定到了 UI 上!

    1.3K20

    Jetpack新成员,Paging3从吐槽到真香

    所以即使你之前没有学习过Paging的用法也没有关系,把Paging 3当成是一个全新的库去学习就可以了。...另外这里还引入了Retrofit的库,因为待会我们会从网络上请求数据,并通过Paging 3进行分页展示。...接下来调用刚才在GitHubService中定义的searchRepos()接口,并把page和pageSize传入,从服务器获取当前页所对应的数据。...可以看到,GitHub上Android相关的开源库已经成功显示出来了。并且你可以不断往下滑,Paging 3会自动加载更多的数据,仿佛让你永远也滑不到头一样。...最后,如果你需要获取Paging3Sample项目的源码,请访问以下地址: https://github.com/guolindev/Paging3Sample 另外,如果想要学习Kotlin和最新的Android

    3K20

    再探Kotlin 跨平台——迁移Paging分页库至KMM

    迁移过程 初衷 据Cash App称,他们想在跨平台中使用分页逻辑,但是AndroidX Paging只支持Android平台。...最主要的是,paging-common中的API与AndroidX 下的API完全相同,仅仅是将包从androidx.paging迁移到了app.cash.paging中,所以这部分的使用我们直接按照AndroidX...如果之前项目已经使用了AndroiX的Paging库,则可以在Android平台上无缝迁移。...如果你之前从未使用过Paging库,可以参考许久之前我写的两篇相关文章: 在View中使用Paging3分页库 在Compose中使用分页库 接下来我们就以multiplatform-paging-samples...项目架构 从项目架构中可以看出在共享模块中,只有iosMain并没有AndroidMain,这是因为我们前面所讲到的针对Android平台是可以无缝迁移的。

    1.6K20

    Android Jetpack系列 之分页库Paging3(一)

    前言 许久没有更新Jetpack系列的文章了,本篇文章为大家分享分页库Paging3的使用,如果你还没有看过我Jetpack其他的文章,可以移步至链接: Android JetPack系列文章 ,持续更新中...而Paging3是Paging库当前的最新版本,仍处于测试版本,相比较于Paging2的使用就简洁多了。...PagingSource 一次加载的项目数。...,从而提升用户体验 还有一些其他参数这里就不一一介绍了,从构造方法的源码中可以看出pageSize这个参数是必填的,其他的是可选项,所以我们这里传了1 定义RecycleViewAdapter 这一步,...当然在实际开发中,上面的代码会有很多问题,以及Paging为我们提供了更多且有用的功能,我们将在下一篇中继续为大家分享~ Android Jetpack系列 之分页库Paging3(二)~敬请期待

    4.6K30

    JetPack--Paging2

    Paging由分为三个模块 1.DataSource:数据从该模块中获取,数据可以来源于网络、本地数据库等 2.PagedList:负责具体获取数据的逻辑,何时获取、加载下一页、预加载等 3.PagedListAdapter...:RecyclerView的adapter需要继承它,内部做了一系列处理 一、Paging上手 1.PositionalDataSource PositionalDataSource适合于从任意位置获取数据的情况...,入参为开始点和数据量大小 首先我们要获取网络数据、使用LiveData、Paging等,需要添加依赖: implementation 'com.squareup.retrofit2:retrofit...public/p2616903233.webp", "rate":"6.1" } ] 直接返回一个列表,我们就不需要Movies类了,修改下api: package com.aruba.paging3....api; import com.aruba.paging3.entity.Movie; import com.aruba.paging3.entity.Movies; import java.util.List

    1.7K30

    Android Architecture Paging Library详解 | Google IO大会上的最新发布

    许多app经常性从大量数据源里加载数据,但是在某个时刻却只需要展示这些数据的一小部分。Paging library可以帮助你的app观察和展示一个合理的数据集合。...>>>> Paging Library 库的架构 ? 从图中可以看出,Paging是围绕PagedList为中心的,遵循数据驱动的思想。...PositionalDataSourceT>:适用于数据总量固定,支持从特定位置加载数据的场景。比如返回从1200条开始的200条数据。...>>>> PagedList PagedList从DataSource中获取数据,通过PagedList.Config 可以配置一次加载的数量以及预加载的数量,它也为RecyclerView.Adapter...,可以返回一个LiveData对象 3、构建数据源对象 ?

    1.8K20

    android paging 库介绍

    1.paging库简介 Paging 使您的应用程序配合RecyclerView更容易从数据源中高效优雅地加载所需的数据,不会因为数据库数据量大而造成查询时间过长。说白了就是分页加载的优化。...ContiguousPagedList和TiledPagedList之后再介绍 (3)DataSource DataSource从字面意思理解是一个数据源,其中key对应加载数据的条件信息...在里面可以看到 mStorage.appendPage 2.自己动手实现一个 paging demo 首先我们来简单看一下Paging库的工作示意图,主要是分为如下几个步骤 使用DataSource从服务器获取或者从本地数据库获取数据...实现) PageListAdapter通知RecyclerView更新 (1)使用DataSource从服务器获取数据 这里我们就用官方demo的url做测试。...参考 Android Paging library详解(一) Android Paging library详解(二) Android Paging

    1.6K20

    Google 推荐在 MVVM 架构中使用 Kotlin Flow

    =gold_browser_extension) ,这个项目主要包了以下功能: 自定义 RemoteMediator 实现 network + db 的混合使用 ( RemoteMediator 是 Paging3...在 Google 发布的 Jetpack 的最新成员 Paging3,在其内部的源码实现也是使用的 Flow,关于 Paging3 的使用可以参考以下链接: Jetpack 成员 Paging3 实践以及源码分析...(一)(https://juejin.im/post/6844904193468137486) Jetpack 新成员 Paging3 网络实践及原理分析(二)(https://juejin.im/post...RxJava 那么多傻傻分不清楚的操作符,实际上在项目中常用的可能只有几个例如 Observable 、 Flowable 、 Single 等等,如果我们不去了解背后的原理,造成内存泄露是很正常的事,大家可以从...Kotlin Flow 在 ViewModel 中的使用 在 ViewModel 中使用 Flow 之前在 Jetpack 成员 Paging3 实践以及源码分析(一) 文章也有提到, 这里我们在深入分析一下

    5.7K21
    领券