내부에 저장되어있는 사진파일을 썸네일을 만들고 해당 썸네일을 선택하면 전체화면으로 보여주는데요

이미지의 저장위치가 한군데에 모여 있으면 정상 동작을 하지만 여러 위치에 저장해 놓으면 어느 정도까지는 잘 되다가

썸네일과 이미지가 서로 다르게 매칭이 되네요ㅠ

썸네일구성은 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로 나와 이미지가 보이지않는 경우도 있습니다

왜 그런지 좀 봐주세요ㅠ 답답하네요