안드로이드 개발 질문/답변
(글 수 45,052)
내부에 저장되어있는 사진파일을 썸네일을 만들고 해당 썸네일을 선택하면 전체화면으로 보여주는데요
이미지의 저장위치가 한군데에 모여 있으면 정상 동작을 하지만 여러 위치에 저장해 놓으면 어느 정도까지는 잘 되다가
썸네일과 이미지가 서로 다르게 매칭이 되네요ㅠ
썸네일구성은 GridView와 Adapter로 하였고 Cursor를 이용하여 Query 작성하여 매칭하는 방식으로 하였습니다
소스 구성입니다
private void getThumbInfo(ArrayList<String> thumbsIDs, ArrayList<String> thumbsDatas) {
String[] projection = {MediaStore.Images.Thumbnails._ID,
MediaStore.Images.Thumbnails.DATA,
MediaStore.Images.Thumbnails.IMAGE_ID
};
Cursor imageCursor = managedQuery(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
projection, null, null, MediaStore.Images.Thumbnails.IMAGE_ID);
if (imageCursor != null && imageCursor.moveToFirst()) {
String thumbsID;
String thumbsImageID;
String thumbsData;
int thumbsIDCol = imageCursor.getColumnIndex(MediaStore.Images.Thumbnails._ID);
int thumbsDataCol = imageCursor.getColumnIndex(MediaStore.Images.Thumbnails.DATA);
int thumbsImageIDCol = imageCursor.getColumnIndex(MediaStore.Images.Thumbnails.IMAGE_ID);
int num = 0;
do {
thumbsID = imageCursor.getString(thumbsIDCol);
thumbsData = imageCursor.getString(thumbsDataCol);
thumbsImageID = imageCursor.getString(thumbsImageIDCol);
num++;
if (thumbsImageID != null) {
thumbsIDs.add(thumbsID);
thumbsDatas.add(thumbsData);
}
} while (imageCursor.moveToNext());
}
imageCursor.close();
return;
}
private String getImageInfo(String thumbID) {
String imageDataPath = null;
String[] proj = {MediaStore.Images.Media._ID,
MediaStore.Images.Media.DATA,
};
Log.e(TAG, "[rascaldom] thumbID = " + thumbID);
Cursor imageCursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
proj, "_ID='"+ thumbID +"'", null, null);
Log.v(TAG, "[rascaldom] imageCursor = " + imageCursor + ", imageCursor.moveToFirst() = " + imageCursor.moveToFirst());
if (imageCursor != null && imageCursor.moveToFirst()) {
if (imageCursor.getCount() > 0) {
int imgData = imageCursor.getColumnIndex(MediaStore.Images.Media.DATA);
Log.i(TAG, "[rascaldom] imgData = " + imgData);
imageDataPath = imageCursor.getString(imgData);
}
}
imageCursor.close();
Log.d(TAG, "[rascaldom] imageDataPath = " + imageDataPath);
return imageDataPath;
}
}
로그 추가하여 확인해보니 리스트상에서 3번째 이미지를 선택하였는데 thumbID가 7로 나오는 등 오동작이 조금 보입니다
하지만 선택된 이미지는 제대로 나오는 경우도 있고요 또한 imageCursor.moveToFirst() 가 false로 나와 이미지가 보이지않는 경우도 있습니다
왜 그런지 좀 봐주세요ㅠ 답답하네요



