下载项目列表视图的图像

时间:2012-11-01 09:43:51

标签: android list android-asynctask

我试图填写我的列表视图。 列表视图中的每个项目都包含文本(标题)和图像(缩略图)。 我的图像是从服务器下载的。所以每次我在列表视图中添加一个项目时,我都会检查我的图像是否已经存在,如果没有,我会在异步任务中下载它。当异步任务完成执行时,我将下载的图像放入项目列表视图中。

private class Thumbnails extends AsyncTask<Void, Integer, Void>
    {
        private Bitmap bitmap;

        private File fileTest;

        private String extStorageDirectory;

        @Override

        protected void onPreExecute() {

            super.onPreExecute();
        }

        @Override

        protected void onProgressUpdate(Integer... values){

            super.onProgressUpdate(values);
        }

        @Override

        protected Void doInBackground(Void... arg0) {

            Log.i("DocumentListItem","start downloading thumbnail = "+thumbnailURL);

            try{

                extStorageDirectory = Environment.getExternalStorageDirectory().toString();

                fileTest = new File(extStorageDirectory+"/AAAA/"+mDocument.getTitle()); 

                if(fileTest.exists()){

                    BitmapFactory.Options options = new BitmapFactory.Options();

                    options.inPreferredConfig = Bitmap.Config.ARGB_8888;

                    bitmap = BitmapFactory.decodeFile(fileTest.getAbsolutePath(), options);

                }
                else{

                    bitmap = BitmapFactory.decodeStream(new URL(thumbnailURL).openConnection().getInputStream());

                }

            } catch (MalformedURLException e) {

                e.printStackTrace();

            } catch (IOException e) {

                e.printStackTrace();
            }

            return null;
        }

        @Override

        protected void onPostExecute(Void result) {

                if (bitmap != null){

                    bitmapThumbnail = bitmap;

                    mImage.setImageBitmap(bitmap);
                }

                if(fileTest.exists()){

                }else{

                    try {

                        File folder = new File(extStorageDirectory, "AppoxySavedFiles");

                        folder.mkdir();

                        File file = new File(folder, mDocument.getTitle());

                        FileOutputStream out = new FileOutputStream(file);

                        bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);

                    } catch (Exception e) {

                        e.printStackTrace();
                    }
                }

        }
    }

问题是封面图像缩略图随机加载,并且与正确的文档项目没有正确关联。滚动上下时缩略图重新排列。

有人知道出了什么问题吗?

1 个答案:

答案 0 :(得分:0)

cacois有一个blog。他发布了异步延迟加载图像并将它们缓存到SD卡,并将示例项目放在github上。

它帮助我解决了我的问题。它也可以帮助你解决问题。