我有一个垂直的RecyclerView,其中包含Picasso加载的图像。我需要图像宽度为“match_parent”,高度为“75dp”。在我的Adaper的方法onBindViewHolder()我写道:
holder.vImage.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Picasso.with(context)
.load(party.getImageRectangleURL())
.placeholder(context.getResources().getDrawable(R.mipmap.ic_launcher))
.error(context.getResources().getDrawable(R.mipmap.ic_launcher))
.resize(holder.vImage.getWidth(), holder.vImage.getHeight())
.centerCrop()
.into(holder.vImage);
}
});
我现在遇到问题:
想象一下,我有12个元素。其中10个在创建活动时可见,2个在用户向下滚动之前不可见。 Picasso仅加载前10个图像,当用户向下滚动时,最后2个项目将替换为占位符。但!如果用户在活动加载后立即向下滚动,则也会加载最后2张图像。
我在网上读到,如果高度或宽度等于0,Picasso甚至不会尝试加载图像。也许我有这个问题,因为最后2个元素不可见,所以RecyclerView不会创建它们。
当滚动后元素变得可见时,我可以做些什么来强制Picasso加载文件。 (欢迎任何其他想法)