我正在尝试创建一个从网站上加载照片的简单应用程序(如9gag)。我正在使用jSoup和asyncTask。问题是当我运行应用程序时它只向我显示图像的URL。我该怎么做才能在listView中显示图像而不是url。 XML问题?帮助: - /
![屏幕截图] https://www.dropbox.com/s/moybisjrbdgzjre/Screenshot_2013-04-29-20-09-13.png
这是我的LoadImages类:
public LoadImages(ArrayList list, ArrayAdapter adapter)
{
this.list = list;
this.adapter = adapter;
}
@Override
protected Elements doInBackground(String... params) {
org.jsoup.nodes.Document doc = null;
try
{
doc =Jsoup.connect("http://mongol.co.il/").get();
return doc.select("img");
}
catch (IOException e1)
{
e1.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Elements result) {
super.onPostExecute(result);
int flag=0;
//Bitmap bitmap = null;
for ( org.jsoup.nodes.Element div : result )
{
String bla = div.absUrl("src");
list.add(bla);
flag++;
if(flag==3)
break;
}
adapter.notifyDataSetChanged();
}
这也是我的.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
</LinearLayout>
提前致谢!
答案 0 :(得分:0)
此时您只提取网址。您需要获取实际的位图数据才能显示图像。有两种方法可以做到这一点:
一般来说,通过展示你拥有的东西来快速回应是一种更好的体验(选项#2)。 ListView非常有利于这个模型。在适配器的getView()方法中,您将在触发AsyncTask以获取位图时显示占位符图像。然后,您将在onPostExecute中设置Image。不幸的是,View回收会让事情变得混乱。这种基本实现将导致在许多情况下显示错误的图像,并且如果用户快速来回滚动,则会导致设备完全无响应。
幸运的是,这些是其他人已经解决的问题。事实上,有一套优秀的tutorials along with sample code on Android Developer website。
答案 1 :(得分:0)
我做过这样的事情:
我有DB
ID
,image URL
,image URI
image URI
类似于file:////mnt/sdcard/<your package>/images/image1.png
我的每一行都有一个地方持有人图片,而Arraylist
我已将image URI
放入Arraylist
。然后在getView
方法中检查URI file
是否存在,如果不存在,则发送广播以下载该图像(带有ID)。在下载程序中,我使用相应的URL获取图像。
如何检查URI存在:使用URI创建文件对象并调用isExists()
如何发送广播:在intent
中创建ID
置extras
,然后致电sendBroadcast(intent)
现在如何在下载图片后刷新列表:从broadcast
发送另一个onPostExecute()
到刷新列表,并在{{1}中捕获broadcast
}并致电activity
。
答案 2 :(得分:0)
您正在将String添加到列表中
String bla = div.absUrl("src");
list.add(bla);
您需要创建custom adapter
(适用于ListView
),即String bla
和下载图片。
试试这个tutorial