10

可能重复:
Android - 如何在 ListView 中延迟加载图像

美好的一天,我已经完成了一个带有文本、图像和评级栏的列表视图。ksoap我通过使用我已经完成的信息获得这些信息,它就像魅力一样!

现在有一个问题,正如我之前提到的,我在列表视图中确实有一个图像,如果我没有删除照片,它会变成这样,laggy/slow response但是在我删除图像之后,它会再次变得平滑,只有 textview和评分栏。

如果我想包含图像,如何解决滞后问题。如果你需要一个例子,请告诉我,所以我会发布 android .apk。我希望有一个解决方案。在我的 listview 图像代码下方:

String s = strTitle[position];      
System.out.println(s);      
String image_URL = imageURL[position];      
BitmapFactory.Options bmOptions;
bmOptions = new BitmapFactory.Options();
bmOptions.inSampleSize = 1;
Bitmap bm = LoadImage(image_URL, bmOptions);
ivLogo.setImageBitmap(bm);              
return rowView;

private Bitmap LoadImage(String URL, BitmapFactory.Options options)
{
    Bitmap bitmap = null;
    InputStream in = null;       
    try {
        in = OpenHttpConnection(URL);
        bitmap = BitmapFactory.decodeStream(in, null, options);
        in.close();
    } catch (IOException e1) {  }
    return bitmap;               
}

private InputStream OpenHttpConnection(String strURL) throws IOException{
    InputStream inputStream = null;
    URL url = new URL(strURL);
    URLConnection conn = url.openConnection();

    try{
        HttpURLConnection httpConn = (HttpURLConnection)conn;
        httpConn.setRequestMethod("GET");
        httpConn.connect();

        if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) 
        {
            inputStream = httpConn.getInputStream();
        }
    }
    catch (Exception ex){    }
    return inputStream;
}
4

1 回答 1

6

你必须利用 LazyLaoding 的概念。在这里,您尝试随时随地下载图像,这使您的列表视图变得迟钝。

链接在这里,

ListView 中图像的延迟加载

您将能够找到关于懒惰的大量讨论,并且您可以在其中看到这个答案,这是最著名的概念。

https://stackoverflow.com/a/3068012/603744

编辑 1

您也可以为此查看无尽的适配器。这是一个示例,

Android 无尽列表

https://github.com/commonsguy/cwac-endless

于 2012-05-24T10:58:47.113 回答