I define a gridview and gridviewadapter to choose images. When select 2 or more images, all work well. But, when I select 1, the position =1 is covered by images in positon = 0, and this only happen the first time to choose 1 image. Flowing is getView() in adapter:
@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
error display: enter image description here
correct display: enter image description here
xml file:
<?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 cannot be used with setImageURL at the same time, sometimes setImageURL may cover setImageResource and make the wrong display. if you use them at the same time ,you should first setImageURL(null) ,then use setImageResource.