Pregunta

Estoy desarrollando Aplicación de Android.En mi solicitud Quiero mostrar imágenes de la carpeta de la tarjeta SD en la vista de la Galería.Estoy usando BaseAdapter.Intenté mostrar imágenes de la carpeta Dibujable en la carpeta de recursos en mi proyecto y está funcionando bien. Intenté seguir código:

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;  
}

Ahora quiero mostrar imágenes de la carpeta de la tarjeta SD y mostrarlas en formato de la galería. Para eso intenté obtener todas las imágenes en matriz, pero no sé cómo obtenerlos en formato de matriz.Puedo acceder a mis imágenes en la carpeta SD de la siguiente manera.

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

Cómo obtenerlos en formato de matriz y mostrarlos en Gallery View.or ¿Hay alguna otra forma alternativa de mostrarlos en lugar de la matriz?

Necesito ayuda ... Gracias ...

¿Fue útil?

Solución

ver por debajo del código

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;      
            }
        }
    }

¿Puedes hacer de esta manera

@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;  
}

Otros consejos

Necesitas cargar las imágenes como mapas de bits:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top