static引发的RecyclerView上下滚动数据显示异常的bug

之前使用RecyclerView从来没有出现过这种问题。问题大致是这样的,当滑动RecyclerView时,某项item内的数据不断发生改变。如图所示:

从图中可以看到,中间的一项内容随着滚动在不断的发送变换。

找了好久没找到原因,后来去stackoverflow上找了下,找到了类似的问题,但是依然没有解决方法,后来无意翻看以前的代码,想起来写ViewHolder的时候把成员变量声明成static了,当时可能是由于脑抽了顺手写了个static,就因为这个static,导致了数据显示异常,解决方法就是把成员变量的static修饰符删除。具体原因么,意会意会。static修饰后就成类属性了。

修改前代码

  public static class ViewHolder extends RecyclerView.ViewHolder {
        public  static TextView title;
        public  static TextView time;
        public  static TextView click;
        public  static TextView author;

        public ViewHolder(View itemLayoutView) {
            super(itemLayoutView);

                //findView 

        }
    }

修改后代码

  public static class ViewHolder extends RecyclerView.ViewHolder {
        public  TextView title;
        public  TextView time;
        public  TextView click;
        public  TextView author;

        public ViewHolder(View itemLayoutView) {
            super(itemLayoutView);

                //findView 

        }
    }
时间: 2024-08-10 00:06:35

static引发的RecyclerView上下滚动数据显示异常的bug的相关文章

RecyclerView的滚动事件OnScrollListener研究

(1)滚动事件分类 列表的滚动一般分为两种: 1.手指按下 -> 手指拖拽列表移动 -> 手指停止拖拽 -> 抬起手指 2.手指按下 -> 手指快速拖拽后抬起手指 -> 列表继续滚动 -> 停止滚动 上面的过程的状态变化如下: 1.静止 -> 被迫拖拽移动 -> 静止 2.静止 -> 被迫拖拽移动 -> 自己滚动 -> 静止 (2)监听RecyclerView的滚动 有两种方式可以监听滚动事件: 1.setOnScrollListener(

SharePoint 2013 引发类型为“System.ArgumentException”的异常。 参数名: encodedValue

SharePoint 2013 引发类型为"System.ArgumentException"的异常. 参数名: encodedValue 详细错误信息 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.ArgumentException: 引发类型为"System.ArgumentException"的异常. 参数名: encodedValue 源错误:

转 引发类型为“System.ExecutionEngineException”的异常。

数据原型 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]        public struct AccountMsg        {            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 21)]            public byte[] Name;                         /*w姓名*/     

关于MySQL-Proxy子进程异常退出BUG修复

关于 MySQL-Proxy 子进程异常退出的问题,我已经在之前的博文中提到过: http://sofar.blog.51cto.com/353572/1398820 相关的错误信息如下图所示: 经查阅11号信号为SIGSEGV,表示进程执行了一个无效的内存引用或发生段错误,从而导致子进程异常退出. 我们知道 MySQL-Proxy 采用的是父子进程的模式,处理请求都是由子进程来完成的,而父进程只起到监控子进程的作用, 我们一般会在 MySQL-Proxy 的配置文件中添加"keepalive=

使用RecyclerView实现滚动控件

滚动控件的实现方式有很多, 使用RecyclerView也比较简单. 做了一个简单的年龄滚动控件, 让我们来看看RecyclerView的使用方式, 主要有以下几点: (1) 对齐控件中心位置. (2) 计算滚动距离. (3) 高亮中心视图. (4) 实时显示中心数据. (5) 停止时自动对齐. (6) 滚动时, 设置按钮状态开关. 1. 框架 主要关注RecyclerView部分逻辑. /** * 初始化年龄滑动条 */ private void initAgeList() { LinearL

RecyclerView(滚动控件)的用法

1.首先在build.gradle中添加依赖库 compile 'com.android.support:recyclerview-v7:24.2.1' 2.修改activity_main.xml <LinearLayout ...... <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="maych_parent" a

在RecyclerView列表滚动的时候显示或者隐藏Toolbar

先看一下效果: 本文将讲解如何实现类似于Google+应用中,当列表滚动的时候,ToolBar(以及悬浮操作按钮)的显示与隐藏(向下滚动隐藏,向上滚动显示),这种效果在Material Design 清单中有提到: "在合适的地方,当列表向下滚动,app bar可以退出屏幕,以便为内容区域留下更多的空间:而当列表向上滚动回来的时候,app bar又重新显示出来". 注:这里的向下滚动是指滚动到下面查看更多内容,相对应的手势操作其实是往上.同理向上滚动是指查看前面的内容,而手势其实是向下

仿微信未读RecyclerView平滑滚动定位效果

效果图有红点的地方表示有未读消息,依次双击首页图标定位,然后定位到某个未读在手动下滑一点距离在次点击定位效果 用过 RecyclerView 的人都知道,自带有几个滚动到item下标的方法,但是不靠谱,靠谱的又没有平滑效果,所以还是得自己写,主要是模仿了微信的一些定位逻辑 首先,要滚动到指定的坐标出,可以借用recyclerview自带的几个方法,但是无论哪个方法首先得需要指定position,所以第一件事情就是先把position找准确了 上面代码就是查询出可见条目开始最近的一条未读item的

C++异常处理解析: 异常的引发(throw), 捕获(try catch)、异常安全

前言: C++的异常处理机制是用于将运行时错误检测和错误处理功能分离的一 种机制(符合高内聚低耦合的软件工程设计要求),  这里主要总结一下C++异常处理的基础知识, 包括基本的如何引发异常(使用throw)和捕获异常(try catch)相关使用注意点, 以及C++标准库提供的一套标准异常类和这些异常类的继承层级结构以及相关使用方法和常用习惯. C++异常的引发(throw): 引发C++异常的语法就是使用throw语句: throw object; 注意这里throw抛出的是一个对象,也就是