繁体   English   中英

在notifydatasetchanged() 上滑动圆角丢失并变成方形

[英]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 中重新创建每个项目,即使这些项目已经添加。

分页时使用notifyItemInsertednotifyItemRangeInserted 它会让你避免你的问题。

根本不要使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM