Android:如何使用ImageView + 3 TextViews优化ListView?

时间:2009-10-04 20:35:01

标签: android

我一直在寻找各地,看看是否有一种标准的方法来实现这一目标,但我每次都会找到不同的解决方案。

基本上,我正在尝试使用图像和除此之外的两三行文本构建Custom ListView

为了优化它,我了解必须使用以下内容:

  1. convertView:基本上如果视图已经膨胀,请使用它

  2. Lazy-Loading:在调用行之前不要加载行的内容

  3. 后台Downloading & Caching:在自己的线程中下载图片,然后更新行(并可能缓存它们?)

  4. 我可以管理1和2,但第三个让我很困惑。

    这是最好的做法吗?

    由于

2 个答案:

答案 0 :(得分:2)

感谢马克的帮助。这是做他建议的一种方式(以防万一其他人好奇):

private class DownloadImageTask extends AsyncTask<Object, Integer, Bitmap> {

            private ImageView iv;

            protected Bitmap doInBackground(Object... params) {
                try {
                    iv = (ImageView) params[0];
                    URL aURL = new URL("http://URLTOIMAGE/img" + params[1] + ".png" ); 
                    URLConnection conn = aURL.openConnection(); 
                    conn.connect(); 
                    InputStream is = conn.getInputStream(); 
                    BufferedInputStream bis = new BufferedInputStream(is); 
                    Bitmap bm = BitmapFactory.decodeStream(bis); 
                    bis.close(); 
                    is.close();
                    return bm;
               } catch (IOException e) { 
                    return null;
               } 
            }

            protected void onPostExecute(Bitmap result) {
                iv.setImageBitmap((Bitmap) result);
            }
        }

它将按如下方式使用:

new DownloadImageTask().execute(new Object[] {ImageViewHandle, position});

请注意,这不是一个有效的代码。这是从更大的代码库中获取的,因此您必须进行适当的更改才能使其工作。

答案 1 :(得分:0)

将某事描述为“最佳做法”可能有点早。 AsyncTask或监视LinkedBlockingQueue的线程是卸载图片获取等内容的好方法。

您可能对ThumbnailAdapter感兴趣,我会为您处理后台下载和缓存。