如何将包含url的数组传递给图像源到网格视图的imageadapter?

时间:2011-03-15 04:58:51

标签: android

如何将包含url作为图像源的数组传递给网格视图的imageadapter? 我有一个工作的图像适配器。但问题是适配器的getView方法只返回一个imageview。有人可以告诉如何将包含url的数组传递给gridview的图像适配器吗? getview方法在这里

    public View getView(final int position, View convertView, ViewGroup parent) {
    ImageView imageView = null;

        if (convertView == null) {  // if it's not recycled, initialise 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;
        }

    //  Bitmap bmp  = loadBitmap(url[i]);
        Bitmap bmp  = loadBitmap("http://www.fgj.com/aero/planes/boeing/boeingf15.jpg");
        System.out.println("in adapter :" + url[i]);
        imageView.setImageBitmap(bmp);

    //imageView.setImageResource(mThumbIds[position]);
    //Bitmap bmp  = loadBitmap("http://www.fgj.com/aero/planes/boeing/boeingf15.jpg");
    return imageView;
}

2 个答案:

答案 0 :(得分:1)

ArrayList<String> list;//list of image paths
public View getView(int position, View convertView, ViewGroup parent) 
{
    ImageView imageView;
    if (convertView == null) {
        imageView = new ImageView(context);
        imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setPadding(5, 5, 5, 5);
    } else {
        imageView = (ImageView) convertView;
    }
    Bitmap myBitmap = BitmapFactory.decodeFile("/sdcard/foldername/"+list.get(position));
    imageView.setImageBitmap(myBitmap);
    imageView.setBackgroundColor(-1);
    return imageView;
}

答案 1 :(得分:0)

不幸的是,很多比它需要的更难。您需要做的概述是:

  1. 收集您需要提取的网址。
  2. 创建AsyncTask以依次获取每个以线程池方式使用AsyncTasks池来为URL提供服务。在某个地方,您需要跟踪哪个网址属于AdapterView中的哪个位置,以便您可以在图像进入时有选择地使行无效。
  3. 将您获得的图像缓存回SD卡或内存中。
  4. 在图像进入时使行无效,导致它们从缓存中重新加载。
  5. 我个人认为该框架应该提供一个“WebImage”小部件,这将使这更容易一些。我想有太多的移动部件,每个应用程序自己实现它是有意义的。

    修改 - ,除非您使用图书馆并让其他人做脏工作。显然DroidFu有解决此问题的方法:ImageLoader。我没有使用它,但它可能不像滚动自己那样容易出错。