首页 > 学院 > 开发设计 > 正文

LRecyclerView框架 notifyDataSetChanged 图片闪烁的问题

2019-11-09 15:42:51
字体:
来源:转载
供稿:网友

在使用一叶飘舟的LRecyclerView时 由于该框架使用了观察者模式来处理headerView和footView,因此不能用普通的方法来解决notifyDataSetChanged后图片闪烁的问题

研究了一下解决步骤如下:

解决原理仍旧是使用tag的方式保存信息

在adapter里给viewholder设置tag的方式保存图片url

viewHolder.mPReview.setTag(item.getScaledUrl());

由于LRecyclerView使用了观察者模式,因此仅仅将mDataAdapter设置setHasStableIds为true是不够的,需要同时将mLRecyclerViewAdapter也设置setHasStableIds为true

mDataAdapter.setHasStableIds(true);mLRecyclerViewAdapter.setHasStableIds(true);

注意:

mLRecyclerViewAdapter.setHasStableIds(true);

需要在

mRecyclerView.setAdapter(mLRecyclerViewAdapter);

前面设置,否则会报错

最后在adapter中重写了getItemId方法

@Override public long getItemId(int position) { return position; }

但是发现报Called attach on a child which is not detached错误

跟踪了下源码发现是由于LRecyclerViewAdapter有一个ArrowRefreshHeader所以导致itemid多了一位

因此将getitemid()方法返回值更改为

return position - 1;

问题就解决了


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表