특정 폴더에 있는 사진만 load 하려고 합니다
밑에 있는 코드는 갤러리에 있는 모든 사진을보여주는데
어떻게 고치면 될까요
""/mnt/sdcard/" 이 경로에 있는 이미지 파일만 load 하려고 합니다
public class ImageList extends Activity {
private Context mContext;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.image_list);
mContext = this;
GridView gv = (GridView)findViewById(R.id.ImgGridView);
final ImageAdapter ia = new ImageAdapter(this);
gv.setAdapter(ia);
gv.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View v, int position, long id){
ia.callImageViewer(position);
}
});
}
/**==========================================
* Adapter class
* ==========================================*/
public class ImageAdapter extends BaseAdapter {
private String imgData;
private String geoData;
private ArrayList<String> thumbsDataList;
private ArrayList<String> thumbsIDList;
ImageAdapter(Context c){
mContext = c;
thumbsDataList = new ArrayList<String>();
thumbsIDList = new ArrayList<String>();
getThumbInfo(thumbsIDList, thumbsDataList);
}
public final void callImageViewer(int selectedIndex){
Intent i = new Intent(mContext, ImagePopup.class);
String imgPath = getImageInfo(imgData, geoData, thumbsIDList.get(selectedIndex));
i.putExtra("filename", imgPath);
startActivityForResult(i, 1);
}
public boolean deleteSelected(int sIndex){
return true;
}
public int getCount() {
return thumbsIDList.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null){
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(95, 95));
imageView.setAdjustViewBounds(false);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(2, 2, 2, 2);
}else{
imageView = (ImageView) convertView;
}
BitmapFactory.Options bo = new BitmapFactory.Options();
bo.inSampleSize = 8;
Bitmap bmp = BitmapFactory.decodeFile(thumbsDataList.get(position), bo);
Bitmap resized = Bitmap.createScaledBitmap(bmp, 95, 95, true);
imageView.setImageBitmap(resized);
return imageView;
}
private void getThumbInfo(ArrayList<String> thumbsIDs, ArrayList<String> thumbsDatas){
String[] proj = {MediaStore.Images.Media._ID,
MediaStore.Images.Media.DATA,
MediaStore.Images.Media.DISPLAY_NAME,
MediaStore.Images.Media.SIZE};
Cursor imageCursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
proj, null, null, null);
if (imageCursor != null && imageCursor.moveToFirst()){
String title;
String thumbsID;
String thumbsImageID;
String thumbsData;
String data;
String imgSize;
int thumbsIDCol = imageCursor.getColumnIndex(MediaStore.Images.Media._ID);
int thumbsDataCol = imageCursor.getColumnIndex(MediaStore.Images.Media.DATA);
int thumbsImageIDCol = imageCursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME);
int thumbsSizeCol = imageCursor.getColumnIndex(MediaStore.Images.Media.SIZE);
int num = 0;
do {
thumbsID = imageCursor.getString(thumbsIDCol);
thumbsData = imageCursor.getString(thumbsDataCol);
thumbsImageID = imageCursor.getString(thumbsImageIDCol);
imgSize = imageCursor.getString(thumbsSizeCol);
num++;
if (thumbsImageID != null){
thumbsIDs.add(thumbsID);
thumbsDatas.add(thumbsData);
}
}while (imageCursor.moveToNext());
}
imageCursor.close();
return;
}
private String getImageInfo(String ImageData, String Location, String thumbID){
String imageDataPath = null;
String[] proj = {MediaStore.Images.Media._ID,
MediaStore.Images.Media.DATA,
MediaStore.Images.Media.DISPLAY_NAME,
MediaStore.Images.Media.SIZE};
Cursor imageCursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
proj, "_ID='"+ thumbID +"'", null, null);
if (imageCursor != null && imageCursor.moveToFirst()){
if (imageCursor.getCount() > 0){
int imgData = imageCursor.getColumnIndex(MediaStore.Images.Media.DATA);
imageDataPath = imageCursor.getString(imgData);
}
}
imageCursor.close();
return imageDataPath;
}
}
}
private void getThumbInfo(ArrayList<String> thumbsIDs, ArrayList<String> thumbsDatas){
이 메소드가 파일 목록 가져오는것입니다.
여기서 파일목록 가져올 때 특정폴더만 분기해서 add하면 될거에요