문제

Android Application을 개발 중입니다. 내 응용 프로그램 갤러리보기의 SD 카드 폴더에서 이미지를 표시하고 싶습니다.나는 BaseAdapter를 사용하고 있습니다.내 프로젝트의 리소스 폴더의 Drawable 폴더에서 이미지를 표시하려고 시도했으며 잘 작동합니다. 나는 다음 코드를 시도했다 :

public class ImageAdapter extends BaseAdapter {

private Context context;  
public static Integer[] imageIDs={  
        R.drawable.sp1,R.drawable.sp2,
        R.drawable.sp3,R.drawable.sp4,
        R.drawable.sp5,R.drawable.sp6,
        R.drawable.sp7,R.drawable.sp8,
        R.drawable.sp9
};

public ImageAdapter(Context context){  
    this.context=context;  
}  
@Override
public int getCount() {
    // TODO Auto-generated method stub
    return imageIDs.length;
}

@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return position;
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
}

@Override
public View getView(int position, View 
        convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    ImageView image=new ImageView(context);  
    image.setImageResource(imageIDs[position]);  
    image.setAdjustViewBounds(true);  
    image.setLayoutParams(new Gallery.LayoutParams(120,120));  
    image.setScaleType(ImageView.ScaleType.FIT_CENTER);
    return image;  
}
.

이제 SD 카드 폴더에서 이미지를 표시하고 갤러리 형식으로 표시하고 싶습니다. 그 때문에 나는 배열의 모든 이미지를 얻으려고했지만 배열 형식으로 얻는 방법을 모른다.다음과 같은 방식으로 SD 폴더에서 내 이미지에 액세스 할 수 있습니다.

File path = new File(Environment.getExternalStorageDirectory()+"/download/sp1.jpg");
.

배열 형식으로 모든 것을 가져 와서 갤러리 View에 표시하는 방법은 배열 대신에 표시하는 다른 대체 방법이 있습니까?

도움이 필요해 .... 감사합니다 ....

도움이 되었습니까?

해결책

아래 코드 참조

if (android.os.Environment.getExternalStorageState().equals(
            android.os.Environment.MEDIA_MOUNTED)) {

        // It have to be matched with the directory in SDCard
        boolean exist = new File(Environment.getExternalStorageDirectory()
                + File.separator + "download").exists();
        if (exist) {
            File f = new File(Environment.getExternalStorageDirectory()
                    + File.separator + "download");

            File[] files = f.listFiles();
            File file;
            for (int i = 0; i < files.length; i++) {
                file = files[i];
                Bitmap bitmap = decodeFile(file);
                return bitmap;      
            }
        }
    }
.

이런 식으로 할 수 있습니까?

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return files.length;
}



@Override
public View getView(int position, View 
        convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    ImageView image=new ImageView(context);  

    //image.setImageResource(imageIDs[position]);  
    File file = files[position]
    Bitmap bitmap = decodeFile(file);
    image.setImageBitmap(bitmap);

    image.setAdjustViewBounds(true);  
    image.setLayoutParams(new Gallery.LayoutParams(120,120));  
    image.setScaleType(ImageView.ScaleType.FIT_CENTER);
    return image;  
}
.

다른 팁

비트 맵으로 이미지를로드해야합니다.

getView(...){
File f = new File(directory, filename);
Bitmap bitmap = BitmapFactory.decodeFile(f.getPath());
...
ImageView image=new ImageView(context);
image.setImageBitmap(bitmap);
}
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top