前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >界面无小事(八):RecyclerView增删item

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

作者头像
sean_yang
发布2018-09-04 11:23:43
7660
发布2018-09-04 11:23:43
举报
文章被收录于专栏:Sorrower的专栏

前言

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


增删item

当然首先你可以按照第一篇-界面无小事(一): RecyclerView+CardView了解一下建立基础的RecyclerView. 这次的关键是在适配器代码中加入增删item的操作. 要注意一点, 刷新和原来在ListView的操作是不一样的. 你可以直接看官方文档, 大致有这几个:

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

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

代码语言:javascript
复制
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按钮, 对应这两个方法.

代码语言:javascript
复制
<?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">
    <item
        android:id="@+id/add"
        android:icon="@mipmap/ic_launcher"
        android:title="@string/add"
        app:showAsAction="never" />

    <item
        android:id="@+id/del"
        android:icon="@mipmap/ic_launcher"
        android:title="@string/del"
        app:showAsAction="never" />
</menu>

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

效果图

不单单是我演示的这种布局, 还有线型的, 横向的, 瀑布流都可以有这种类似效果. 可参考界面无小事(二): 让RecyclerView展示更多不同视图. 那既然有默认动画, 肯定就能自定义动画了. 在这之前, 先说说几个方法. 用来设置动画的具体状态的持续时间.

代码语言:javascript
复制
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中写入
代码语言:javascript
复制
dependencies {
  implementation 'jp.wasabeef:recyclerview-animators:2.3.0'
}

  • 在Project的build.gradle中写入
代码语言:javascript
复制
repositories {
    google()
    jcenter()
}

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

代码语言:javascript
复制
rvTest.setAdapter(mAdapter);
rvTest.setItemAnimator(new SlideInLeftAnimator());

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

SlideInLeftAnimator

ScaleInAnimator

LandingAnimator


最后

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


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.08.15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 增删item
  • 自定义增删动画
  • 最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档