界面无小事(八):RecyclerView增删item

界面无小事(一): RecyclerView+CardView了解一下

界面无小事(二): 让RecyclerView展示更多不同视图

界面无小事(三):用RecyclerView + Toolbar做个文件选择器

界面无小事(四):来写个滚动选择器吧!

界面无小事(五):自定义TextView

界面无小事(六):来做个好看得侧拉菜单!

界面无小事(七):使用代码动态增删布局


目录

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

前言

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


增删item

当然首先你可以按照第一篇-界面无小事(一): RecyclerView+CardView了解一下建立基础的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按钮, 对应这两个方法.

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"><itemandroid:id="@+id/add"android:icon="@mipmap/ic_launcher"android:title="@string/add"app:showAsAction="never" /><itemandroid:id="@+id/del"android:icon="@mipmap/ic_launcher"android:title="@string/del"app:showAsAction="never" />
</menu>
复制代码

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

不单单是我演示的这种布局, 还有线型的, 横向的, 瀑布流都可以有这种类似效果. 可参考界面无小事(二): 让RecyclerView展示更多不同视图.

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

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

自定义增删动画

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

Animators

分类动画类名
CoolLandingAnimator
ScaleScaleInAnimator, ScaleInTopAnimator, ScaleInBottomAnimator, ScaleInLeftAnimator, ScaleInRightAnimator
FadeFadeInAnimator, FadeInDownAnimator, FadeInUpAnimator, FadeInLeftAnimator, FadeInRightAnimator
FlipFlipInTopXAnimator, FlipInBottomXAnimator, FlipInLeftYAnimator, FlipInRightYAnimator
SlideSlideInLeftAnimator, 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://www.mzph.cn/news/450909.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Failed to install Tomcat7 service 解决

见&#xff1a; http://blog.csdn.net/desow/article/details/21446197 tomcat 安装时出现 Failed to install Tomcat7 service 今天在安装tomcat时提示 Failed to install Tomcat7 service了&#xff0c;花了大半天的时间找到了原因&#xff0c;下面分享给大家&#xff0c;希望…

保守官僚 诺基亚就这样迷失在智能机时代?

7月19日&#xff0c;诺基亚发布了二季度财报&#xff0c;净亏损达到了17亿美元&#xff0c;其中智能手机份额和销售量进一步下滑&#xff0c;这个智能手机的领导者&#xff0c;正在因智能手机而急速坠落。诺记亚领先业界近十年就把握住了智能手机的趋势&#xff0c;并推出了首款…

django集成ansibe实现自动化

动态生成主机列表和相关参数 def create_admin_domain(admin_node):workpath BASE_DIR /tools/ansible/scripthosts_file BASE_DIR /tools/ansible/host/ createhostfile()yml_file BASE_DIR /tools/ansible/yml/ create_admin_domain.ymldomain_path admin_node.doma…

extend 对象继承

function extend(o, n, override) {for (var p in n) {if (n.hasOwnProperty(p) && (!o.hasOwnProperty(p) || override))o[p] n[p];} }// 默认参数 var options {pageIndex: 1,pageTotal: 2 };// 新设置参数 var userOptions {pageIndex: 3,pageSize: 10 }extend(o…

【spring容器启动】之bean的实例化和初始化(文末附:spring循环依赖原理)

本次我们通过源码介绍ApplicationContext容器初始化流程&#xff0c;主要介绍容器内bean的实例化和初始化过程。ApplicationContext是Spring推出的先进Ioc容器&#xff0c;它继承了旧版本Ioc容器BeanFactory&#xff0c;并进一步扩展了容器的功能&#xff0c;增加了bean的自动识…

如何将自己的Java项目部署到外网

见&#xff1a;http://jingyan.baidu.com/article/90bc8fc864699af653640cf7.html 做b/s模式的web开发不同于c/s模式的客户端开发&#xff0c;c/s模式我们只要做好生成可执行文件发送给其他人&#xff0c;其他人就可以用了。但是c/s模式不同&#xff0c;在同一局域网下&#xf…

[Swift]LeetCode916.单词子集 | Word Subsets

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号&#xff1a;山青咏芝&#xff08;shanqingyongzhi&#xff09;➤博客园地址&#xff1a;山青咏芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;➤GitHub地址&a…

揭秘腾讯研究院输出策略:产品和人才的孵化器

