안드로이드 개발 질문/답변
(글 수 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로 나와 이미지가 보이지않는 경우도 있습니다
왜 그런지 좀 봐주세요ㅠ 답답하네요