안녕하세요 갤러리를 만들고 있는데요. baseAdapter 에서 이미지가 자꾸 바껴나와서 질문 드립니다.


public View getView(int _position, View convertView, ViewGroup parent) {

position = _position;

if (convertView == null) {

convertView = inflater.inflate(image, parent, false);

galleryChild = new GalleryChild();

galleryChild.ptz = (PinchToZoom) convertView.findViewById(R.id.image);

galleryChild.loader = (ProgressBar) convertView.findViewById(R.id.loader);

convertView.setTag(galleryChild);

}

else

galleryChild = (GalleryChild) convertView.getTag();

// 1번 방법 

galleryChild.bmp = LoadBitmap(dataList.get(_position));

galleryChild.ptz.setImageBitmap(galleryChild.bmp);

// 2번 방법 

galleryChild.ptz.setImageBitmap(bm.loadBitmap(dataList.get(_position)));



return convertView;

}



일단 설명드리면 1번 방법은 스레드 작성한코드입니다. 


      2번 방법은 스레드 없이 바로 비트맵 디코딩해서 가져 오는 코드입니다.



2번 방법으로 했을때는 이미지가 제대로 맞게 나오는데요.

1번 방법으로 했을때는 이미지가 엉켜서 나옵니다.



1번의 경우 notifyDataSetChanged() 했을때 이미지가 다시 바뀌기도 하는데요..

로그를 찍어보면 LoadBitmap 함수에서 리턴 받는 비트맵이 getview() 처음 호출시 null로 나오는데요.


그런데 궁금한게 그뒤로는 getview() 호출시 null이 안나오고 아마 이전에 로드됬던 bitmap이 나오는데요.


구조적으로 어떻게 손을 봐야할지 감이 안잡힙니다. 하루종일 삽질하고 있는데 좀 도와주세요 ㅠㅠ