首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

实战 | 认识 RecyclerView

实现过程,我也会将 RecyclerView 每个部分揉碎了展现给大家,这样大家就可以自己应用实现了。 RecyclerView 是 "何方神圣"?为什么选择它呢?...RecyclerView 是一个容器,它用于显示列表形式 (list) 或者网格形式 (grid) 数据,比如文本或者照片。 当列表滑动时候,实际上只有少量邻近视图会显示屏幕上。...下面的代码会使用 Kotlin 语言,但是 RecyclerView 也可以 Java 语言中使用。...对于比较复杂应用来说,数据可能是来自数据库或者来自于网络,不过这里我们简单使用字符串资源文件作为应用数据源。 strings.xml 文件,创建一个字符串数组来存放花名称。 <!...随着用户滑动屏幕,ViewHolder会被回收 (使用新数据进行填充),已有的表项会在一端消失,并且另一端显示一个新表项。

1.1K30

View 上使用挂起函数 | 实战

让我们学以致用,实际应用中进行实践。 遇到问题 我们有一个示例应用: Tivi,它可以展示 TV 节目的详细信息。关于节目信息,应用内罗列了每一季和每一集。...这个 ID 映射到了季份列表某一集; 该集条目可能还没有被添加到 RecyclerView ,需要用户展开该季份列表,然后将其滑动展示到屏幕上,这样我们需要视图才能被 RecyclerView...: Episode) { // 通知 ViewModel 使 RecyclerView 数据集中包含对应季份剧集。...) // TODO 等待 ViewModel 分发新状态 // TODO 等待 RecyclerView 适配器对比新数据集 // TODO 等待 RecyclerView...]添加到了数据集中,并返回该条目适配器位置 */ suspend fun RecyclerView.Adapter.awaitItemIdExists

1.4K30

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

Paging加载状态 Paging3 为我们提供了获取Paging加载状态方法,其中包含添加监听事件方式以及adapter中直接显示方式,首先我们来看监听事件方式 使用监听事件方式获取加载状态...除此之外,Paging3还有一个比较重要RemoteMediator,用来更好加载网络数据库和本地数据库,我们后续有机会再为大家单独分享吧~ 2020年11月21日更新 paging3设计理念是不建议对列表数据直接修改...;而是对数据源进行操作,数据变化会自动更新到列表,看到评论区很多朋友说如何操作item删除和修改,这里我们使用最简单方式即可 对单个item修改 我们都知道RecycleView是没有直接监听...对数据删除、新增 我们都知道,之前,我们给adapter设置一个List,如果需要删除或者新增,我们只要改变List即可,但是Paging3好像没有办法,因为数据源是PagingSource ,...大致意思就是如果数据发生变化 必须创建新PagingData ,所以暂时我也不知道如何可以不重新请求情况下,在数据删除、新增后来刷新,如果你有好方案,欢迎赐教!

3.2K10

Android Jetpack - Room

单一事实来源,允许用户应用内查看关键信息一致副本,无论用户是否具有互联网连接 处理重要数量结构化数据应用程序可以从本地保存数据受益匪浅。...然后,设备重新联机后,任何用户启动内容更改都会同步到服务器 Room 三个主要部分包括 Database 包含数据库持有者,并作为应用程序持久关系数据基础连接主要访问点。...使用@Database注释类应满足以下条件: 继承了 RoomDatabase 抽象类 注解包含数据库相关联实体类列表 包含一个无参抽象方法,并返回使用 @Dao 注释类。...DAO 包含用于访问数据库方法 该应用程序使用 Room 数据库来获取与该数据库关联数据访问对象或 DAO。...然后,应用程序使用每个 DAO 从数据库获取实体,并将对这些实体任何更改保存回数据库。最后,应用程序使用实体来获取和设置与数据库表列对应值 Room 组件关系图 ?

1.9K70

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

Paging加载状态 Paging3 为我们提供了获取Paging加载状态方法,其中包含添加监听事件方式以及adapter中直接显示方式,首先我们来看监听事件方式 使用监听事件方式获取加载状态...除此之外,Paging3还有一个比较重要RemoteMediator,用来更好加载网络数据库和本地数据库,我们后续有机会再为大家单独分享吧~ 2020年11月21日更新 paging3设计理念是不建议对列表数据直接修改...;而是对数据源进行操作,数据变化会自动更新到列表,看到评论区很多朋友说如何操作item删除和修改,这里我们使用最简单方式即可 对单个item修改 我们都知道RecycleView是没有直接监听...即可,演示效果如下所示: 对数据删除、新增 我们都知道,之前,我们给adapter设置一个List,如果需要删除或者新增,我们只要改变List即可,但是Paging3好像没有办法,因为数据源是...大致意思就是如果数据发生变化 必须创建新PagingData ,所以暂时我也不知道如何可以不重新请求情况下,在数据删除、新增后来刷新,如果你有好方案,欢迎赐教!

1.8K20

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

前面我们使用Java来运用JetPack一系列组件,又使用kotlin运用这些组件实现了一系列功能kotlin--Flow文件下载 kotlin--Flow结合Room运用 kotlin--Flow...Jason老师辛勤付出,动脑学院B站上也有投稿koltin基础视频,通过视频可以快速学习和上手kotlin 今天来综合使用各种组件,搭建最新MVVM项目框架,利用Paging3实现列表功能,Paging3...添加扩展函数 为了后续Paging使用,为RecyclerView添加设置Adapter和liveData扩展函数: fun <VH : RecyclerView.ViewHolder, T : Any...状态,如果是Refresh,那么数据库没有数据,就要从网络获取数据,Refresh状态下load函数执行完毕后会自动再次调用load函数,此时LoadType为Append,此时数据库中有数据了,...RemoteMediator可以无网络时从数据库获取数据,所以load函数我们还需要对网络状态进行判断,无网络时,直接返回Success 1.获取网络状态扩展函数 定义一个扩展函数用来获取网络状态

3.3K30

RecyclerView 梳理:点击&长按事件、分割线、拖曳排序、滑动删除

从这篇文章主要梳理以下几点: 优雅实现:item 点击事件 & item 长点击事件 RecyclerView 添加 divider 标准姿势 RecyclerView 实现 item 拖曳排序和滑动删除...当然你还可以通过给 item 最外层布局设置一个 margin 值,甚至你还可以专门 item 布局适当地方添加一个高度/宽度为 1 带背景 View 作为 divider,这两种方法呢,确实有效果...实现方式 主要就要使用到 ItemTouchHelper,ItemTouchHelper 一个帮助开发人员处理拖拽和滑动删除实现类,它能够让你非常容易实现侧滑删除、拖拽功能。...(ItemTouchHelper 使用并不仅仅局限于 RecyclerView 滑动删除,你同意可以用在其他需要拖曳滑动地方。...ItemTouchHelper 会在拖拽时候回调 Callback 相应方法,我们只需 Callback 实现自己逻辑。

2.9K30

2018 年初值得关注 25 个新 Android 库和项目

它纯 100% 使用 Kotlin 编写而成,使用 MIT 许可,且拥有良好文档。 该库支持 API 19 及以上 SDK 版本,而且项目中也包含了用来展现其功能特性示例应用。...9. hyperlog-android https://github.com/hypertrack/hyperlog-android 这是一个公用工具日志库,位于标准 Android 日志类之上,用于存储数据库日志...与使用 ViewPager 不同是,作者使用了 RecyclerView,通过滑动来达到刷新效果。 这项目有基本文档、app 样例,并且它是 Apache-2.0 许可下发布。...这个类库作者也提到了延迟加载特性 VS 主可执行文件具有(延迟加载)特性好处: 只有真正需要时把功能加载到内存。...因为它在一个文件,所以功能代码在内存中集中起来,它在内存访问方面提供了最优方案。 如果某些功能未使用则只占用较少磁盘空间,因为代码不是未压缩

904100

新版Glance发布,更好用Android数据库调试助手

允许横向纵向同时滚动 Glance查看数据库表内容界面做得还算是比较精美的,如下图所示: 这个界面是使用横向ScrollView加纵向RecyclerView方式来实现,所以支持横向和纵向两个方向上滑动...最终效果如下图所示: 支持多应用入口区分 Glance入口是会在手机桌面创建一个Glance图标,点击该图标即可查看你应用包含数据库文件。...允许修改数据库内容 好吧,我这8个月主要工作应该都在这个功能上了。 之前Glance主要功能是帮助你查找出当前应用中所包含所有数据库,并将它们内容展示出来。...因此Glance 1.1.0版本最重磅一个功能就是,允许开发者直接在手机对当前应用数据库数据进行修改。...但是这次Glance实现修改数据功能之后,我发现Paging 3修改数据上并没有什么无法实现或难理解地方,和正常使用RecyclerView时修改数据方法几乎是差不多

58810

一篇博客理解Recyclerview使用

RecyclerView是support-v7包新组件,是一个强大滑动组件,与经典ListView相比,同样拥有item回收复用功能,这一点从它名字Recyclerview即回收view也可以看出...b) onBindViewHolder() 这个方法主要用于适配渲染数据到View。方法提供给你了一viewHolder而不是原来convertView。...,然而在日常开发,响应点击事件无疑都是必须,虽然它没有提供,但是我们可以手动添加OnItemClickListener,我们可以Adapter添加这个回调接口: 例子2:可以点击RecyclerView...,然后onTouchEvent,监听ACTION_MOVE,用户手指滑动时,不断把当前第一个View回调回去 关于为什么getChildAt(0)和getChildPosition()可用,起初我以为有...,就是我们适配器绑定ViewHolder方法需要重新给我们itemView布局设置height,这里是生成随机数来设置高度

60230

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

另外,由于Paging 3是Google基于Kotlin协程全新重写一个库,所以它主要是应用Kotlin语言(Java也能用,但是会更加复杂),并且以后这样库会越来越多,比如Jetpack Compose...注意key是可能为null,如果为null的话,我们就默认将当前页数设置为第一页。另外还可以通过params参数得到loadSize,表示每一页包含多少条数据,这个数据大小我们可以稍后设置。...getPagingData()函数当中,这里创建了一个Pager对象,并调用.flow将它转换成一个Flow对象。创建Pager对象时候,我们指定了PAGE_SIZE,也就是每页所包含数据量。...好了,这样我们就把整个项目完成了,正式运行项目之前,别忘了在你AndroidManifest.xml文件添加网络权限: <?xml version="1.0" encoding="utf-8"?...这样我们就把底部显示加载状态功能完成了,现在来测试一下吧,效果如下图所示。 ? 可以看到,首先我设备上开启了飞行模式,这样当滑动到列表底部时就会显示重试按钮。

2.4K20

【Android 事件分发】ItemTouchHelper 实现拖动排序

0.9f , getMovementFlags 方法设置拖动方向是上下拖动 , 因此该案例 , 上下拖动幅度必须要在 0.9 倍高度 , 拖动排序功能才能生效 ; 下面的操作 , 拖动幅度没有达到...条目组件 高度 0.9 倍 , 拖动排序功能没有触发 ; 下面的操作 , 拖动幅度超过了 条目组件 高度 0.9 倍 , 拖动排序功能 触发 ; 4、设置拖动排序触发操作 重写 ItemTouchHelper.Callback...(), target.getAdapterPosition()); return true; } } 5、RecyclerView.Adapter 适配器交换排序操作 删除数据列表元素...@NonNull RecyclerView.ViewHolder target) { // 拖动后交换数据, 该方法交换 Adapter 数据, 并刷新界面 Log.i...// 这里做滑动删除功能, 直接删除滑动项 // 该方法删除指定条目, 并刷新界面 mAdapter.deleteItem(viewHolder.getAdapterPosition

2.1K10

Material Design Android 应用

数据 数据是自己本地写json数据,很是尴尬,然后部署到七牛云上。地址是:WeaponInfo 3. 语言 用语言是之前学KotlinKotlin学习笔记 4....越读越能感受到它妙处,假如你能严格按照它规范进行开发项目,哪怕你不是专业UI设计师,相信你产品一定会不难看。 那接下来就主要介绍一下Material DesingAndroid应用。。...窗口背景颜色 navigationBarColor 导航栏颜色 通过styles配置颜色来定制您主题,并在AndroidManifest应用。...项目中列表肯定是少不了,那么这就不得不提RecyclerView了,强大之处不用多说,感兴趣的话看一下我之前写博客,对其使用有个简单介绍:简单粗暴RecyclerView 那如果想实现侧滑删除和长按拖拽功能怎么办呢...Material Design 「口袋」应用 其实在咱们「口袋贵金属」项目中也到找到很多MD元素。 首先是点击水波纹效果: ? 其次是交易圈滑动交互: ?

1.2K20

【Android 事件分发】ItemTouchHelper 实现侧滑删除

return 0.5f; } } 上面案例设置滑动幅度是 0.5f , getMovementFlags 方法设置滑动方向是左右滑动 , 因此该案例 , 滑动幅度水平方向上超过...0.5 倍条目组件宽度 , 侧滑删除才能生效 ; 下面的操作 , 滑动水平方向上没有超过组件宽度 0.5 倍 , 滑动删除不生效 ; 下面的操作 , 水平方向滑动幅度超过了 0.5 倍..."触发侧滑删除条目"); // 滑动指定距离, 达到一定幅度后, 就会触发该方法回调 // 这里做滑动删除功能, 直接删除滑动项 // 该方法删除指定条目...适配器删除操作 删除数据列表元素 , 并调用 notifyItemRemoved 触发删除动画 ; public class Adapter extends RecyclerView.Adapter...// 这里做滑动删除功能, 直接删除滑动项 // 该方法删除指定条目, 并刷新界面 mAdapter.deleteItem(viewHolder.getAdapterPosition

54620

轻松掌握RecyclerView缓存机制

Android 应用程序RecyclerView 是一个非常重要控件。它被广泛使用,因为它可以帮助我们展示大量数据,同时也能够提供流畅滑动体验。...使用 setItemPrefetchEnabled() 方法开启预取功能 LayoutManager 中使用 setItemPrefetchEnabled() 方法开启预取功能,以提前加载屏幕外数据...避免 onBindViewHolder 方法执行耗时操作 onBindViewHolder 方法应该尽量简洁,不要包含任何耗时操作,比如 I/O 操作、网络请求等。...通过设置 RecyclerView ItemAnimator,可以 RecyclerView 添加删除动作时显示动效,让用户更好体验到Item之间变化过程。...结论 Android 开发RecyclerView 是一个非常重要控件。它可以帮助我们展示大量数据,同时也能够提供流畅滑动体验。

37021
领券