0
this 자습서를 기반으로 갤러리 뷰어를 만들었으며 미리보기 이미지를 클릭 할 때 문제가 있습니다. 예를 들어 두 번째 축소판 그림을 클릭하면 세 번째로 이동합니다. 네 번째를 클릭하면 다섯 번째로 이동합니다. 그러나 여섯 번째를 클릭하면 실제로 여섯 번째로 이동합니다. 축소판의 위치 및 어댑터 재활용과 관련이 있다고 생각하지만 솔루션으로 넘어지지 않습니다.안드로이드 갤러리 뷰어 재활용
public class ImageAdapter extends BaseAdapter {
private Context ctx;
int imageBackground;
public ImageAdapter(Context c) {
ctx = c;
TypedArray ta = obtainStyledAttributes(R.styleable.Gallery1);
imageBackground = ta.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 1);
ta.recycle();
}
public int getCount() {
return mImagesUrls.size();
}
public Object getItem(int arg0) {
return arg0;
}
public long getItemId(int arg0) {
return arg0;
}
// Thumbnails gallery
public View getView(int arg0, View arg1, ViewGroup arg2) {
ImageView iv;
if (arg1 == null) {
iv = new ImageView(ctx);
} else {
iv = (ImageView) arg1;
}
// iv.setImageResource(mImagesUrls.get(arg0));
mCache.loadBitmap(mImagesUrls.get(arg0), iv);
iv.setScaleType(ImageView.ScaleType.FIT_XY);
// Image size of the thumbnails
iv.setLayoutParams(new Gallery.LayoutParams(200, 120));
iv.setBackgroundResource(imageBackground);
GalleryTitleTv.setText((arg0 + 1) + " van " + mImagesUrls.size());
return iv;
}
}
고마워 사전에 :
이 내 어댑터입니다!
편집
: 나는 그것이 썸네일의 위치와의 재활용을 함께 할 수있는 뭔가가 있어야합니다 가정public void loadBitmap(String url, ImageView imageView) {
Bitmap mImageHolder = BitmapFactory.decodeResource(context.getResources(), R.drawable.pic_2);
final String imageKey = url;
final Bitmap bitmap = get(imageKey);
if (bitmap != null) {
imageView.setImageBitmap(bitmap);
} else {
imageView.setImageBitmap(mImageHolder);
BitmapWorkerTask task = new BitmapWorkerTask(imageView);
task.execute(url);
}
}
네, 맞습니다 :'View' 매개 변수를 항상'null'로 만드는 버그가 있습니다. – noloman
HashMap을 사용하여 위치를 키로 사용하여 URL을 검색하고 HashMap을 사용하여 URL이 지정된 비트 맵을 검색합니까? – Blackbelt
나는이 접근법에 나쁜 점이 있다고 생각한다. – noloman