Mur*_*ali 4 android lazy-loading picasso android-recyclerview
嗨,我正在处理具有 1000 条记录的 Recycler 视图,我需要在其中显示远程图像。我一次加载 20 条记录。屏幕上一次可以显示6条记录(基于android设备的屏幕大小)。当行显示在屏幕上时,回收器视图正在向后端请求图像,这导致在屏幕上显示它需要一些时间(我使用 picasso 库进行延迟加载)。您能否建议我一次在后台缓存所有 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;
}
}
Run Code Online (Sandbox Code Playgroud)
然后将其设置为布局管理器以供您回收视图。
PreCachingLayoutManager layoutManager = new
PreCachingLayoutManager(getActivity());
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
layoutManager.setExtraLayoutSpace(DeviceUtils.getScreenHeight(getActivity()));
recyclerView.setLayoutManager(layoutManager);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3230 次 |
| 最近记录: |