推荐开源项目:Fountain - 智能且简洁的分页库

推荐开源项目:Fountain - 智能且简洁的分页库

fountainAndroid Kotlin paged endpoints made easy项目地址:https://gitcode.com/gh_mirrors/fo/fountain

Fountain Banner

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
)
  1. pagedList: 生活数据的PagedList形式,表示不断变化的数据流。
  2. networkState: 当新页面加载时通知网络状态变化的数据流。
  3. refresh: 刷新所有数据的方法。
  4. refreshState: 反映刷新请求状态的数据流。
  5. retry: 数据加载失败后的重试方法。

使用Listing,你可以轻松地管理所有的数据流和UI状态更新,非常灵活!

这个库特别适用于处理分页端点,但也支持非分页端点,允许你在不使用分页的服务上充分利用[Listing]的功能。

Fountain提供了两种方式从分页服务创建Listing

  1. **网络支持:**基于常见的Retrofit服务实现,提供一个Listing。请注意,此处获取的实体不会被保存在内存或磁盘上。
  2. **缓存+网络支持:**同样基于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

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

滑辰煦Marc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值