Android 从url下载图像并显示在列表视图中
我从一个在线xml文件中获取标题、日期和图像,并将其存储在arraylist中。我使用了3种不同的数组列表来存储标题、日期和图像 我成功地获得了图像url,我的问题是如何从url下载图像并在imageview中显示。获取url的代码如下所示Android 从url下载图像并显示在列表视图中,android,Android,我从一个在线xml文件中获取标题、日期和图像,并将其存储在arraylist中。我使用了3种不同的数组列表来存储标题、日期和图像 我成功地获得了图像url,我的问题是如何从url下载图像并在imageview中显示。获取url的代码如下所示 if((xpp_name.equals("content"))) { xpp.next(); strvalue=xpp.getText();
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();}
您可以找到一个延迟加载库,从URL下载图像并在列表视图中显示它们。另外,我建议您避免使用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;
}
}
下面是一个示例用法,我使用一个ImageObject
启动一个ArrayList
:
ArrayList<ImageObject> data = new ArrayList<ImageObject>();
ImageObject obj = new ImageObject("test.jpg", "www.imageurl.com", new Date());
data.add(obj);
启动从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();
试试这个最好的图像加载库
检查此项尝试此项用于listview使用惰性加载谢谢Srikanth、OMAK和Naveenas@Angelo说您也可以使用惰性加载程序。这是一个加载更多图像的好主意。@Akhilesh:谢谢你的回复,我也在尝试实现它。@Angelo谢谢你的回复,你能解释一下如何只使用一个arraylist来完成上面的操作吗?@user1740281我已经用一个示例类更新了答案。希望有帮助:)@Angelo:非常感谢,我一定会在我的应用程序中实现lazyload和ImageObject类。@user1740281很高兴我能提供帮助:)
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);