android - 使用 Universal Image Loader 在 Android GridView 中滚动时重复图像

标签 android image gridview universal-image-loader

我正在尝试使用以下代码在 gridview 上使用 Universal Image Loader 从 Internet 加载图像。

public View getView(int position, View converView, ViewGroup parent) {
        Log.v("Description", "Description is " + position);
        ViewHolder mVHolder;
        if (converView == null) {
            LayoutInflater vi = (LayoutInflater) conted.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            converView = vi.inflate(R.layout.customgrid, null);
            mVHolder = new ViewHolder();
            mVHolder.mImageView = (ImageView) converView
                    .findViewById(R.id.imgview);
            mVHolder.mTextView1 = (TextView) converView
                    .findViewById(R.id.textView1);
            mVHolder.mTextView2 = (TextView) converView
                    .findViewById(R.id.textView2);
            mVHolder.mTextView3 = (TextView) converView
                    .findViewById(R.id.textView3);

            converView.setTag(mVHolder);
        } else {
            mVHolder = (ViewHolder) converView.getTag();
        }
        // mVHolder.mImageView.setImageResource(mThumbIds[position]);
        // mVHolder.mImageView.setImageDrawable(LoadImageFromURL(
        // mThumbIds[position]));
        imageLoader.displayImage(mThumbIds[position],mVHolder.mImageView,options, animationListener);
        Log.v("Names",NAMES[position] + STATES[position] + CONSTITUENCY[position]);
        mVHolder.mTextView1.setText(NAMES[position]);
        mVHolder.mTextView2.setText(STATES[position]);
        mVHolder.mTextView3.setText(CONSTITUENCY[position]);
        return converView;
    }

但是,当我在列表中向下滚动时,第一行的第一张图片似乎在大多数网格中重复出现。它不会一直停留 - 一段时间后会变回原始图像。我的问题是,这是 gridview 的 View 膨胀问题还是 Universal Image Loader 的图像加载问题?

最佳答案

我认为你的问题是你没有像这样为 DisplayImageOptions 设置 resetViewBeforeLoading() 方法:-

     DisplayImageOptions options = new DisplayImageOptions.Builder()
    .showStubImage(R.drawable.stub_image)
    .showImageForEmptyUri(R.drawable.image_for_empty_url)
 ---->   .resetViewBeforeLoading(true)<----very important for recycling views
    .cacheInMemory()
    .cacheOnDisc()
    .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default
    .bitmapConfig(Bitmap.Config.ARGB_8888) // default
    .delayBeforeLoading(1000)
    .displayer(new SimpleBitmapDisplayer()) // default
    .build();

然后应用此 DisplayImageOptions。

        imageLoader.displayImage(mThumbIds[position],mVHolder.mImageView,options,                   animationListener);

关于android - 使用 Universal Image Loader 在 Android GridView 中滚动时重复图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22726847/

相关文章:

java - 无论尺寸如何,如何使图像适合屏幕?

python - 遍历图像列表并将它们分配为 python 中的变量

asp.net - 使用 jQuery 查找 GridView 的特定列中是否选中了任何复选框

jQuery 人脸检测和 css

c# - 未处理的 GridView 'GridView1' 触发事件排序

java - 如何在 GridView 中更改图像?

php - 从网络更新 Android 应用程序数据的最简单方法是什么

android - 64 位的 android sdk 是否有它的可执行文件显示一些关于 32 位的信息?

android - 当用户停止使用录音机说话时自动录音并停止

php - 用 iPad 上传的照片是旋转的