[英]Glide rounded corner on notifydatasetchanged() is lost and becoming square
我正在使用 glide 加载图像 url 并应用圆角转换。 它适用于 recyclerview 的首次设置。 稍后当我在分页后调用notifydatasetchanged()
,它变成方形。 我错过了什么?
Glide.with(mContext)
.load(primary.getpSmallImage())
.bitmapTransform(new RoundedCornersTransformation(mContext, 8, 0, RoundedCornersTransformation.CornerType.ALL))
.placeholder(R.drawable.ic_ph_small)
.into(thumbnailImage);
使用此 diskCacheStrategy 将所有转换后的媒体项保存到缓存。
Glide.with(mContext)
.load(primary.getpSmallImage())
.diskCacheStrategy(DiskCacheStrategy.RESULT)
.bitmapTransform(new RoundedCornersTransformation(mContext, 8, 0,
RoundedCornersTransformation.CornerType.ALL))
.placeholder(R.drawable.ic_ph_small)
.into(thumbnailImage);
如果在调用notifydatasetchanged()
后出现问题,则不要使用它。 事实上,该方法会占用大量 CPU 资源并在 recyclerview 中重新创建每个项目,即使这些项目已经添加。
分页时使用notifyItemInserted
或notifyItemRangeInserted
。 它会让你避免你的问题。
根本不要使用notifyDataSetChanged()
方法进行分页。 而是使用notifyItemInserted()
。 DiffUtil是提高应用程序性能的更好选择。
如果您在onBindViewHolder()
方法中加载图像, onBindViewHolder()
不应发生此问题。
datalist.clear(); //clear old data before adddi
SampleAdapter adapter = (SampleAdapter) recyclerview.getAdapter();
recyclerview.setAdapter(null);
recyclerview.setAdapter(adapter);
datalist.addAll(resource.getData());//add new data
adapter.notifyDataSetChanged();
我也有同样的问题并以这种方式修复它
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.