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