博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
界面无小事(八):RecyclerView增删item
阅读量:6717 次
发布时间:2019-06-25

本文共 1811 字,大约阅读时间需要 6 分钟。


目录

  • 前言
  • 增删item
  • 自定义增删动画
  • 最后

前言

之前写过一篇的, 对比下这次的RecyclerView增删item, 说句实话, 代码动态增删布局基本可以退群了.


增删item

当然首先你可以按照第一篇-建立基础的RecyclerView. 这次的关键是在适配器代码中加入增删item的操作. 要注意一点, 刷新和原来在ListView的操作是不一样的. 你可以直接看, 大致有这几个:

  • notifyItemInserted()
  • notifyItemRemoved()
  • notifyItemMoved()
  • notifyItemChanged()

在适配器中加入如下代码:

public void addData(int position) {    mData.add(position, "hello python");    notifyItemInserted(position);}public void removeData(int position) {    mData.remove(position);    notifyItemRemoved(position);}复制代码

然后我们在toolbar中加上add和del按钮, 对应这两个方法.

复制代码

并且设置长按为删除操作, 点击是增加操作. 好了, 上效果图:

不单单是我演示的这种布局, 还有线型的, 横向的, 瀑布流都可以有这种类似效果. 可参考.

那既然有默认动画, 肯定就能自定义动画了. 在这之前, 先说说几个方法. 用来设置动画的具体状态的持续时间.

rvTest.getItemAnimator().setAddDuration(400);rvTest.getItemAnimator().setRemoveDuration(400);rvTest.getItemAnimator().setMoveDuration(400);rvTest.getItemAnimator().setChangeDuration(400);复制代码

自定义增删动画

这里借助. 因为这个项目真的足够地棒. 自带动画个数都已经足够用了, 见下. 你还可以继续在这基础上自定义. 是不是感觉三生万物了.

Animators

分类 动画类名
Cool LandingAnimator
Scale ScaleInAnimator, ScaleInTopAnimator, ScaleInBottomAnimator, ScaleInLeftAnimator, ScaleInRightAnimator
Fade FadeInAnimator, FadeInDownAnimator, FadeInUpAnimator, FadeInLeftAnimator, FadeInRightAnimator
Flip FlipInTopXAnimator, FlipInBottomXAnimator, FlipInLeftYAnimator, FlipInRightYAnimator
Slide SlideInLeftAnimator, SlideInRightAnimator, OvershootInLeftAnimator, OvershootInRightAnimator, SlideInUpAnimator, SlideInDownAnimator

而且非常难得的是使用方法还很简单, 需要几个步骤

  • 在Module的build.gradle中写入
dependencies {  implementation 'jp.wasabeef:recyclerview-animators:2.3.0'}复制代码
  • 在Project的build.gradle中写入
repositories {    google()    jcenter()}复制代码

具体使用部分只要用动画类名替换之前默认的动画类名即可. 例如:

rvTest.setAdapter(mAdapter);rvTest.setItemAnimator(new SlideInLeftAnimator());复制代码

好了, 接下来看几个效果图吧:


最后

喜欢记得点赞哦, 有意见或者建议评论区见, 暗中关注我也是可以的.


转载地址:http://hnumo.baihongyu.com/

你可能感兴趣的文章
直接使用提交过来的类来更新字段EntityState.Modified并过滤null值的方法
查看>>
美团在Redis上踩过的一些坑-5.redis cluster遇到的一些问题
查看>>
浅谈JAVA的线程安全与性能之间的权衡
查看>>
python入门系列之一:Centos6下python2.7的安装
查看>>
31.软连接
查看>>
oracle 11g 手工热备-数据库
查看>>
跟我一起数据挖掘(17)——分布式缓存
查看>>
python paramiko 执行命令
查看>>
centos7安装
查看>>
docker强制删除none的image镜像
查看>>
JavaScript学习
查看>>
Linux下通用二进制安装包安装MySQL-5.6.37
查看>>
简单跳板机的搭建笔记
查看>>
Verizon宣布2018年将部署全国性NB-IoT网络
查看>>
python 十六进制转换十进制(MAC 转换 IP 地址)
查看>>
opensips使用加密密码认证
查看>>
静态元素过期时间
查看>>
php 解决乱码问题
查看>>
Ubuntu安装Mcafee步骤
查看>>
FTP服务器搭建下的主动模式和被动模式
查看>>