android recyclerview onBindViewHolder

android recyclerview onBindViewHolder
在使用各类刷新函数来添加数据时,正常现象应该只调用显示着的item的onBindViewHolder函数。
而我在刷新时,所有的item都会被调用onBindViewHolder函数(包括不显示的item)
因此导致画面的大量运算而产生卡顿。
求解这是为什么?
ps:对recyclerview的使用应该没有问题,就是纳闷怎么会出现这种状况。

3个回答

经过4天的折磨终于知道原因了(知道产生这种的现象的原因了,虽然还不是根本原因)
是因为我对recyclerview控件的大小进行了一些适配大小的工作(比如LinearLayout的weight属性,google的百分比控件等),而导致这个问题。
现在使用java代码来固定大小就可以避免这个问题。
这应该是recyclerview的底层实现产生的问题吧,没有时间对源码深入研究。
如果有知道的大牛,求解惑。
也谢谢,回答这个问题的朋友!

你可以看看内部源码,就知道刷新的设计原理了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
RecyclerView适配器onBindViewHolder方法执行
适配器重,集合的数据个数是8个。 getItemCount方法重返回的也是8,但是onBindViewHolder方法只执行一次,数据只展示第一条。。求教大神,什么时候会出现这个问题
RecyclerView使用onBindViewHolder时,同一个Item总是有两个viewholder对象
场景:RecyclerView使用中同一个Item总是有两个viewHolder对象。 比如需要在viewHolder中保存上次刷新的数据时,同一个item有两个viewHolder对象,肯定时不行的,这时只需要在mRecycler中设置setSupportsChangeAnimations()为false即可。((SimpleItemAnimator)mRecycler.getItemAnima
android recyclerview
这是一个利用android recyclerview实现瀑布流的实例,本例子所用的工具是studio。
Android RecyclerView
简单的介绍了RecyclerView的使用,更多的是教大家使RecyclerView更简单的万能适配器BRVAH的使用
Android中RecyclerView嵌套RecyclerView
RecyclerView是v7包中的一个控件非常实用,尤其是嵌套,这是我在网上找的一个例子,放在这希望和大家下载交流。
Android代码-Android RecyclerView演示
AndroidRecyclerViewDemo Android RecyclerView Demo Blogs Android RecyclerView part 1 blog -->RecyclerView使用详解(一) Android RecyclerView part 2 blog -->RecyclerView使用详解(二) Android RecyclerView part 3 blog -->RecyclerView使用详解(三) Update ---20150615--- MultipleSelectFragment - RecyclerView Multiple Select and ActionMode; SingleSelectFragment - RecyclerView Single Select; Here you can find: NormalFragment - RecyclerView Basic Usage; MultipleFragment - RecyclerView Multiple Item; MultipleHeaderBottom
RecyclerView学习(一)Android recyclerView 适配器使用方法
1、新建一个适配器类继承RecyclerView.Adapter泛型是内部类的ViewHolder,然后重写onCreateViewHolder、onBindViewHolder、getItemCount方法。2、新建内部类ViewHolder继承RecyclerView.ViewHolder重写构造方法,用于存储实例对象,加强性能。 public class ListAdapter
Android RecyclerView的下拉加载更多
private List data1; 新建方法 判断是否滑动到底部 protected boolean isSlideToBottom(RecyclerView recyclerView) { if (recyclerView == null) return false; if (recyclerView.computeVerticalScrollE
Android RecyclerView OnScrollListener
![图片说明](https://img-ask.csdn.net/upload/201607/10/1468133462_491044.png)npublic class MyRecyclerView extends RecyclerView implements RecyclerView.OnScrollListenern n/**n * 记录当前第一个Viewn */nprivate View mCurrentView;nnprivate OnItemScrollChangeListener mItemScrollChangeListener;nnpublic void setOnItemScrollChangeListener(OnItemScrollChangeListener mItemScrollChangeListener)nn this.mItemScrollChangeListener = mItemScrollChangeListener;nnnpublic interface OnItemScrollChangeListenernn void onChange(View view, int position);nnnpublic MyRecyclerView(Context context, AttributeSet attrs)nn super(context, attrs);n // TODO Auto-generated constructor stubn this.setOnScrollListener(this);nnn@Overridenprotected void onLayout(boolean changed, int l, int t, int r, int b)nn super.onLayout(changed, l, t, r, b);nn mCurrentView = getChildAt(0);nn if (mItemScrollChangeListener != null)n n mItemScrollChangeListener.onChange(mCurrentView, getChildPosition(mCurrentView));n nnnn@Overridenpublic void onScrollStateChanged(int arg0)nnnn/**n *n * 滚动时,判断当前第一个View是否发生变化,发生才回调n */n@Overridenpublic void onScrolled(int arg0, int arg1)nn View newView = getChildAt(0);nn if (mItemScrollChangeListener != null)n n if (newView != null && newView != mCurrentView)n n mCurrentView = newView ;n mItemScrollChangeListener.onChange(mCurrentView, getChildPosition(mCurrentView));n n nnnnnn各位版主大神,这种是什么错误,该怎么解决呢?
Android RecyclerView实现瀑布流布局
先看看效果:       RecyclerView简单介绍: 1 背景: 常规的ListView功能已经足够强大,但是还是存在一些问题,例如,每次都需要自己创建一个ViewHolder、并手动判断是否有缓存View。Google推出的 RecyclerView,类继承public class RecyclerView extends ViewGroup implement
Android代码-RecyclerView适配器
NOTE This library is DEPRECATED and not recommended for utilization, as it uses very old versions of Rx and Gradle. However, I am leaving it here so that you might be able to draw on some of the concepts if you're implementing your own version, or for you to freely fork and modify / update. Known issues: The gradle version / bintray version are super duper old. Please remove any references to bintray if you clone this yourself, or update them as necessary. RxRecyclerViewAdapter Library 2.0 Cra
Android RecyclerView瀑布流 上拉加载更多
项目中要实现上拉加载更多的功能,先看效果图: 图很渣… 咋实现的呢? 1.先给RecyclerView增加一个FooterView,Footerview就是加载中显示的内容,例如:加载中…等 2.判断是否滑动到最后一个Item,控制FooterView的显示和隐藏 1.Adapter中添加Footerview: private static final int TYPE_ITEM_NORMAL ...
Android——RecyclerView下的观察者模式
首先看一下Observable这个类 public abstract class ObservableT> { protected final ArrayListT> mObservers = new ArrayListT>(); public void registerObserver(T observer) { if (observer =
android RecyclerView类库
android RecyclerView类库,本人使用jar包没有解决问题的情况下,想到使用类库。 这个类库包含所有与RecyclerView有关的东西。 和其它开源库用法一样。
android material design 之recyclerview
android开发自己总结
Android RecyclerView 的瀑布流式布局
关于RecyclerView 的使用基础都是RecyclerView转ListView,在RecyclerView的布局方面还有一种布局形式就是StaggeredGridLayoutManager,瀑布流式布局就像上面图片所展示的形式。如果还不太会使用RecyclerView建议先查看博客 Android RecyclerView之代替ListView与GridView 。瀑布流式布局这里的瀑布流式
android学习之RecyclerView的简单使用
RecyclerViewActivity
Android代码-Recyclerview
Recyclerview 常见问题处理(持续更新维护中...) 1. RecyclerView滚动定位 经常在开发中,需要将Recyclerview滑动到某个位置,然后定位这一个具体项,将他显示到顶部,用RecyclerView的默认移动的方法并不能实现这一点 但是,利用LinearLayoutManager,可以很方便的实现这一点。 不多说,直接上代码 int positon ="你指定滚动的位置"; layoutManager.scrollToPositionWithOffset(positon,0); layoutManager.setStackFromEnd(true); 2. Recyclerview 动态调整View的宽高 假如你有 10个item ,产品偶尔会让你一屏幕适配6个 ,剩余的可以滚动 下面介绍两种情况下的处理方案,一种是水平布局,一种是垂直布局 方便的处理办法1:修改适配器 public class HorizationAdapter extends BaseQuickAdapter { private LayoutInflater l
Android RecyclerView分割线的工具类
贴两个RecyclerView分割线的工具类,一个是LinearLayoutManager用的,一个是GridLayoutManager用的: public class HorizontalDividerItemDecoration extends FlexibleDividerDecoration { private MarginProvider mMarginProvider; ...
android recyclerview 的常用功能 demo
包含recyclerview 控件的常用方法,比如:Gallery效果、listview效果、GridView效果、瀑布流效果、瀑布流的下拉刷新上拉获取更多效果等。里面还有一个参考网址的文档(是关于上述功能的一写描述的)
Android RecyclerView上拉加载
*当然以前用ListView多一点,有相对的刷新控件进行(SwipeRefreshLayout)下拉刷新/上拉加载 *可是对于RecyclerView现在还是比较流行,SwipeRefreshLayout对于RecyclerView上拉加载确实不行的 * SmartRefreshLayout可以自定义刷新样式,易于扩展,ListView,RecyclerView,任何控件都适用 *可以直接添加项目中进行使用,效果明显
Android RecyclerView横向滑动+自动轮播
Android RecyclerView横向滑动+自动轮播(一款值得你借鉴的Demo)
Android RecyclerView批量操作
Android 中基于RecyclerView实现Item内容的批量删除,全选操作。
Android Recyclerview使用方法
DEMO实现功能: RecyclerView的点击事件: Item及item中的子View添加点击事件 RecyclerView Item之间添加分隔线:垂直与水平方向 RecyclerView 单个与多个Item的添加与删除 RecyclerView Item添加与删除动画效果 RecyclerView滚动状态监听 LayoutManager的使用 详见http://blog.csdn.net/yalinfendou
Android recyclerview 多选
代码只上传了src目录,自己新建一个工程复制进去就行。别忘了改包名和导入recyclerview库
Kotlin实现Android RecyclerView
AndroidStudio中通过Kotlin语言实现RecyclerView。
android recyclerview jar包
android recyclerview jar包android recyclerview jar包
android recyclerview布局
这是一个关于android的recyclerview布局,抛弃了传统的listview布局,可以添加分隔符
Android L RecyclerView
RecyclerView是android-support-v7-21版本中新增的一个Widget,官方介绍RecyclerView 是 ListView 的升级版本,更加先进和灵活。
Android学习笔记之RecyclerView详解
Android学习笔记之RecyclerView详解 RecyclerView是什么?  在android5.0,开始出现了一些新特性,其中就包括了非常受欢迎的RecyclerView。RecyclerView是一种新的视图组,其目的是为任何基于适配器的视图提供相似的渲染方式。该控件用于在有限的窗口中展示大量数据集,它被作为ListView和GirdView控件的继承者。RecyclerView高度
Android代码-RecyclerView
RefreshRecyclerView RecyclerAdapter : 支持下拉刷新,上拉加载,添加Header,Footer MultiTypeAdapter/CustomMultiTypeAdapter : 针对 复杂数据类型列表 展示Adapter 注意 所有的 adapter 可以配合任意的 RecyclerView 或者 它的子类 使用,而不是仅仅局限于 RefreshRecyclerView 这个组件。 使用方法 gradle依赖 compile 'cn.lemon:RefreshRecyclerView:2.0.0' compile 'com.android.support:recyclerview-v7:25.4.0' xml布局文件 java代码 mRecyclerView = (RefreshRecyclerView) findViewById(R.id.recycler_view); mRecyclerView.setSwipeRefreshColors(0xFF437845,0xFFE44F98,0xFF2FAC21); mR
Android之RecyclerView简单使用(完结篇)
昨日,我们送走了四年一度的2月29号,据说昨天也是世界妹子表白日。今天我们将迎来RecyclerView完结篇。之前我在考虑要不要写这篇,后来想了想,还是写了吧,以后自己用到了,可以回头看看。 我们都知道ListView可以下拉刷新,上拉加载,那RecyclerView可不可以呢? 答案:可以。Google给我们提供了一个下拉刷新的控件SwipeRefreshLayout,这个控件在v4包下。下
Android 笔记 RecyclerView的简单使用
RecyclerView创建列表与卡片 显示一列项目一般会使用基本的ListView或者GridView。后来在supper library里面增加了一个RecyclerView,里面封装了更全面的功能,官方教程更推荐使用这个新的显示列表项目的组件。在一本书《Android编程权威教程》里面介绍RecycleView的时候是这么讲的。假如一个列表有100项,每个项目包括1个TextView,那我们
Android——RecyclerView添加点击事件
RecyclerView相比与ListView的优点在于,ListView点击的是每个Item,但是每个Item中包含的控件是无法点击的,而RecyclerView每个Item的控件都是可以实现点击事件的。 接着上篇博文RecyclerView,我们只需修改FruitAdapter的代码即可: package com.example.test; import android.support.an...
Android RecyclerView的应用.rar
Android RecyclerView的应用
Android RecyclerView下拉刷新 & 上拉加载更多
GitHub传送门1.写在前面本文主要实现的是上拉加载更多功能,下拉刷新使用的是Google官方的SwipeRefreshLayout控件,因为在实现这个功能的时候走了不少弯路,所以在此记录下来分享给大家,先看下效果图:2.实现上拉加载实际上就是给RecyclerView增加一个FooterView,然后通过判断是否滑动到了最后一条Item,来控制FooterView的显示和隐藏,接下来我们来看下如
Android进阶知识点(RecyclerView)
XML布局属性 样式:是XML资源文件,含有用来描述组件行为和外观的属性定义。 主题:是各种样式的集合。从结构上来说,主题本身也是一种样式资源,只不过它的样式属性指向了其他样式资源。 主题属性引用:可将预定义的应用主题样式添加给指定组件。  dp:密度无关像素  sp: 缩放无关像素,这样像素会受用户字体偏好设置的影响,通常使用sp来设置屏幕上字体的大小。 Android开发要遵循
Android recyclerview源码分析(一)
源码分析基于22.2.1版本 先预览一下recyclerview 相关的类   今天先分析SortedList 和SortedListAdapterCallback   先看下这两个类的用法  SortedList mDataList=new SortedList      public class ObjectListCallback extends SortedLis
Android前沿技术—《RecyclerView》
RecyclerView 是Android L版本中新添加的一个用来取代ListView的SDK,它的灵活性、插拔性、高度解耦性与可替代性比listview更好。本视频详细讲解了RecyclerView的基本使用、设置Listview& Gridview效果、瀑布流效果、分割线、自定义设置item的点击事件以及删除和增加数据等功能。
android RecyclerView左滑删除
android RecyclerView左滑删除,仿QQ android RecyclerView左滑删除,仿QQ
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数