我从在线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();}
答案 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)