Android: ImageView.setImageResource 在 gridviewadapter 中显示不正确

Android: ImageView.setImageResource is not displaying correct in gridviewadapter

我定义了一个 gridview 和 gridviewadapter 来选择图像。当 select 2 张或更多图片时,一切正常。但是,当我 select 1 时,位置 =1 被位置 = 0 中的图像覆盖,这只发生在第一次选择 1 个图像时。正在流动的是适配器中的 getView():

 @Override
    public View getView(final int position, View convertView, final ViewGroup parent) {
        L.d("mytest position ="+position+ "converView ="+convertView);
        Holder holder;
        if (convertView == null) {
            holder = new Holder();
            convertView = mInflater.inflate(R.layout.grid_view_item, null);
            holder.mSelectImage = (NGImageView) convertView.findViewById(R.id.iv_icon);
            convertView.setTag(holder);
        } else {

            holder = (Holder) convertView.getTag();
        }
        if (getData().size() > 0 && position != getData().size()) {
            holder.mSelectImage.setVisibility(View.VISIBLE);
            ImageItem imageItem = getData().get(position);
            if (imageItem != null) {
                if (imageItem.getImageUri().toString().startsWith("http")) {
                    loadNGImageView.LoadOptionsView(imageItem.getImageUri().toString(),holder.mSelectImage);

                } else {
                    String imgUrl = BitmapUtil.IMAGE_URI_SUFFIX_SDCARD + imageItem.getImageUri().getPath();
                    L.d("mytest LoadOptionsView");
                    loadNGImageView.LoadOptionsView(imgUrl,holder.mSelectImage);
                }
            }
        } else {
            if (position == TopicPostFragment.DEFAULT_PHOTO_COUNT) {
                holder.mSelectImage.setVisibility(View.GONE);
            } else {
                holder.mSelectImage.setVisibility(View.VISIBLE);
                L.d("mytest setImageResource");
                holder.mSelectImage.setImageResource(R.drawable.guild_icon_img);
            }

        }

        return convertView;
    }

error logs:
mytest position =0  converView =null
mytest setImageResource

mytest position =0  converView =android.widget.FrameLayout{42cd7de8 V.E.....    
......I. 0,0-0,0 #7f0b0113 app:id/fl_item}
mytest setImageResource

                     ......

mytest position =0   converView =android.widget.FrameLayout{42eabc00 V.E..... 
........ 0,0-90,90 #7f0b0113 app:id/fl_item}
mytest LoadOptionsView

mytest position =1   converView =android.widget.FrameLayout{42cd7de8 V.E.....  
......I. 0,0-0,0 #7f0b0113 app:id/fl_item}
mytest setImageResource

错误显示: enter image description here

正确显示: enter image description here

xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fresco="http://schemas.android.com/apk/res-auto"
    android:id="@+id/fl_item"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_gravity="center">
    <ImageView
        android:id="@+id/iv_icon"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:scaleType="centerCrop"
    />
</FrameLayout>

setImageResource不能和setImageURL同时使用,有时setImageURL会覆盖setImageResource而导致显示错误。 如果你同时使用它们,你应该先设置ImageURL(null),然后使用setImageResource。