インターネットからダウンロードした写真を表示するための gridView 用のアダプターを作成しました。コードの一部は次のとおりです。
public class ImageAdapter extends BaseAdapter {
int mGalleryItemBackground;
private Context mContext;
public ArrayList<Drawable> drawablesFromUrl = new ArrayList<Drawable>();
public ImageAdapter(Context c) {
mContext = c;
}
public void addItem(Drawable item) {
drawablesFromUrl.add(item);
}
public int getCount() {
return drawablesFromUrl.size();
}
public Drawable getItem(int position) {
return drawablesFromUrl.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageDrawable(drawablesFromUrl.get(position));
return imageView;
}//View getView
}//class ImageAdapter
正常に動作し、ダウンロードした写真は ArrayList "drawablesFromUrl.get(position)" に保存されました
これで、別のアクティビティを開いて imagView に個々の写真を表示するインテントを作成しました。コードの一部は次のようにリストされています。
SitePhotoGallery pg = new SitePhotoGallery();
ImageAdapter imageAdapter = pg.new ImageAdapter(this);
Drawable dPhoto=imageAdapter.drawablesFromUrl.get(position); //(ERROR in this line)
BitmapDrawable bPhoto = (BitmapDrawable) dPhoto;
Bitmap snoop = bPhoto.getBitmap();
//Bitmap snoop = BitmapFactory.decodeResource(getResources(),imageAdapter.mThumbIds[position]);
img.setImageBitmap(snoop);
img.setMaxZoom(4f);
setContentView(img);
エラーが表示されます:
07-11 15:22:11.458: E/AndroidRuntime(12856): java.lang.RuntimeException: アクティビティ
ComponentInfo を開始できません {com.android.mcsis/com.android.mcsis.SitePhotoFullScreen}: java.lang.IndexOutOfBoundsException: 無効ですインデックス 0、サイズは 0
imageAdapter.drawablesFromUrl.get(position);
配列リストが空だと思います。私が間違っていることはありますか?