我正在使用照片库制作应用,并且我有RecycleView来显示这些照片。有很多问题,但我解决了很多问题。我添加了AsyncTask来加载照片。
class BitmapWorkerTask extends AsyncTask<File, Void, Bitmap> {
private final WeakReference<ImageView> imageViewReference;
private File data = null;
public BitmapWorkerTask(ImageView imageView) {
// Use a WeakReference to ensure the ImageView can be garbage collected
imageViewReference = new WeakReference<ImageView>(imageView);
}
// Decode image in background.
@Override
protected Bitmap doInBackground(File... params) {
data = params[0];
return load();
}
// Once complete, see if ImageView is still around and set bitmap.
@Override
protected void onPostExecute(Bitmap bitmap) {
if (imageViewReference != null && bitmap != null) {
final ImageView imageView = imageViewReference.get();
if (imageView != null) {
imageView.setImageBitmap(bitmap);
}
}
}
}
现在,我遇到了快速滚动的问题。如果我们已经跳过一些照片,我不想设置图像。 我在Android文档上找到了这个文档(http://developer.android.com/training/improving-layouts/smooth-scrolling.html) 我想实现这个
if (v.position == position) {
// If this item hasn't been recycled already, hide the
// progress and set and show the image
...
}
但我不知道什么是v.position,如何设置它,什么是位置以及如何从RecyclerView获取它。你能帮我解决这个问题吗?
提前致谢。
答案 0 :(得分:0)
如果我们已经跳过一些照片
,我不想setImage要实现此次传递,请将RecyclerView的LinearLayoutManager及当前位置传递给AsyncTask
getLayoutManager()
public BitmapWorkerTask(ImageView imageView,LinearLayoutManager layoutManager,int viewPosition) {
// Use a WeakReference to ensure the ImageView can be garbage collected
imageViewReference = new WeakReference<ImageView>(imageView);
this.layoutManager = layoutManager;
this.position = viewPosition;
}
在PostExecute中执行此操作
protected void onPostExecute(Bitmap bitmap) {
if(position >= layoutManager.findFirstVisibleItemPosition() && position <= layoutManager.findLastVisibleItemPosition()){
if (imageViewReference != null && bitmap != null) {
final ImageView imageView = imageViewReference.get();
if (imageView != null) {
imageView.setImageBitmap(bitmap);
}
}
}
}
但我不知道什么是v.position,如何设置它,什么是位置以及如何从RecyclerView获取它。
我在这里无法理解你的问题,但是如果你的意思是用视图存储位置,那么你可以使用view.setTag()来存储位置