如何在Android中加载RecyclerView背景中的所有图像

如何在Android中加载RecyclerView背景中的所有图像,android,android-recyclerview,lazy-loading,picasso,Android,Android Recyclerview,Lazy Loading,Picasso,嗨,我在一个有1000条记录的回收器视图上工作,在那里我需要显示远程图像。Iam一次加载20条记录。屏幕上一次可以显示6条记录(基于android设备的屏幕大小)。当行显示在屏幕上时,recycler视图向后端请求图像,这会导致花费一些时间在屏幕上显示它(我使用毕加索库进行延迟加载)。你能建议我如何一次在后台缓存所有20个图像吗?这样,当用户向下滚动时,我可以立即向用户显示图像。(这是我们的要求)我认为这是您需要做的,但不完全是20条记录 首先,您需要实现此LinearLayoutManager

嗨,我在一个有1000条记录的回收器视图上工作,在那里我需要显示远程图像。Iam一次加载20条记录。屏幕上一次可以显示6条记录(基于android设备的屏幕大小)。当行显示在屏幕上时,recycler视图向后端请求图像,这会导致花费一些时间在屏幕上显示它(我使用毕加索库进行延迟加载)。你能建议我如何一次在后台缓存所有20个图像吗?这样,当用户向下滚动时,我可以立即向用户显示图像。(这是我们的要求)

我认为这是您需要做的,但不完全是20条记录

首先,您需要实现此LinearLayoutManager:

public class PreCachingLayoutManager extends LinearLayoutManager {
private static final int DEFAULT_EXTRA_LAYOUT_SPACE = 600;
private int extraLayoutSpace = -1;
private Context context;

public PreCachingLayoutManager(Context context) {
    super(context);
    this.context = context;
}

public PreCachingLayoutManager(Context context, int extraLayoutSpace) {
    super(context);
    this.context = context;
    this.extraLayoutSpace = extraLayoutSpace;
}

public PreCachingLayoutManager(Context context, int orientation, boolean reverseLayout) {
    super(context, orientation, reverseLayout);
    this.context = context;
}

public void setExtraLayoutSpace(int extraLayoutSpace) {
    this.extraLayoutSpace = extraLayoutSpace;
}

@Override
protected int getExtraLayoutSpace(RecyclerView.State state) {
    if (extraLayoutSpace > 0) {
        return extraLayoutSpace;
    }
    return DEFAULT_EXTRA_LAYOUT_SPACE;
}
}
然后将其设置为循环视图的布局管理器

PreCachingLayoutManager layoutManager = new  
PreCachingLayoutManager(getActivity());
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
layoutManager.setExtraLayoutSpace(DeviceUtils.getScreenHeight(getActivity()));
recyclerView.setLayoutManager(layoutManager);