文档章节

RecyclerView删除方法notifyItemRemoved的坑

fantasiter
 fantasiter
发布于 2016/06/13 15:04
字数 216
阅读 3807
收藏 1
点赞 0
评论 1

平常我们删除列表的某个Item的时候,一般是先调用List的remove方法,然后通过notifyDataSetChanged来刷新列表.代码如下:


    //这种删除并刷新的方法是没有动画效果的
    @Override
    public void onBindViewHolder(final GoogleViewHolder holder, final int position) {
        final ItemBean item = items.get(position);
        holder.buttonRecyclerDelete.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    items.remove(position);
                    notifyDataSetChanged();
                   }
            });
    }

然而RecyclerView自带notifyItemRemoved方法不仅可以实现删除功能,而且还有动画效果. 然而并没有完,假如仅仅调用notifyItemRemoved的话,删除会出很多问题,比如:点击删除position = 1的Item,实际删除的是下一个,所以我们需要这么做,加上notifyItemRangeChanged这个方法,更新一下列表:


      @Override
    public void onBindViewHolder(final GoogleViewHolder holder, final int position) {
        final ItemBean item = items.get(position);
        holder.buttonRecyclerDelete.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    items.remove(position);
                    notifyItemRemoved(position);
                    notifyItemRangeChanged(position, getItemCount());
                }
            });
    }

© 著作权归作者所有

共有 人打赏支持
fantasiter
粉丝 1
博文 115
码字总数 24535
作品 0
青岛
加载中

评论(1)

真永远ddd
真永远ddd
快速删除还是有问题
终极解决办法
http://blog.csdn.net/iamdingruihaha/article/details/73274010
RecyclerView实现拖动排序和滑动删除功能

RecyclerView 的拖动排序需要借助一下 ItemTouchHelper 这个类,ItemTouchHelper 类是 Google 提供的一个支持 RecyclerView 滑动和拖动的一个使用类,下面使用该类实现 RecyclerView 的滑动删...

jzman
05/12
0
0
XamarinAndroid组件教程RecylerView动画组件使用动画(2)

XamarinAndroid组件教程RecylerView动画组件使用动画(2) 如果开发者要为RecylerView的子元素添加动画效果,需要使用RecyclerView类中的SetItemAnimator()方法,其语法形式如下: 其中,anima...

大学霸
05/16
0
0
RecyclerView进阶

上篇文章我们讲解了RecyclerView的基本使用,本篇就让我们承接上篇文章讲下RecyclerView的进阶使用。 没看过上篇的朋友可以点击右边的传送门:《RecyclerView基本使用》 背景 RecyclerView有...

安卓小哥
2017/12/26
0
0
使用RecyclerView替代ListView(一)

RecyclerView是一个比ListView更灵活的一个控件,以后可以直接抛弃ListView了。具体好在哪些地方,往下看就知道了。 首先我们来使用RecyclerView来实现ListView的效果,一个滚动列表,先看下...

henry-zhang
2015/10/16
5K
0
Android进阶——框架打造之RecyclerView框架

前言 RecyclerView已经完全替代了ListView的开发,其强大之处在于性能、内存、使用、灵活、丰富的API、动画、事件处理上都可以完美的体现出来,对于开发者来说RecyclerView是必须精通的一关,...

qq_30379689
01/07
0
0
Android - RecyclerView系列之添加删除数据的注意事项

老婆保佑,代码无BUG 目录 一:如何实现添加删除数据 二: 解决方案(从下标0位置开始添加) 三:添加数据后,下表错位问题 一:如何实现添加删除数据 在之前的系列文章中,我有一个图片,如...

Allens_Jiang
01/04
0
0
使用RecyclerView实现带头部分组的GridView

A SectionedGridRecyclerViewAdapter: use this class to realize a simple sectioned grid RecyclerView.Adapter. You can use this class to realize a simple sectioned grid RecyclerVie......

Mobile-DEV彬
2016/05/03
1K
0
RecyclerView加载更多的一个坑

当RecyclerView只有一个元素的时候,这个时候向下滑动,是不会调用onScroll方法的,但是会调用onScrollStateChanged方法,因此,不能把获取Item数量的方法写在onScroll方法里,需要写在onScrollSta...

fantasiter
2016/08/08
48
0
安卓易学,爬坑不易—腾讯老司机的RecyclerView局部刷新爬坑之路

前言 安卓开发者都知道,RecyclerView比ListView要灵活的多,但不可否认的里面的坑也同样埋了不少人。下面让我们看看腾讯开发工程师用实例讲解自己踩坑时的解决方案和心路历程。 话说有图有真...

codeGoogle
前天
0
0
一个点背的java抽象类的问题

在使用RecyclerView的时候遇到了一个很坑的问题,记录这个大坑! 首先,在使用RecyclerView.Adapter的时候定义了一个BaseListAdapter,代码如下: public abstract class BaseListAdapter<T ...

Turman
2016/03/31
80
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

rabbitmq学习记录(三)

工作队列:一个生产者,多个消费者,生产者直接将消息发送到rabbitmq的队列之中 默认采用的是轮询分配:即不管消费者处理信息的效率,队列给所有消费者轮流发送一条信息,直至消息发送完毕 ...

人觉非常君
18分钟前
0
0
Java 之 反射

反射,剖析 Java类 中的 各个组成部分,映射成 一个个 Java对象,多用于 框架和组件,写出复用性高的通用程序。 测试类代码如下: class Person { private String name; public St...

绝世武神
22分钟前
0
0
华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大

华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大!华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大! 在华为最新发布的nova 3手机上,抖音通过华为himedia SDK集成了60fps、超级...

华为终端开放实验室
28分钟前
0
0
多 SSH Key 实现同一台服务器部署多 Git 仓库

本文以以下需求为背景,介绍详细的做法: 需在同一台服务器同时部署两个不同的 Github 仓库(对 Bitbucket 等 git 服务同样适用) root 用户可在远程登录 SSH 后附上预期的 SSH Key 进行 gi...

yeahlife
30分钟前
0
0
003. es6数值的扩展

一、普通扩展 Number 方法,将字符串、数值转为十进制 : Number('0b111') Number.isFinite() 用来检查一个数值是否为有限的:Number.isFinite(15) Number.isNan() 用来检查一个值是否为NaN N...

秋季长青
44分钟前
0
0
C语言数组和指针的语法糖

对于C语言,我可以这样秀:比如当创建一个数组arr[n]之后,一般我们去遍历数组的时候是for (int i = 0; i < n; i++) { a[i]; }但是我知道下表访问符[]是个语法糖,也就是说a[i]在编译器看来是...

ustbgaofan
52分钟前
0
0
Call to undefined function bcmath()的解决方法

乐意黎的ECS主机环境,Centos7.2 + PHP7 由于使用了bcdiv()函数,运行时总在抛错。 Fatal error: Call to undefined function bcmath() in /usr/loca/apache/htdocs/... on line 4 一查得知:......

dragon_tech
58分钟前
0
0
css优先级

..

architect刘源源
今天
0
0
【转】Twitter的分布式自增ID算法snowflake

结构 snowflake的结构如下(每部分用-分开): 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000 第一位为未使用,接下来的41位为毫秒级时间(41位的长度可以...

talen
今天
0
0
hive支持行级修改

Hive从0.14版本开始支持事务和行级更新,但缺省是不支持的,需要一些附加的配置。要想支持行级insert、update、delete,需要配置Hive支持事务。 一、Hive具有ACID语义事务的使用场景 1. 流式...

hblt-j
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部