从URL下载图像并显示在列表视图中
我从一个在线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();}
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();
@ Angelo谢谢你的回复,你能解释一下如何使用一个数组列表来完成上述任务吗? – user1740281
@ user1740281我已经用示例类更新了答案。希望有所帮助:) – Angelo
@ Angelo:非常感谢,我一定会在我的应用中实现lazyload和ImageObject类。 – user1740281
启动一个用于从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);
正如@安杰洛所说,你也可以使用懒加载程序。这是加载更多图像的好主意。 –
@ Akhilesh:谢谢你的回复,我也试图实现这一点。 – user1740281
检查此[SO](http://stackoverflow.com/questions/12161137/android-download-image-from-url-and-show-in-imageview) –
尝试此http:/ /stackoverflow.com/a/16560535/1911784 – OMAK
对于listview使用懒加载http://stackoverflow.com/questions/541966/how-do-i-do-a-lazy-load-of-images-in-listview –