Адаптер изображения, добавляющий ImageViews динамически в GridView без курсора - PullRequest
3 голосов
/ 25 июля 2011

Я хочу, чтобы это было коротко и просто.Я настроил ImageAdapter для Gridview.К сожалению, я работаю не со стандартными путями изображения, а с некоторыми, которые я создал самостоятельно.

Вот мой ImageAdapter - под ним вы увидите -imageView.setImageBitmap (extractThumbnail (bm, 10, 10));- эта строка только обновляет текущее представление изображения ... как я могу создать представление изображения для каждого изображения с помощью цикла, как в представлении Contructor?- Курсор не работает для меня, я думаю, они могут работать только с предопределенными URI контента.

Я был бы рад некоторой помощи.Заранее благодарю

private class ImageAdapter extends BaseAdapter {
    private Context mContext;

    public ImageAdapter(Context c) {
        mContext = c;
    }

    public int getCount() {
        return 1;
    }

    public Object getItem(int position) {
        return null;
    }

    public long getItemId(int position) {
        return 0;
    }

    // create a new ImageView for each item referenced by the Adapter
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) {  // if it's not recycled, initialize some attributes
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8, 8, 8, 8);
        } else {
            imageView = (ImageView) convertView;
        }

        File f = new File(IMAGE_DIRECTORY);
        File[] files = f.listFiles();
        imageView.setImageURI(Uri.parse(Environment.getExternalStorageDirectory()+"/MyDir/"));
        for(int i=0; i<files.length; i++){
            Bitmap bm = BitmapFactory.decodeFile(IMAGE_DIRECTORY + File.separator + files[i].getName());

            imageView.setImageBitmap(extractThumbnail(bm, 10, 10));

        }
         return imageView;
    }
}

1 Ответ

1 голос
/ 04 февраля 2012

У меня была такая же проблема, и я решил ее таким образом.Я надеюсь, что это помогает.

public class ImageAdapter extends BaseAdapter {

    private Context mContext;
    private Bitmap[]mis_fotos;

    public ImageAdapter(Context c) {
        mContext = c;    }

    public int getCount() {
        get_images();
        return mis_fotos.length;
        }

    public Object getItem(int position) {
        return null;    }

    public long getItemId(int position) {
        return 0;    }

    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) {
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(200, 150));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(0, 0, 0, 0);
        } else {
            imageView = (ImageView) convertView;
        }
        imageView.setImageBitmap(mis_fotos[position]);
        return imageView;
    }

    private void get_images(){
        File directory = new File(Variables.PATH_FOTOS);   

        File[] archivos =directory.listFiles();
        mis_fotos= new Bitmap[archivos.length];

        for (int cont=0; cont<archivos.length;cont++){

            File imgFile = new  File(archivos[cont].toString());                
            mis_fotos[cont] = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
        }   
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...