0

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

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();
                    }
                }

        }
    }

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

有谁知道出了什么问题?

4

1 回答 1

0

cacois有一个博客。他发了关于异步延迟加载图像并将它们缓存到 SD 卡的帖子,并在github上放了一个示例项目。

它帮助我解决了我的问题。它还可以帮助您解决问题。

于 2012-11-01T10:02:09.383 回答