Android RecyclerView单点、批量数据元素项目item的增加、删除和移动

前文附录1,2介绍了基本的Android RecyclerView单点、批量元素项目的更新。现在给出其他比较重要的Android RecyclerView数据元素项目的删除和增加,删除和增加包含两种,一种是单点,另外一种是批量的元素。

(一)RecyclerView删除操作。

(a)单点删除:notifyItemRemoved(int position)

/**

* Notify any registered observers that the item previously located at position

* has been removed from the data set. The items previously located at and after

* position may now be found at oldPosition - 1.

*

*

This is a structural change event. Representations of other existing items in the

* data set are still considered up to date and will not be rebound, though their positions

* may be altered.

*

* @param position Position of the item that has now been removed

*

* @see #notifyItemRangeRemoved(int, int)

*/

public final void notifyItemRemoved(int position) {

mObservable.notifyItemRangeRemoved(position, 1);

}

在给adapter维持的数据队列删除一个元素后,调用此方法,该方法删除指定位置position的元素并更新RecyclerView。

(b)批量删除:notifyItemRangeRemoved(int positionStart, int itemCount)

public void notifyItemRangeRemoved(int positionStart, int itemCount) {

// since onItemRangeRemoved() is implemented by the app, it could do anything, including

// removing itself from {@link mObservers} - and that could cause problems if

// an iterator is used on the ArrayList {@link mObservers}.

// to avoid such problems, just march thru the list in the reverse order.

for (int i = mObservers.size() - 1; i >= 0; i--) {

mObservers.get(i).onItemRangeRemoved(positionStart, itemCount);

}

}

在给adapter维持的数据元素队列批量删除若干元素后,调用该方法,该方法删除从开始位置positionStart起之后的itemCount个数量的子元素,然后更新RecyclerView。

(二)RecyclerView增加操作。

(a)单点增加:notifyItemInserted(int position)

/**

* Notify any registered observers that the item reflected at position

* has been newly inserted. The item previously at position is now at

* position position + 1.

*

*

This is a structural change event. Representations of other existing items in the

* data set are still considered up to date and will not be rebound, though their

* positions may be altered.

*

* @param position Position of the newly inserted item in the data set

*

* @see #notifyItemRangeInserted(int, int)

*/

public final void notifyItemInserted(int position) {

mObservable.notifyItemRangeInserted(position, 1);

}在给adapter指定位置position增加一个元素后,调用notifyItemInserted方法,更新RecyclerView。

(b)批量增加:notifyItemRangeInserted(int positionStart, int itemCount)

public void notifyItemRangeInserted(int positionStart, int itemCount) {

// since onItemRangeInserted() is implemented by the app, it could do anything,

// including removing itself from {@link mObservers} - and that could cause problems if

// an iterator is used on the ArrayList {@link mObservers}.

// to avoid such problems, just march thru the list in the reverse order.

for (int i = mObservers.size() - 1; i >= 0; i--) {

mObservers.get(i).onItemRangeInserted(positionStart, itemCount);

}

}在给adapter适配器指定位置positionStart增加itemCount个数据元素后,调用此方法,更新RecyclerView。

(三)RecyclerView移动操作。

notifyItemMoved(int fromPosition, int toPosition)

/**

* Notify any registered observers that the item reflected at fromPosition

* has been moved to toPosition.

*

*

This is a structural change event. Representations of other existing items in the

* data set are still considered up to date and will not be rebound, though their

* positions may be altered.

*

* @param fromPosition Previous position of the item.

* @param toPosition New position of the item.

*/

public final void notifyItemMoved(int fromPosition, int toPosition) {

mObservable.notifyItemMoved(fromPosition, toPosition);

}

移动操作的对象位置有两个,开始对象位置fromPosition和目的地址位置toPosition。设定这两个位置后,fromPosition元素位置的元素被移动到toPosition。fromPosition和toPosition是元素的集合队列中的下标。

附录:

1,《 Android RecyclerView更新子项目notifyItemChanged》链接:http://blog.csdn.net/zhangphil/article/details/78565738

2,《Android RecyclerView批量更新notifyItemRangeChanged》链接:http://blog.csdn.net/zhangphil/article/details/78579849