直到现在&#xff0c;腾讯研究院创始人郑全战仍坚持面试招入研究院的每一个人&#xff0c;并做详细记录。天赋上的灵性、性格中的包容是他看重的&#xff0c;当然首先人要踏实。大约6年前&#xff0c;郑全战加入腾讯&#xff0c;负责筹建中国互联网公司中的第一个研究院&#x…

java后端必会【基础知识点】

&#xff08;一&#xff09;java集合类&#xff08;done&#xff09; 在java集合类中最常用的是Collection和Map的接口实现类。Collection又分为List和Set两类接口&#xff0c;List的实现类有ArrayList、LinkedList、Vector、Stack&#xff0c;Set接口的实现类有HashSet、Tree…

无法连接虚拟设备ide1:0,主机上没有相对应的设备... 解决

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 运行虚拟机出现报错&#xff1a; 无法连接虚拟设备ide1:0&#xff0c;主机上没有相对应的设备&#xff0c;您 要在每次开启此虚拟机时都…

缴满15年能领多少钱 养老金计算公式网上疯传

社保人员称我省计算方式与各设区市平均工资挂钩&#xff0c;与网上不同 最近&#xff0c;关于“延迟退休”引起各方高度关注&#xff0c;成为广大居民十分关心的话题。是否延迟退休尚无定论&#xff0c;但在网上有不少关于养老金的计算。那网上流传的计算方法是否科学&#xff…

48_并发编程-线程-资源共享/锁

一、数据共享多个线程内部有自己的数据栈&#xff0c;数据不共享&#xff1b;全局变量在多个线程之间是共享的。1 # 线程数据共享不安全加锁2 3 import time4 from threading import Thread, Lock5 6 7 num 1008 9 def func(t_lock): 10 global num 11 t_lock.acquire…

移动硬盘提示无法访问设备硬件出现致命错误,导致请求失败的资料寻回方案

J盘打不开设备硬件出现致命错误,导致请求失败&#xff0c;是因为这个I盘的文件系统内部结构损坏导致的。要恢复里面的数据就必须要注意&#xff0c;这个盘不能格式化&#xff0c;否则数据会进一步损坏。具体的恢复方法看正文 工具/软件&#xff1a;星空数据恢复软件 步骤1&…

VMware10上新建虚拟机步骤图解

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 第一种 : 自定义方式&#xff1a; 安装虚拟机的过程步骤&#xff0c;基本上过程的每一步都有截图&#xff0c;跟着过程就可以很容易的创…

怎么理解 IaaS、SaaS 和 PaaS 的区别?

原文链接&#xff1a;怎么理解 IaaS、SaaS 和 PaaS 的区别&#xff1f; 一、定义层面的区别 SaaS、PaaS、IaaS简单的说都属于云计算服务&#xff0c;也就是云计算服务。我们对于云计算的概念&#xff0c;维基百科有以下定义&#xff1a; Cloud computing is a new form of In…

三星“打法”:先模仿对手 再吃掉对手

台湾地区电子业者将三星视为“台湾公敌”&#xff0c;事实上&#xff0c;它几乎是全球电子业者的敌人。 这家韩国电子业巨头十年之间夺取了日本企业在这一领域中纵横30年的荣光&#xff0c;更是建立起了令人叹为观止的垂直整合帝国。 韩国政府的大力支持、日元升值韩元贬值等均…

SharpZipLib 压缩ZIP导出

1      var uploadSectionDir Path.Combine("Upload", "QQ", DateTime.Now.ToString("yyyyMMdd"));2 string uploadDir Path.Combine(HttpRuntime.AppDomainAppPath, uploadSectionDir);3 if (!Directory.Exi…

java动态调用c++库

前言 最近在做一个通过java程序调用c动态语言库&#xff0c;在网上百度&#xff0c;谷歌找了诸多例子&#xff0c;还是屡试不爽。经过一番折腾还是披荆斩棘&#xff0c;创出一条道路。希望分享给正在迷茫的朋友们... 使用的环境 spring boot gradle JNI介绍 JNI全拼是Java Nat…

如何删除虚拟机上的操作系统、删除新建的虚拟机

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 打开VMware&#xff0c;我安装了三个虚拟系统&#xff0c;要对win98进行删除&#xff0c;从磁盘上删除~~ 2、双击你要删除的系统&#xf…

什么是QoS技术

QoS&#xff08;Quality of Service&#xff09;是服务质量的简称。从传统意义上来讲&#xff0c;无非就是传输的带宽、传送的时延、数据的丢包率等&#xff0c;而提高服务质量无非也就是保证传输的带宽&#xff0c;降低传送的时延&#xff0c;降低数据的丢包率以及时延抖动等。…