커스텀 갤러리뷰를 쓰려고 하는데요
제가 저장된 이미지가 아닌 비트맵에 저장된 이미지를 갤러리뷰로 뿌려주려고 하고있어요.
class ImageAdapter2 extends BaseAdapter {
private Context mContext;
private int[] mImageIds = { R.drawable.aa, R.drawable.bb, R.drawable.cc,
R.drawable.dd, };
public ImageAdapter2(Context c) {
mContext = c;
}
public int getCount() {
return mImageIds.length;
}
public Object getItem(int position) {
return mImageIds[position];
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(mContext);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mImageIds[position]);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
float scale = imageView.getResources().getDisplayMetrics().density;
int pixels = (int) (120 * ((scale * 160) / 160));
imageView.setLayoutParams(new Gallery.LayoutParams(pixels, pixels));
return imageView;
}
}
제가 갖고 있는 갤러리 소스는 drawable 폴더 안 리소스를 갤러리뷰로 뿌려주는 예제이거든요
이걸 제가 임의로 생성한 비트맵 11개를 리소스 이미지 대신해서 뿌려주려고 파란색코드를
아래와 같이 바꿧거든요
public View getView(int position, View convertView, ViewGroup parent) {
MainActivityUI m = new MainActivityUI();
ImageView []imageView = new ImageView[11];
ImageView temp = new ImageView(mContext);
int i = 0;
for(i = 0; i < 11; i++){
if (convertView == null) {
imageView[i] = new ImageView(mContext);
} else {
imageView[i] = (ImageView) convertView;
}
imageView[i].setImageBitmap(m.arrayBitmap[i]);
imageView[i].setScaleType(ImageView.ScaleType.FIT_XY);
float scale = imageView[i].getResources().getDisplayMetrics().density;
int pixels = (int) (120 * ((scale * 160) / 160));
imageView[i].setLayoutParams(new Gallery.LayoutParams(pixels, pixels));
temp = imageView[i];
}
return temp;
이렇게 바꾸니까 비트맵 생성은 하는데 막상 출력을 해보면 갤러리뷰에 검은 화면만 쭉나오네요..
왜그런걸까요?




getView는...View 하나에 해당하는 내용만 담는것입니다...모든 Item들의 View가 아닌... 그 item 하나의 view를 불려질때 호출됩니다.
Adapter를 다시 공부하시는게..
저렇게 짜시면 Imageview의 마지막 image만 temp로 계속 넘어가게 되는 구조구요.
엄청난 메모리 낭비 + 버벅거림을 동반하는;;