android批量删除图片,Android RecyclerView单点、批量数据元素项目item的增加、删除和移动...相关推荐

  1. jquery实现动态表格项目(表格增加删除/全选/表格变色特效等功能)(附源码+javaWEB开发如果需要可以直接使用)

    jquery实现动态表格项目(表格增加删除/全选/表格变色特效)

  2. android 点动态显示图片,Android用RecyclerView实现动态添加本地图片

    本文介绍了Android用RecyclerView实现动态添加本地图片,分享给大家,具体如下: 简单介绍一下用法: 1.跳转到图片选择页面: Intent intent = new Intent(Pa ...

  3. android自适应拉伸图片,Android 启动页-解决图片被拉伸和压缩问题,适配虚拟导航栏...

    Android 启动页设置非常简单 //styles.xml 设置主题 @drawable/bg_splash true //activity使用主题,这时点击app图标,就会显示@drawable/ ...

  4. android jar 加入图片,Android动态加载外部jar包及jar包中图片等资源文件

    Android动态加载外部jar包及jar包中图片等资源文件 Android应用程序由Java开发,因此Java中许多实用的特性,在Android中也有体现.动态加载Class,也就是外部jar包,在 ...

  5. android生成png图片,Android 中将 base64图片 解码为.png图片

    android 中将 "base64图片" 解码为".png"图片 参考: 方法一 String base64Img = ""; // 若包 ...

  6. android 聊天背景图片,Android 实现从本地读取图片更改聊天背景

    现在很多社交软件都有这个功能,因为本次我参加一个比赛也是要做一个社交软件,所以我就"画蛇添足"的添加了这个一个功能,因为我也是个Android初学者,所以说修改bug浪费了我至少1 ...

  7. android textview 背景图片,Android—TextView 背景颜色与背景图片设置

    Android TextView 背景颜色与背景图片设置,android textview 控件,android textview 背景, android textview 图片,android te ...

  8. 如何使用python批量压缩图片_python利用Guetzli批量压缩图片

    Google 又开源了,这次开源了一款图像算法工具 Guetzli.Guetzli,在瑞士德语中是"cookie(曲奇)"的意思,是一个针对数码图像和网页图像的 JPEG 编码器, ...

  9. android 横向滚动图片,Android使用Photoview实现图片左右滑动及缩放功能

    Android使用Photoview实现图片左右滑动及缩放功能 发布时间:2020-10-12 14:51:12 来源:脚本之家 阅读:119 作者:kuaizilanqiu 我想,不管是做什么样的a ...

最新文章

  1. 大数据的应用难题:是否该建立数据公地
  2. 什么是SAP Spartacus schematics
  3. python如何输出两行_python pandas dataframe拆分行(某些行一行拆成多行)
  4. 计算机网络学习笔记(四)——差错控制、停等协议、回退N帧、选择性重传、滑动窗口、数据链路层HDLC、PPP协议、有限状态机
  5. 为什么 Netflix “永不宕机”?
  6. python 生成随机数的几种方法
  7. python软件下载安装百度网盘-python实现简单的百度云自动下载
  8. Mysql多源复制半同步_MySQL多源复制搭建
  9. linux中的轮询机制select/poll/epoll特点分析
  10. Linux下有趣的命令
  11. 夜间红外图像行人检测学习笔记
  12. alter index
  13. Linux常见英文报错中文翻译
  14. RemoteTestkit远程真机调试平台使用教程
  15. 文件隐藏服务器版本信息,隐藏Tengine的版本信息
  16. 当前主流服务器型号,当前服务器的主流品牌 型号 配置
  17. 新一代数据中心光纤布线技术发展趋势
  18. python爬b站评论_一个简单的爬取b站up下所有视频的所有评论信息的爬虫
  19. 996的压力下,程序员还有时间做副业吗?
  20. addevent()实现跨浏览器绑定事件

热门文章

  1. NO.111 禅道导出数据做透视表,让你轻松做年终工作总结。
  2. FQND之联想--username@host.domain跟进
  3. Tensorflow利用函数修饰符@tf.custom_gradients自定义函数梯度
  4. c++构建工具之make使用小结
  5. 桶排序 Bin Sort
  6. 基于Yolov5的烟火检测——模型训练与C++实现部署
  7. error response from daemon_Scrapy 框架-模拟登录-Request、Response
  8. 第16天:函数的定义和调用
  9. 查看服务器的某个端口是否允许访问
  10. IP选路与动态选路协议(六)