2013-07-04 150 views
0

我從一個在線XML文件中提取標題,日期和圖像並將其存儲在一個數組列表中。我採用了3種不同的數組列表來存儲標題,日期和圖像。從URL下載圖像並顯示在列表視圖中

我成功地獲取圖像網址,我的問題是如何從網址下載圖像並將其顯示在圖像視圖中。下面是獲取url的代碼。

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

檢查此[SO](http://stackoverflow.com/questions/12161137/android-download-image-from-url-and-show-in-imageview) –

+0

嘗試此http:/ /stackoverflow.com/a/16560535/1911784 – OMAK

+0

對於listview使用懶加載http://stackoverflow.com/questions/541966/how-do-i-do-a-lazy-load-of-images-in-listview –

回答

0

Here你可以找到一個延遲加載庫來從URL下載圖像,並顯示在一個ListView。此外,我建議你避免使用3個不同的Arraylists,而只使用一個ArrayList,而用一個用於存儲圖像信息(標題,日期和圖像url)的自定義類。

編輯:下面是一個例子類,用於保存所需圖像的信息:

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(); 
+0

@ Angelo謝謝你的回覆,你能解釋一下如何使用一個數組列表來完成上述任務嗎? – user1740281

+0

@ user1740281我已經用示例類更新了答案。希望有所幫助:) – Angelo

+0

@ Angelo:非常感謝,我一定會在我的應用中實現lazyload和ImageObject類。 – user1740281

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); 
+0

正如@安傑洛所說,你也可以使用懶加載程序。這是加載更多圖像的好主意。 –

+0

@ Akhilesh:謝謝你的回覆,我也試圖實現這一點。 – user1740281

相關問題