本文介绍了Android中RecyclerView实现Item添加和删除的代码示例,分享给大家,具体如下: 先上效果图: ?...为增加和删除项目提供默认的动画效果,也可以自定义。 RecyclerView项目结构如下: ?...LayoutManager:用来确定每一个item如何进行排列摆放,何时展示和隐藏。...RecyclerView-Item添加: 在适配器中加入如下代码: // 添加数据 public void addData(int position) { // 在list中添加数据,并通知条目加入一条...(list.size()); RecyclerView-Item删除: 在适配器中加入如下代码: // 删除数据 public void removeData(int position) {
背景 大家好,我是栈长。 前些天,栈长给大家分享了两篇有意思的文章: 带了一个 3 年的开发,不会循环删除 List 中的元素,我简直崩溃!! 面试官:怎么去除 List 中的重复元素?...有粉丝建议栈长出一篇删除 HashMap 里面的数据,也有粉丝建议出一个系列的文章: 那这篇就分享下如何删除 HashMap 中的元素吧!...一般删除 HashMap 集合中的元素,如果知道具体的 Key,并且需要根据 Key 删除元素,使用 remove 方法就可以了。但是如何根据 Value 删除 HashMap 集合中的元素呢?...删除 实际开发过程中,可能会使用不同的遍历方式,所以重点要考虑多线程场景,如果只是简单的删除元素,使用 removeIf 和 Stream 过滤是最省事的。...所以说,你身边还有谁不会删除 HashMap 中的元素?把这篇文章发给他吧,让大家少走弯路,少写垃圾代码,共同进步。 你还知道哪些删除技巧?
前面在介绍列表视图和网格视图时,它们的适配器代码都存在视图持有者ViewHolder,因为Android对列表类视图提供了回收机制,如果某些列表项在屏幕上看不到了,则系统会自动回收相应的视图对象。...为方便理解循环适配器的Kotlin编码,下面以微信的公众号消息列表为例,给出对应的消息列表Kotlin代码: //ViewHolder在构造时初始化布局中的控件对象 class RecyclerLinearAdapter...下面便是个循环视图的网格适配器,它实现了类似淘宝主页的网格频道栏目,具体的Kotlin代码如下所示: //把公共属性和公共方法剥离到基类RecyclerBaseAdapter, //此处仅需实现getItemCount...这下不管是在Activity代码,还是在适配器代码中,均可将控件名称拿来直接调用了。...这么神奇的魔法,快来看看Kotlin的适配器代码是如何书写的: //利用Kotlin的插件LayoutContainer,在适配器中直接使用控件对象,而无需对其进行显式声明 class RecyclerStaggeredAdapter
如果你对于Kotlin还不太了解的话,可以去参考我的新书《第一行代码 Android 第3版》。...我们可以尝试在浏览器中请求如下接口地址: https://api.github.com/search/repositories?...接下来调用刚才在GitHubService中定义的searchRepos()接口,并把page和pageSize传入,从服务器获取当前页所对应的数据。...注意LoadResult.Page()函数接收3个参数,第一个参数传入从响应数据解析出来的Repo列表即可,第二和第三个参数分别对应着上一页和下一页的页数。...接下来定义RecyclerView的适配器,但是注意,这个适配器也比较特殊,必须继承自PagingDataAdapter,代码如下所示: class RepoAdapter : PagingDataAdapter
那时我明白了必须千方百计把Vitaly的多选概念设计实现出来;所以我几乎立即就开始了编写这个控件的工作。现在让我们来看看这个安卓的多选动画是如何诞生的。 ?...删除被点击的item并显示选中列表中隐藏的item。...这个过程中最技巧性的部分是把view从layout manager移除;否则layout manager 会尝试回收它,因为已经从RecyclerView删除了这个view,所以这会导致错误: sourceRecycler.layoutManager.removeViewAt...和Java相比,Kotlin最主要的优点是其简明的语法和不会出现NullPointerException之类的崩溃。...这里是我在实现这个库的过程中,Kotlin的这些特性给我带来了方便: 1.扩展函数 Kotlin的扩展函数功能使得我们可以为现有的类添加新的函数,而不用修改原来的类。 就拿安卓的View来说。
我们日常开发中,用到的列表是何其多,大量的列表,就意味着大量的适配器,更意味着更大量的bean类、item布局和复杂繁多的逻辑,所以,有一套方便,快捷的列表模板是何其重要。...(这段是废话,可以省略不看) 因为我公司项目是MVVM模式的,然后以前一个老Android同事写过一个控件,就是能很方便地将列表跟viewModel绑定在一起,使得代码精简很多。...多布局实现,item不实现MultipleItem的调用方式 如何用databinding模式添加多个头部和脚部,并且有各自事件 空布局及下拉刷新 侧滑删除 长按拖动 侧滑删除和长按拖动相结合 ExpandableItem...load()中的回调,调用了load(getData())来加载数据(我这边使用rxjava来模拟数据的加载,现在的项目基本都是用retrofit和rxjava结合获取网络请求)。...在布局文件中,还可以看到,我引入了,在RecyclerView中,我调用,
没错,这就是Kotlin语言的Android项目,和Java还是有区别的,建议了解了Kotlin的语法再看文章会比较好,当然你也可以对照我写的Android 蓝牙开发(扫描设备、绑定、解绑)Java版来看...上面不涉及到代码,所以Java和Kotlin中的资源文件配置是差不多的。 ② 布局和样式 图片资源 ? ? ? ? ? ?...代码如下: //设置亮色状态栏模式 systemUiVisibility在Android11中弃用了,可以尝试一下。...是不是立竿见影,这个效果一行代码解决问题还不用写工具类,完全调用系统的方法,请注意我是Android10.0版本的手机,也是我自己用的手机。...避免重复添加和添加null的设备进入列表,而点击item,根据绑定状态而定,绑定过蓝牙的点击就是取消绑定,这里调用了一个方法。
[在这里插入图片描述] 没错,这就是Kotlin语言的Android项目,和Java还是有区别的,建议了解了Kotlin的语法再看文章会比较好,当然你也可以对照我写的Android 蓝牙开发(扫描设备、...然后是styles.xml文件 [在这里插入图片描述] 上面不涉及到代码,所以Java和Kotlin中的资源文件配置是差不多的。...所以在Kotlin中我想到了更简单的办法,直接在MainActivity中修改状态栏样式。...[在这里插入图片描述] 是不是立竿见影,这个效果一行代码解决问题还不用写工具类,完全调用系统的方法,请注意我是Android10.0版本的手机,也是我自己用的手机。...避免重复添加和添加null的设备进入列表,而点击item,根据绑定状态而定,绑定过蓝牙的点击就是取消绑定,这里调用了一个方法。
文章目录 一、移动数据 二、数据改变 三、完整代码示例 四、RecyclerView 相关资料 一、移动数据 ---- 移动数据 : 调用 RecyclerView.Adapter 的 void notifyItemMoved..., 强制要求任何观察者对象去呈现所有存在的 item 条目和结构 , 这些数据可能已经失效 ; 布局管理器 LayoutManager 会强制所有数据重新绑定 , 并重新读取所有可视组件的布局 ; 如果适配器调用了本方法..., 通知数据发生了改变 , RecyclerView 会尝试去 为适配器 同步可见的结构性改变事件 ; 这样有助于动画和可视化对象的持续 , 但是单独的 item 元素组件需要重新被绑定 ; 代码示例...; * * 如果适配器调用了本方法 , 通知数据发生了改变 , RecyclerView 会尝试去 为适配器 同步可见的结构性改变事件 ;...从布局中获取 RecyclerView RecyclerView recycler_view = findViewById(R.id.recycler_view); /
Intent 意图,这个和Activity的意图要区分开,我觉得说成是行为可能更妥当,表示去做什么。 多说无益,我们还是进入实操环节吧。...Retrofit一开始是支持Gson转换的,后面增加了MoShi的转换,Moshi拥有出色的Kotlin支持以及编译时代码生成功能,可以使应用程序更快更小。...① 列表适配器 在创建适配器之前首先我们需要创建一个适配器所对应的item布局,在layout下新建一个item_wallpaper_rv.xml,代码如下图所示: <?...initView()函数中是控件的一些配置,比如给RecyclerView添加布局管理器和设置适配器,给按钮添加点击事件,在点击的时候发送意图,发送的意图被MainViewModel中mainIntentChannel...observeViewModel()函数中是对状态的收集,在状态为Loading,隐藏按钮,显示加载条,然后网络请求会有结果,如果是成功,则在UI上隐藏按钮和加载条,显示列表控件,并添加数据到适配器中,
文章目录 一、删除单条数据 二、批量删除数据 三、完整代码示例 四、RecyclerView 相关资料 一、删除单条数据 ---- 删除单条数据 : 调用 RecyclerView.Adapter 的...: 当前 RecyclerView 列表中被移出的 item 元素索引 , 也就是说之前的数据集合中被移出的数据索引 ; 注意 : 调用该方法后 , 只会刷新与该位置相关的 item 元素 , 不会刷新其它元素..., 可以自己实现 ; 二、批量删除数据 ---- 批量删除数据 : 调用 RecyclerView.Adapter 的 void notifyItemRangeInserted(int positionStart...+ itemCount 之间的这几个元素 , RecyclerView 中的其它 item 元素不变 ; 代码示例 : 删除前 3 个数据 , 通知适配器 , 原数据集中的从第 0 个元素开始的...从布局中获取 RecyclerView RecyclerView recycler_view = findViewById(R.id.recycler_view); /
,使用的版本是2.9.4,在使用中发现当二级列表展开时对子列表数据进行操作后,列表中展开和闭合显示的数据会异常。...因为当时项目比较急,3.0版本的用法和原来完全不一样了,加上这个问题不大,所以就没再处理,现在抽出空来就想试试3.0版本的实现方式,毕竟作者说3.0使用kotlin重写了不少,并解决了一些2.0版本中的...实现效果 上图中可以看出,在展开列表中做删除明细的操作后,数据显示的就异常了,这个是在2.X的版本中出现的问题,现在3.0里面还是有这个情况。...代码实现 微卡智享 在2.x版本中,使用多级列表用的BaseMultiItemQuickAdapter,定义的类要继承自MultiItemEntity,现在3.0版本中,我使用的是BaseNodeAdapter...get() = Bodys } 03 adapter适配器 DataAdatper适配器继承自BaseNodeAdapter,使用NodeProvider将一级列表Head和二级列表Body分开写,代码看起来也方便些
ItemAnimator:ItemAnimator简单来说是会根据适配器上收到的相关通知去动画的显示组件的修改,添加和删除等。它会自动添加和移除item的动画。自带的默认效果也不错,已经非常好了。...如何用呢?这里我就不过多介绍了,因为关于RecyclerView的使用,去年我很早时间就写过一篇文章。...建议大家参考: Android新组件RecyclerView介绍,其效率更好(可点击) 更多推荐: 偷懒新姿势,打造属于RecyclerView的万能适配器Adapter和ViewHolder 一种新的...Adapter和Activity中的全部代码太多,而且微信对代码支持不是很好,我就不贴出来了,想看代码的去下载demo就可以了。...conentPadding:卡片布局和内容之间的距离 效果图和实例代码 效果图如下: ?
让我们从在Android中构建此列表所需的步骤开始: 用XML创建list-item布局文件 创建一个适配器来绑定视图并设置数据 为列表创建布局(可能在Activity或Fragment中) 填充Fragment.../Activity中的列表布局 在Fragment / Activity中创建适配器,布局管理器等的实例 在后台线程上从网络下载电影数据 回到主线程设置适配器中的项目 现在需要考虑保存和恢复列表状态等细节...这两个类与API调用结合起来会有以下结果: 这貌似太简单了……现在有没有感觉到用Flutter创建列表很容易,继续探索吧。 下一步我们尝试稍微复杂的布局。...前面太容易了,我决定扩展应用程序,合并电视节目。几个小时后也顺利完成了。该应用程序包含了电影和电视节目,并且开发过程中没有遇到任何困难。...不再有多余的样板代码 。 既然两个app的功能几乎一样,我就比较好奇两种不同语言实现的代码量。 那么应该如何进行对比?(免责声明:Flutter版本中还没有实现持久化,原生代码写的也很乱)。
前言 在2021年正式到来之前再更新几篇天气APP的文章,说实话现在对于这个APP的更新速度是比较缓慢的,一方面我有工作在进行,同时在写其他的文章,其次我正在使用Kotlin语言重写天气APP,...然后在MainActivity绑定控件 @BindView(R.id.rv_change_city) RecyclerView rvChangeCity;//点击切换常用城市 再创建两个变量用于控制是否显示和是否展开常用城市列表...这里我判断了一下是否为定位城市的返回,是的话我就添加到数据库中,当然也不能重复添加数据,因此还需要判断一下。...然后你还需要在initData中调用loadingCommonlyUsedCity方法。 ?...四、修改UI 因为我是点击城市触发常用城市列表的判断处理,因此之前的代码需要修改一下,有两处,在initData中 ? 在onReceiveLocation方法中 ?
显示数据 九、源码 前言 在日常的开发中,最常用于展示数据的形式就是列表,你会看到各种各样的列表,比如图片列表、视频列表,联系人列表,而在RecyclerView出来之前列表的开发是使用ListView...正文 在上一篇文章中,我讲述了怎么使用Room和MMKV去管理本地数据,本文将是不一样的介绍方式,因为会和页面打交道比较多,所以会比上一篇更有意思,起码我是这么觉得的。...下面我们写一个列表适配器的item布局,在layout下新建一个item_wall_paper.xml文件,里面的代码我们先不写,先去写一个样式,在themes.xml文件中(老版本的AS中是styles.xml...版本升级迁移 在AppDatabase中增加如下代码,用于数据库版本的升级迁移,这里我是新增了一个迁移对象,构建迁移对象的版本,从1到2,然后执行一段SQL语句,该语句用于创建一个新的表。...,如下图所示: 这里我修改了@Database注解中的内容,增加了新的表和版本升级到2,同时在构建数据库的时候增加一个迁移,最后增加wallPaperDao抽象方法,方便使用的地方直接去调用。
Anko是一个 Kotlin 库, 它使 android 应用程序的开发变得更快、更容易。它使您的代码更加简单干净, 易于阅读。...Realm 简单易用,model 设计在代码中,更加易于维护,同时其性能也不错。在Android开发中,它可以替代 SQLite 和 ORM 框架。...而我们有了 Butter Knife,就可以通过使用注解直接生成样板代码。例如,在 Java 中我们可以通过在字段上使用 @BindView 来替代 findViewById 的调用。...开发者,从 Java无缝转到 Kotlin 的过程。...另外,Kotlin 的 Android 视图 DSL Anko帮我们从繁杂的 XML 视图配置文件中解放出来。
前言 许久没有更新Jetpack系列的文章了,本篇文章为大家分享分页库Paging3的使用,如果你还没有看过我Jetpack其他的文章,可以移步至链接: Android JetPack系列文章 ,持续更新中...通过上图我们也可以清晰的看出来,Paging在仓库层、ViewModel和UI层都有具体的表现,接下来我们通过一个示例来逐步讲解Paging是如何在项目架构中工作的。...上 我们在View代码中调用viewModel中的getData方法,代码如下所示: val manager = LinearLayoutManager(this) rv_data.layoutManager...;而是对数据源进行操作,数据源的变化会自动更新到列表,看到评论区中很多朋友说如何操作item的删除和修改,这里我们使用最简单的方式即可 对单个item的修改 我们都知道RecycleView中是没有直接监听...大致意思就是如果数据发生变化 必须创建新的PagingData ,所以暂时我也不知道如何可以在不重新请求的情况下,在数据删除、新增后来刷新,如果你有好的方案,欢迎赐教!
前言 许久没有更新Jetpack系列的文章了,本篇文章为大家分享分页库Paging3的使用,如果你还没有看过我Jetpack其他的文章,可以移步至链接: Android JetPack系列文章 ,持续更新中...在架构中的使用图 通过上图我们也可以清晰的看出来,Paging在仓库层、ViewModel和UI层都有具体的表现,接下来我们通过一个示例来逐步讲解Paging是如何在项目架构中工作的。...上 我们在View代码中调用viewModel中的getData方法,代码如下所示: val manager = LinearLayoutManager(this) rv_data.layoutManager...;而是对数据源进行操作,数据源的变化会自动更新到列表,看到评论区中很多朋友说如何操作item的删除和修改,这里我们使用最简单的方式即可 对单个item的修改 我们都知道RecycleView中是没有直接监听...大致意思就是如果数据发生变化 必须创建新的PagingData ,所以暂时我也不知道如何可以在不重新请求的情况下,在数据删除、新增后来刷新,如果你有好的方案,欢迎赐教!
领取专属 10元无门槛券
手把手带您无忧上云