图片适配器动态添加ImageViews到GridView的无光标 [英] Image Adapter adding ImageViews dynamically to GridView without Cursor

查看:99
本文介绍了图片适配器动态添加ImageViews到GridView的无光标的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想保持短期和简单。我设置了一个ImageAdapter到一个GridView。 Unfortunatley我工作不符合标准的图像路径​​,但也有一些,我对我自己创建的。

下面是我的ImageAdapter - 在视图中,您将看到-imageView.setImageBitmap(extractThumbnail(BM,10,10)); - 这条线只刷新当前图像显示...我怎么能为每个画面的图像视图用类似这样的循环下,构造器查看? - 光标不工作对我来说,我认为,他们只能用pre定义的内容处理URI的

我会很高兴有一定的帮助。坦克提前

 私有类ImageAdapter扩展了BaseAdapter {
    私人语境mContext;

    公共ImageAdapter(上下文C){
        mContext = C;
    }

    公众诠释getCount将(){
        返回1;
    }

    公共对象的getItem(INT位置){
        返回null;
    }

    众长getItemId(INT位置){
        返回0;
    }

    //创建由适配器引用的每个项目的新的ImageView
    公共查看getView(INT位置,查看convertView,ViewGroup中父){
        ImageView的ImageView的;
        如果(convertView == NULL){//如果它不回收,初始化一些属性
            ImageView的=新ImageView的(mContext);
            imageView.setLayoutParams(新GridView.LayoutParams(85,85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8,8,8,8);
        } 其他 {
            ImageView的=(ImageView的)convertView;
        }

        文件F =新的文件(IMAGE_DIRECTORY);
        文件[]文件= f.listFiles();
        imageView.setImageURI(Uri.parse(Environment.getExternalStorageDirectory()+/ MYDIR /));
        的for(int i = 0; I< files.length;我++){
            位图BM = BitmapFactory.de codeFILE(IMAGE_DIRECTORY +文件分割符+文件[I] .getName());

            imageView.setImageBitmap(extractThumbnail(宽多重峰,10,10));

        }
         返回ImageView的;
    }
}
 

解决方案

我有同样的问题,解决了这种方式。我希望帮助。

 公共类ImageAdapter扩展了BaseAdapter {

    私人语境mContext;
    私人位图[] mis_fotos;

    公共ImageAdapter(上下文C){
        mContext = C; }

    公众诠释getCount将(){
        get_images();
        返回mis_fotos.length;
        }

    公共对象的getItem(INT位置){
        返回null; }

    众长getItemId(INT位置){
        返回0; }

    公共查看getView(INT位置,查看convertView,ViewGroup中父){
        ImageView的ImageView的;
        如果(convertView == NULL){
            ImageView的=新ImageView的(mContext);
            imageView.setLayoutParams(新GridView.LayoutParams(200,150));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(0,0,0,0);
        } 其他 {
            ImageView的=(ImageView的)convertView;
        }
        imageView.setImageBitmap(mis_fotos [位置]);
        返回ImageView的;
    }

    私人无效get_images(){
        文件目录=新的文件(Variables.PATH_FOTOS);

        文件[] archivos = directory.listFiles();
        mis_fotos =新的位图[archivos.length]

        对于(INT CONT = 0;续< archivos.length;续++){

            文件imgFile =新的文件(archivos [续]的ToString());
            mis_fotos [续] = BitmapFactory.de codeFILE(imgFile.getAbsolutePath());
        }
    }
}
 

I want to keep it short and simple. I have set up an ImageAdapter to a Gridview. Unfortunatley i am working not with the standard picture paths but with some that i created on my own.

Here is my ImageAdapter - under view you will see -imageView.setImageBitmap(extractThumbnail(bm, 10, 10)); - this line only refreshes the current image view... how can i create an image view for each picture with a loop like under Contructor View? - Cursor dont work for me I think, they only can deal with the pre defined content URI's.

I would be glad for some help. Tank you in Advance

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

解决方案

I had the same problem and solved it this way. I hope that helps.

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

这篇关于图片适配器动态添加ImageViews到GridView的无光标的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