前言 大约在两年前,写了一篇Jetpack 系列之Paging3,看这一篇就够了~,本篇文章主要来看,在Compose中如何使用Paging3,这里不得不说一句,在xml中使用Paging3和在Compose...Paging3的使用 项目搭建 首先,我们新建项目,在build.gradle中引入compose的paging库,这里将网络请求等依赖库一并引入。...,代码如下所示: class DataSource():PagingSource(){ override suspend ...主要代码如下所示: class ADataSource : PagingSource() { override suspend...PagingConfig(pageSize = 1)) { DataSource() }.flow } 到这里为止,上面的代码都和我们上篇文章中的代码是一致的,接下来我们主要看UI层的代码如何实现
[在这里插入图片描述] 可以发现,使用Paging3实现数据分页时主要包含3个对象: 数据仓库层Repository Repository层主要使用PagingSource这个分页组件来实现,每个PagingSource...对象都对应一个数据源,以及该如何从该数据源中查找数据,PagingSource可以从任何单个数据源比如网络或者数据库中查找数据。...PagingSource:单一数据源以及如何从该数据源中查找数据,数据源的变动会直接映射到 UI 上。...那实际使用时,如何进行选择呢?...而在MVVM中,我们需要构建ViewModel来实现是LiveData和UI层交互,而ViewModel的Flow的扩展函数可以将直接将PagingSource转换成一个LiveData可观察对象,代码如下
前言 许久没有更新Jetpack系列的文章了,本篇文章为大家分享分页库Paging3的使用,如果你还没有看过我Jetpack其他的文章,可以移步至链接: Android JetPack系列文章 ,持续更新中...而Paging3是Paging库当前的最新版本,仍处于测试版本,相比较于Paging2的使用就简洁多了。...通过上图我们也可以清晰的看出来,Paging在仓库层、ViewModel和UI层都有具体的表现,接下来我们通过一个示例来逐步讲解Paging是如何在项目架构中工作的。...从上图可以知道,load的方法 是我们通过Paging的配置自动触发的,不需要我们每次去调用,那么我们如何来使用DataSource呢?...当然对于这个接口不需要传pageSize,所以返回的数据大小并不会受pageSize的影响,如此一来,我们就使用Paging3 完成了简单的数据分页请求。
而Paging3是Paging库当前的最新版本,仍处于测试版本,相比较于Paging2的使用就简洁多了。...通过上图我们也可以清晰的看出来,Paging在仓库层、ViewModel和UI层都有具体的表现,接下来我们通过一个示例来逐步讲解Paging是如何在项目架构中工作的。...从上图可以知道,load的方法 是我们通过Paging的配置自动触发的,不需要我们每次去调用,那么我们如何来使用DataSource呢?...除此之外,Paging3中还有一个比较重要的RemoteMediator,用来更好的加载网络数据库和本地数据库,我们后续有机会再为大家单独分享吧~ 2020年11月21日更新 paging3的设计理念是不建议对列表数据直接修改...对数据的删除、新增 我们都知道,在之前,我们给adapter设置一个List,如果需要删除或者新增,我们只要改变List即可,但是在Paging3中好像没有办法,因为数据源是PagingSource ,
而Paging3是Paging库当前的最新版本,仍处于测试版本,相比较于Paging2的使用就简洁多了。...调用PagingSource The Pager object calls the load() method from the PagingSource object, providing it with...除此之外,Paging3中还有一个比较重要的RemoteMediator,用来更好的加载网络数据库和本地数据库,我们后续有机会再为大家单独分享吧~ 2020年11月21日更新 paging3的设计理念是不建议对列表数据直接修改...中好像没有办法,因为数据源是PagingSource ,看了下官网的介绍 A PagingSource / PagingData pair is a snapshot of the data set....大致意思就是如果数据发生变化 必须创建新的PagingData ,所以暂时我也不知道如何可以在不重新请求的情况下,在数据删除、新增后来刷新,如果你有好的方案,欢迎赐教!
前面我们使用过Paging,最新版本Paging3和以前对比,有所改动 Paging2->Paging3三个模块改为: 1.DataSource->PagingSource : 数据从该模块中获取,数据可以来源于网络...负责具体获取数据的逻辑,何时获取、加载下一页、预加载等 3.PagedListAdapter->PagingDataAdapter : RecyclerView的adapter需要继承它,内部做了一系列处理 一、paging3...BindingViewHolder, position: Int) { (holder.binding as ItemBinding).movie = getItem(position) } } 5.定义PagingSource...继承PagingSource,实现load函数,返回值为LoadResult,可以使用LoadResult.Page实例化,入参为继承时定义的第二个泛型,和上一页和下一页的两个Key,Key对应的第一个泛型...package com.aruba.paging3application.paging import android.util.Log import androidx.paging.PagingSource
文件下载 kotlin--Flow结合Room运用 kotlin--Flow结合retrofit运用 kotlin--StateFlow运用 kotlin--SharedFlow运用 接着,Jetpack的Paging3...kotlin专题博客,在此也要感谢动脑学院Jason老师的辛勤付出,动脑学院在B站上也有投稿koltin基础的视频,通过视频可以快速学习和上手kotlin 今天来综合使用各种组件,搭建最新MVVM项目框架,利用Paging3...Hilt注解释义: @HiltAndroidApp:触发Hilt的代码生成 @AndroidEntryPoint:创建一个依赖容器,该容器遵循Android类的生命周期 @Module:告诉Hilt如何提供不同类型的实例...@InstallIn:用来告诉Hilt这个模块会被安装到哪个组件上 @Provides:告诉Hilt如何获取具体实例 @Singleton:单例 @ViewModelInject:通过构造函数...将数据源的Model(MovieEntity)转换为页面显示Model(MovieItemModel),两者分开的原因就是为了Model层和View层进一步解耦 定义统一转换接口: interface
Paging3 - 逐步加载和显示数据 Paging 是一个帮助你逐步分块加载和显示数据的类库。今天我们发布了 Paging3 ,使用 Kotlin Coroutines 完全重写。...这个版本添加了呼声很高的新特性,例如分隔符,header,footer,列表转换,用于重试和刷新的观察列表加载状态的 API 。...通过 Paging3 ,数据源可以继承 PagingSource ,并实现 suspend load 方法,在其中可以直接调用其他挂起函数。...关于 Paging3 的更新信息,请查看 文档 和 codelab 。 译者注:视频里有提到,Paging3 是兼容 Paging2 的,大家可以放心升级(我不负责。。) 。
如果你之前从未使用过Paging库,可以参考许久之前我写的两篇相关文章: 在View中使用Paging3分页库 在Compose中使用分页库 接下来我们就以multiplatform-paging-samples...为例,来看如何实现在Multiplatform使用Paging库。...pagingConfig.pageSize == pagingConfig.initialLoadSize) { "As GitHub uses offset based pagination, an elegant PagingSource...RepositoryPagingSource( private val httpClient: HttpClient, private val searchTerm: String, ) : PagingSource
} else{ imageView.setBackgroundColor(Color.GRAY) } } } } Paging3...), pagingSourceFactory = { MoviePagingSource() } ).flow } class MoviePagingSource: PagingSource
Paging3与旧版Paging存在很大区别,目前是beta版。...改进了演示层、列表分隔符、自定义页面转换和加载状态页眉和页脚。...依赖 implementation "androidx.paging:paging-runtime:3.0.0-beta02" 区别 Paging3向后兼容,仍然可以使用,只是标注已过时。...DataSource Paing2中的DataSource有三种,Paging3中将它们合并到了PagingSource中,实现load()和getRefreshKey(),在Paging3中,所有加载方法参数被一个...public class Articles3DataSource extends PagingSource { @Nullable @Override
本教程涵盖以下主题: 什么是预测不确定性,为什么您要关心它? 不确定性的两个来源是什么? 如何使用CatBoost梯度提升库估算回归问题的不确定性 什么是不确定性?...与数据不确定性不同,可以通过从一个了解程度不高的区域收集更多的训练数据来减少知识不确定性。 本教程详细介绍了如何在CatBoost中量化数据和知识的不确定性。...CatBoost中的知识不确定性 我们知道如何估算数据中的噪声。但是,如何衡量由于特定地区缺乏培训数据而导致的知识不确定性?如果我们要检测异常值该怎么办?估计知识不确定性需要模型的整体。...这说明了如何通过估计知识的不确定性来检测异常输入。 实际上,训练多个CatBoost模型的集成可能太昂贵了。理想情况下,我们希望训练一个模型,但仍然能够检测异常值。...我希望本教程可以帮助您更好地了解不确定性的概念以及如何使用CatBoost进行估算。我们将在以后的文章中详细介绍不确定性的应用。敬请期待引用 [1] T.
改进表现层、列表分隔符、自定义页面转换以及加载状态头、脚标。 如需获取更多内容信息,请查阅 Paging 2.0 到 Paging 3.0 的 迁移文档。...置入数据 在您应用的架构方案中,Paging 3.0 最适合作为从数据层获取数据并通过 ViewModel 在 UI 层传输数据来对其进行转换和呈现的一种方式。...在 Paging 3.0 中,我们通过名为 PagingSource 的类型访问您的数据层,该类型定义了如何围绕 PagingConfig 所定义的范围获取和刷新数据。...load 方法会传入一个 LoadParams 对象,您可以通过它来确定如何触发 load 方法的调用。...如何在 UI 中消费 PagingData 以及填充我们的仓库列表,敬请关注我们后续的文章。
让我们研究下需要实现的 Paging 组件,以及如何将 Paging 集成到现有的应用架构。...您仅需实现 PagingSource 或者 PagingSource 与 RemoteMediator 的组合: 如果您从 单个源 加载数据,例如网络、本地数据、文件等,实现 PagingSource...PagingSource PagingSource 可以定义一个分页数据的数据源,以及从该数据源获取数据的方式。PagingSource 应当为资源库层的一部分。...如果要创建 PagingData 数据流,您需要创建一个 Pager 实例,并提供一个 PagingConfig 配置对象和一个可以告诉 Pager 如何获取您实现的 PagerSource 的实例的函数...由于 Paging 库并不知道您的 API 是怎样的,所以定义如何构造和获取前一页和下一页的远程数据的工作便需要由您自己来完成。
"A类不确定度"和"B类不确定度"的区别在于测定方法、输入量、系统效应的不同度,具体如下:1、测定方法不同:A类不确定度是通过观测列数据求得标准问偏差,....“B类不确定. 如果不确定度的第一位有效数字大于等于3,只保留一位有效数字例如: 应该写成原则2:均值位数允许但依据原则1只能保留一位,此时要修约不确定度,而且平均值的位....大学物理A类不确定度保留几位有效数字 三位吧~~~ A类不确定度就 是 以观测列的数学统计方法表示不确定度的方法,一般是用贝塞尔公式计算标准差(如果是正太分布的话) ,用标准差表示不确定度。...,称为不确定度A类评定;所得到的相应标准不确定度称为A类不确定度分量,用符号uA表示。....不确定度A类评定是指通过对观测列进行统计分析对标准不确定度进行估算的方法。不确定度B类评定是指通过对数据进行非统计方法处理,对标准不确定度进行估算的一.
在很多应用场景中,我们不仅希望能预测出未来的具体值,更希望能预测出未来取值不确定性,例如一个概率分布或者取值范围。...在很多应用场景中,未来的时间序列本身就具有很强的不确定性,如果能预测出一个取值区间,会对业务决策带来更大的帮助,让我们对未来的最好情况和最差情况心里有个数。...时间序列历史干货笔记推荐 如何搭建适合时间序列预测的Transformer模型?...因此,问题转换为,预测每个时间步高斯分布的均值和方差。在模型实现上,RNN在每个时刻输出的隐状态接两个全连接层,第一个全连接用来拟合当前时刻的均值,第二个全连接层拟合的是当前时刻的方差。...相比只预测一个值,概率分布和区间的预估既能给出时间序列未来走向,也能让描绘出未来的不确定性,值得在实际工作中试一试这种预估方法。 END
Kotlin Flow 如何在 MVVM 中使用? Kotlin Flow 如何与 Retrofit2 + Room 混合使用?...在 Google 发布的 Jetpack 的最新成员 Paging3,在其内部的源码实现也是使用的 Flow,关于 Paging3 的使用可以参考以下链接: Jetpack 成员 Paging3 实践以及源码分析...我相信能够体会到从入门到放弃是什么感觉 解决回调地狱的问题 而相对于以上的不足,Flow 有以下优点: Flow 支持线程切换、背压 Flow 入门的门槛很低,没有那么多傻傻分不清楚的操作符 简单的数据转换与操作符...) } // 插入更新数据库 pokemonDao.insertPokemon(infoModel) } // 将数据源的 model 转换成上层用到的...如何处理 ViewModel 的三种方式 如果不使用数据绑定,在 Activity 或者 Fragment 中如何处理 ViewModel 的三种方式。
使用 Room 创建 PagingSource 由于我们将要分页的数据源会来自本地而不是直接依赖 API,那么我们要做的第一件事便是更新 PagingSource。好消息是,我们要做的工作很少。...事实上这里的帮助远不止于一点: 只需要在 Room 的 DAO 中为 PagingSource 添加声明,便可通过 DAO 获取 PagingSource!...本地的数据库要如何填充数据呢?来看看 RemoteMediator,当数据库中的数据加载完毕时,它负责从网络加载更多数据。让我们看看它是如何工作的。...与 PagingSource 类似,RemoteMediator 有两个泛型参数: 查询参数类型和返回值类型。...在上一篇文章中,我们简要介绍了 withLoadStateHeaderAndFooter 扩展函数,并了解了如何使用它来加载头部和底部。
进制之间如何转换 文本关键字:二进制、十进制、进制转换、八进制、十六进制 一、进制 大家最开始接触的数字和计算方法都是基于十进制的,那么进制的意思也就是一种计数方法。...二、十进制与二进制的转换 在最开始接触编程时总要学习一下和二进制的转换,因为这是计算机在工作时使用的进制,很多位运算的操作也是在二进制下进行的,所以我们必须要掌握与二进制相关的进制转换。 1....二进制转换为十进制 将一个其他进制数转换为十进制数的过程其实就是根据相应的进制来进行换算。在转换之前我们先来看一下我们最熟悉不过的十进制,比如:1367。...十进制转换为二进制 常规方法: 将一个十进制数转换为一个二进制数的过程其实就是一个不断算除法和记录余数的过程,既然是转换为二进制,那么我们的除数就是2,具体过程如下:10进制数:37 -> 二进制结果:...小数字快速转换法: 对于不是很大的数字其实有一种比较快的转换办法,但是前提是我们要对2的次方的运算结果比较熟悉,基本上记忆到2的10次方为1024就足够用了。
合计之外的每一个单元格 都需要引用 除了最基础的等于=引用 我们还有一种更加万能的Vlookup+Match的方法 这样无论日期怎么变化 无论日期顺序是否能对上...
领取专属 10元无门槛券
手把手带您无忧上云