【发布时间】:2017-07-12 21:19:21
【问题描述】:
我试图在网格中显示多个图像,但不知何故在适配器位置始终保持 0。它从未增加。 我正在使用 WebService 存储和获取图像。
输出:始终显示重复图像。例如,如果我要存储 7 张图片,由于位置 0,它会显示第一张图片 7 次。请同时查看带有图片的输出。
PhotoGalleryAdapter.cs:
public class PhotoGalleryAdapter : BaseAdapter<bitmapImagesList>
{
Activity context;
List<bitmapImagesList> lstBitmapImages;
public PhotoGalleryAdapter(Activity context, List<bitmapImagesList> lstBitmapImages) : base()
{
this.context = context;
this.lstBitmapImages = lstBitmapImages;
}
public override bitmapImagesList this[int position]
{
get { return lstBitmapImages[position]; }
}
public override long GetItemId(int position)
{
return position;
}
public override int Count {
get { return lstBitmapImages.Count; } //thumbIds.Length
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
var bitmapImage = lstBitmapImages[position].bitmapImage;
ImageView imageView;
if (convertView == null)
{
imageView = new ImageView(context);
// Set Parameters for Images
imageView.LayoutParameters = new GridView.LayoutParams(300, 300);
imageView.SetScaleType(ImageView.ScaleType.FitXy);
imageView.SetPadding(10, 10, 10, 10);
}
else
{
imageView = (ImageView)convertView;
}
imageView.SetImageBitmap(bitmapImage);
return imageView;
}
}
PhotoGallery.cs:
public void uploadImagesGrid()
{
var gridPhotoGallery = FindViewById<GridView>(Resource.Id.gridPhotoGallery);
lstBitmapImagesClass = new List<bitmapImagesList>();
foreach (var imageData in lstByteArryImages)
{
var bmp = new bitmapImagesList
{
bitmapImage = BitmapFactory.DecodeByteArray(imageData, 0, imageData.Length)
};
lstBitmapImagesClass.Add(bmp);
}
gridPhotoGallery.Adapter = new PhotoGalleryAdapter(this, lstBitmapImagesClass);
gridPhotoGallery.ItemClick += delegate(object sender, AdapterView.ItemClickEventArgs args)
{
Toast.MakeText(this, args.Position.ToString(), ToastLength.Short).Show();
};
}
提前致谢!
【问题讨论】: