从网址下载图片并在列表视图中显示

时间:2013-07-04 11:53:15

标签: android

我从在线xml文件中获取标题,日期和图像,并将其存储在arraylist中。我已经采用了3种不同的arraylists来存储标题,日期和图像。

我成功获取图片网址,我的问题是如何从网址下载图片并在图片视图中显示。获取网址的代码如下。

  if((xpp_name.equals("content")))
  {                                                 
xpp.next(); 
    strvalue=xpp.getText();
    if(strvalue!=null){  
        String url = strvalue.substring(
                     strvalue.indexOf("src")+5,, strvalue.indexOf("jpg")+3);
     arrayList_for_images.add(url);
    }  
    xpp.next();     
    xpp.next();}                                                                                                                    

3 个答案:

答案 0 :(得分:0)

Here你可以找到一个延迟加载库来从URL下载图像并在ListView中显示它们。另外,我建议你避免使用3个不同的Arraylists,而只使用一个ArrayList,而是使用一个用于存储图像信息的自定义类(标题,日期和图像网址)。 / p>

编辑:以下是保存图片所需信息的示例类:

import java.util.Date;

public class ImageObject {

    private String image_name;
    private String image_url;
    private Date image_date;

public ImageObject() {
}

public ImageObject(String image_name, String image_url, Date image_date) {

    this.image_name = image_name;
    this.image_url = image_url;
    this.image_date = image_date;
}

public void setImageName(String image_name) {

    this.image_name = image_name;
}

public void setImageURL(String image_url) {

    this.image_url = image_url;
}

public void setImageDate(Date image_date) {

    this.image_date = image_date;
}


public String getImageName() {

    return this.image_name;
}

public String getImageURL() {

    return this.image_url;
}

public Date getImageDate() {

    return this.image_date;
}
}

以下是我使用ArrayList发起ImageObject的示例用法:

ArrayList<ImageObject> data = new ArrayList<ImageObject>();
ImageObject obj = new ImageObject("test.jpg", "www.imageurl.com", new Date());
data.add(obj);

这就是从ImageObject中检索某个ArrayList对象的值的方法:

data.get(0).getImageName(); 

答案 1 :(得分:0)

启动一个新线程,用于从Url下载图像,并在处理程序中的imageview中设置图像。

  private Bitmap pop_up_image_bitmap ;
  private  Handler handler ;
  private Runnable r;
  new Thread(new Runnable() {
        @Override
        public void run() {

            URL newurl;
            try {
                newurl = new URL(<Url>);
                pop_up_image_bitmap = BitmapFactory.decodeStream(newurl.openConnection() .getInputStream());
                handler.post(r);
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 


        }
    }).start();

放置处理程序:

    handler = new Handler();
     r = new Runnable()
    {
        public void run() 
        {
            if(pop_up_image_bitmap!=null){
            imageview.setImageBitmap(pop_up_image_bitmap);
            handler.postDelayed(this, 1000);
            popUpImageProgressBar.setVisibility(View.INVISIBLE);
            }
        }
    };

    handler.postDelayed(r, 1000);

答案 2 :(得分:0)

尝试这个最好的图像加载库。

https://github.com/nostra13/Android-Universal-Image-Loader