推荐开源项目:Fountain - 智能且简洁的分页库
fountainAndroid Kotlin paged endpoints made easy项目地址:https://gitcode.com/gh_mirrors/fo/fountain
Fountain是一个为Android开发设计的Kotlin库,专用于处理基于增量页数(如1, 2, 3等)的分页接口。利用谷歌的Android架构组件,尤其是Paging库,它简化了与分页服务的交互。
**重要提醒:**由于Fountain的所有功能都已经在官方的Paging3库中实现,Fountain现在已被废弃,我们建议您直接使用官方库进行开发。
项目简介
Fountain的目标是提供一个简单的方式从通用服务规范中获取[Listing]组件。[Listing]是管理分页列表的核心工具,提供了以下五个关键元素:
data class Listing<T>(
val pagedList: LiveData<PagedList<T>>,
val networkState: LiveData<NetworkState>,
val refreshState: LiveData<NetworkState>,
val refresh: () -> Unit,
val retry: () -> Unit
)
- pagedList: 生活数据的PagedList形式,表示不断变化的数据流。
- networkState: 当新页面加载时通知网络状态变化的数据流。
- refresh: 刷新所有数据的方法。
- refreshState: 反映刷新请求状态的数据流。
- retry: 数据加载失败后的重试方法。
使用Listing
,你可以轻松地管理所有的数据流和UI状态更新,非常灵活!
这个库特别适用于处理分页端点,但也支持非分页端点,允许你在不使用分页的服务上充分利用[Listing]的功能。
Fountain提供了两种方式从分页服务创建Listing
:
- **网络支持:**基于常见的Retrofit服务实现,提供一个
Listing
。请注意,此处获取的实体不会被保存在内存或磁盘上。 - **缓存+网络支持:**同样基于Retrofit服务,但增加了缓存支持,并使用DataSource来存储数据。推荐使用Room作为DataSource,但你可以选择任何其他DataSource。
Fountain支持Retrofit的RxJava2和Coroutine适配器,以及不使用特定适配器的简单Retrofit调用。
下载与集成
通过JitPack将库添加到项目依赖:
repositories {
maven { url "https://jitpack.io" }
}
dependencies {
// 如果你希望在没有特殊适配器的情况下使用Retrofit服务,请引入此依赖
implementation 'com.github.xmartlabs.fountain:fountain-retrofit:0.5.0'
// 如果你希望使用Coroutine适配器,请引入此依赖
implementation 'com.github.xmartlabs.fountain:fountain-coroutines:0.5.0'
// 如果你希望使用RxJava2适配器,请引入此依赖
implementation 'com.github.xmartlabs.fountain:fountain-rx2:0.5.0'
}
Fountain依赖于Kotlin 1.3,如果你使用的是Kotlin 1.2.x,请使用Fountain 0.4.0版本。
虽然Fountain处于实验阶段,但我们相信API不会有大的变动。
使用指南
查看完整的文档了解如何使用。
工厂构造函数
每个依赖项都有一个静态工厂对象类:
- FountainCoroutines: 用于从使用Coroutine适配器的Retrofit服务获取
Listing
。 - FountainRetrofit: 用于从不使用特殊适配器的Retrofit服务获取
Listing
。 - FountainRx: 用于从使用RxJava2适配器的Retrofit服务获取
Listing
。
每个静态工厂都有一系列构造函数:
createNetworkListing
: 用于从分页Retrofit服务获取Listing
。createNotPagedNetworkListing
: 用于从非分页Retrofit服务获取Listing
。createNetworkWithCacheSupportListing
: 用于从带有缓存支持的分页Retrofit服务获取Listing
。createNotPagedNetworkWithCacheSupportListing
: 用于从带有缓存支持的非分页Retrofit服务获取Listing
。
网络支持
根据Retrofit服务实现提供Listing
组件。在这里,获取的实体是短暂的,不会被保存在内存或磁盘上。
分页端点的网络支持
对于分页端点,你可以通过静态工厂类的createNetworkListing
构造函数获取Listing
。这需要一个NetworkDataSourceAdapter
参数,该参数提供处理分页所需的所有操作。
NetworkDataSourceAdapter
有两个主要属性:检查是否可以获取页面的方法,以及获取页面的方法。
非分页端点的网络支持
对于非分页端点,使用createNotPagedNetworkListing
构造函数。它仅需一个NotPagedPageFetcher
参数,用于从服务源获取数据。
总结
Fountain是一个强大的工具,简化了Android应用中的分页数据处理。无论你的服务是分页还是非分页,它都能提供灵活的解决方案。结合Android架构组件,Fountain使你能更专注于应用程序的核心业务逻辑,而不是数据加载的复杂性。
尝试一下Fountain,让你的分页体验变得更智能、更简单吧!
fountainAndroid Kotlin paged endpoints made easy项目地址:https://gitcode.com/gh_mirrors/fo/fountain