2 qq 15530467 qq_15530467 于 2017.01.03 21:26 提问

android recyclerview onBindViewHolder

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

3个回答

qq_15530467
qq_15530467   2017.01.04 14:48
已采纳

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

devmiao
devmiao   Ds   Rxr 2017.01.03 23:11
Mr_dsw
Mr_dsw   Ds   Rxr 2017.01.04 12:45

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
关于RecycleView不走onBindViewHolder和onCreateViewHolder问题
啊 recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recycl
RecyclerView不调用onCreateViewHolder和onBindViewHolder的解决方法
RecyclerView不调用onCreateViewHolder和onBindViewHolder的解决方法
NestedScrollView嵌套RecyclerView出现onBindViewHolder一直回调的问题
NestedScrollView嵌套RecyclerView出现onBindViewHolder的回调问题: 假设数据有800条,不嵌套默认显示10条,在初始化后不滑动,onBindViewHolder 回调10次, 而嵌套了则在初始化后不滑动的情况下会回调800次,APP崩了。。。
RecyclerView没有调用onCreateViewHolder()和onBindViewHolder()的可能原因
最近在做一个图片加载的项目。从网上拿到的json数据是ok的,但是就是没有显示出来图片,最后跟踪发现RecyclerViewAdapter的几个抽象方法没有执行,原来原因是getItemCount()的返回值为零,只有大于零时才会加载。
Recycleview调用itemcount次onBindViewHolder的原因
今天遇到一个奇葩问题,就是onBindViewHolder不是调用可见item个次数而是getItemCount次数。解决方法:方法一、将item的根布局换成relative方法二、在holder的创建时设置宽高itemView.setLayoutParams(new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, get...
RecyclerView方法onCreateViewHolder()和onBindViewHolder()没有调用
原因:至今小编都未知,初步分析为 android.support.constraint.ConstraintLayout有bug 打印log getItemCount() > 0 RecyclerViewAdapter 构造方法执行了 RecyclerView 基本的都设置了,还是不行。 最后只能修改布局文件,去掉布局文件中的外层包裹 <android.su
Android 探究onCreateViewHolder和onBindViewHolder两者关系和调用次数
导语    As we all know-众所周知,RecycleView 在展示数据列表的页面替换Listview的趋势已然出现,现在网络上关于它的资料也是铺天盖地,我就不再介绍如何使用了。但是,我对RecycleView的Adapter还是比较感兴趣的,因为懂得了Adapter,对于RecycleView的扩展及优化会很有帮助。这篇文章,先了解一下 onCreateViewHolder调用次数...
使用 Payload 提高 RecyclerView 渲染效率
RecyclerView.Adapter 中有个带有 payloads 参数的函数,由于这个函数不是抽象函数,被很多人忽略了。该函数定义如下: public void onBindViewHolder(VHholder, int position, ListObject> payloads) {             onBindViewHolder(holder, position);
RecycleView设置点击的两种方式:adapter中的onBindViewHolder(VH,int)方法中进行;实现RecyclerView的addonItemTouchListerner()
第一种方式:就是当布局需点击事件的控件较少时 class HomeAdapter extends RecyclerView.Adapter { //... public interface OnItemClickLitener { void onItemClick(View view, int position); void onItemLong
Android RecyclerView 真正的布局刷新的正确方式
在平时使用RecyclerView时,当想进行布局刷新时,我们通常会调用notifyItemChanged(int positon)进行布局刷新,如果item中图片的话,那么刷新就会出现闪烁,这是怎么回事了? 原因就是notifyItemChanged(int positon)是刷新整个item视图的,也就是重新调用onBindViewHolder方法进行item中所有控件的刷新,这自然会造成图片的