public ArrayList<Path> getSelected(boolean expandSet) {
   ArrayList<Path> selected = new ArrayList<Path>();
   if (mIsAlbumSet) {
     if (mInverseSelection) {
       int total = getTotalCount();
       for (int i = 0; i < total; i++) {
         MediaSet set = mSourceMediaSet.getSubMediaSet(i);
         Path id = set.getPath();
         if (!mClickedSet.contains(id)) {
           if (expandSet) {
             expandMediaSet(selected, set);
           } else {
             selected.add(id);
           }
         }
       }
     } else {
       for (Path id : mClickedSet) {
         if (expandSet) {
           expandMediaSet(selected, mDataManager.getMediaSet(id));
         } else {
           selected.add(id);
         }
       }
     }
   } else {
     if (mInverseSelection) {
       int total = getTotalCount();
       int index = 0;
       while (index < total) {
         int count = Math.min(total - index, MediaSet.MEDIAITEM_BATCH_FETCH_COUNT);
         ArrayList<MediaItem> list = mSourceMediaSet.getMediaItem(index, count);
         for (MediaItem item : list) {
           Path id = item.getPath();
           if (!mClickedSet.contains(id)) selected.add(id);
         }
         index += count;
       }
     } else {
       for (Path id : mClickedSet) {
         selected.add(id);
       }
     }
   }
   return selected;
 }