显示网址而不是图片Android应用

时间:2013-04-29 17:16:32

标签: java android image android-layout listview

我正在尝试创建一个从网站上加载照片的简单应用程序(如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> 

提前致谢!

3 个答案:

答案 0 :(得分:0)

此时您只提取网址。您需要获取实际的位图数据才能显示图像。有两种方法可以做到这一点:

  1. 下载所有图片,然后在获取所有内容后显示列表
  2. 立即使用图片占位符显示列表,按原样获取图像 需要
  3. 一般来说,通过展示你拥有的东西来快速回应是一种更好的体验(选项#2)。 ListView非常有利于这个模型。在适配器的getView()方法中,您将在触发AsyncTask以获取位图时显示占位符图像。然后,您将在onPostExecute中设置Image。不幸的是,View回收会让事情变得混乱。这种基本实现将导致在许多情况下显示错误的图像,并且如果用户快速来回滚动,则会导致设备完全无响应。

    幸运的是,这些是其他人已经解决的问题。事实上,有一套优秀的tutorials along with sample code on Android Developer website

答案 1 :(得分:0)

我做过这样的事情:

我有DB IDimage URLimage URI

image URI类似于file:////mnt/sdcard/<your package>/images/image1.png

我的每一行都有一个地方持有人图片,而Arraylist我已将image URI放入Arraylist。然后在getView方法中检查URI file是否存在,如果不存在,则发送广播以下载该图像(带有ID)。在下载程序中,我使用相应的URL获取图像。

如何检查URI存在:使用URI创建文件对象并调用isExists()

如何发送广播:在intent中创建IDextras,然后致电sendBroadcast(intent)

现在如何在下载图片后刷新列表:从broadcast发送另一个onPostExecute()到刷新列表,并在{{1}中捕获broadcast }并致电activity

答案 2 :(得分:0)

您正在将String添加到列表中

 String bla = div.absUrl("src");
 list.add(bla);

您需要创建custom adapter(适用于ListView),即String bla下载图片。

试试这个tutorial