【问题标题】:UIL - listview reuse makes images update slowlyUIL - 列表视图重用使图像更新缓慢
【发布时间】:2015-03-16 00:21:30
【问题描述】:

我正在使用通用图像加载器,我有一个ListView,每行都有一个图像。快速向下滚动时,图像不会更新,而是使用旧图像。但是,当慢慢向下滚动时,图像能够更新,但需要一些时间。这给人的印象是列表在重复。 这些是我的选择:

options = new DisplayImageOptions.Builder()
            .cacheInMemory(true)
            .cacheOnDisk(true)
            .considerExifParams(true)

            .displayer(new FadeInBitmapDisplayer(0, true, false, false))
            .build();

这就是我使用getView()-method 加载图像的方式:

                    ImageLoader.getInstance().displayImage(MY_IMAGE_URL+imageid, holder.imgView, options, new SimpleImageLoadingListener() {
                        @Override
                        public void onLoadingStarted(String imageUri, View view) {
                            holder.progressBar.setVisibility(View.VISIBLE);
                            holder.placeHolder.setVisibility(View.VISIBLE);
                        }
                        @Override
                        public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                            String message = null;
                            switch (failReason.getType()) {
                                case IO_ERROR:
                                    message = "Input/Output error";
                                    break;
                                case DECODING_ERROR:
                                    message = "Image can't be decoded";
                                    break;
                                case NETWORK_DENIED:
                                    message = "Downloads are denied";
                                    break;
                                case OUT_OF_MEMORY:
                                    message = "Out Of Memory error";
                                    break;
                                case UNKNOWN:
                                    message = "Unknown error";
                                    break;
                            }
                            //Toast.makeText(ImagePagerActivity.this, message, Toast.LENGTH_SHORT).show();

                            holder.progressBar.setVisibility(View.GONE);
                        }

                        @Override
                        public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                            holder.progressBar.setVisibility(View.GONE);
                            holder.placeHolder.setVisibility(View.GONE);
                        }
                    });

如何确保图像在列表视图中正确加载?

【问题讨论】:

    标签: android android-listview universal-image-loader


    【解决方案1】:

    试试这个..

    ImageLoader.getInstance().displayImage(MY_IMAGE_URL+imageid, holder.imgView, options);
    

    在适配器内加载图像..

    如下更新 DisplayImageOptions

      options = new DisplayImageOptions.Builder()
                    .showImageOnLoading(android.R.color.transparent)
                    .showImageForEmptyUri(android.R.color.transparent)
                    .showImageOnFail(android.R.color.transparent)
                    .cacheInMemory(true)
                    .cacheOnDisk(true)
                    .considerExifParams(true)
                    .bitmapConfig(Bitmap.Config.RGB_565)
                    .build();
    

    显示和隐藏AsyncTaskonPreExecute()onPostExecute() 内的进度条,由包含列表的片段/活动调用

    【讨论】:

      猜你喜欢
      • 2014-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-15
      • 1970-01-01
      相关资源
      最近更新 更多