Xamarin Android,列表适配器在getView中返回正确位置,但在getView图像单击事件中返回错误位置
我有一个listview,它的高度和宽度都是匹配的父级,使用适配器填充,并且我在getview中得到的位置是正确的,但是viewholder.image.click事件始终根据可见区域给出位置。例如,如果我将listview高度更改为某个静态dp,那么可见区域将增加到4个元素0,1,2,3,之后它再次显示0,1,2,3,应该是5,6 每次创建convertView都会解决这个问题,这实际上是一种错误的方法Xamarin Android,列表适配器在getView中返回正确位置,但在getView图像单击事件中返回错误位置,android,android-listview,xamarin,Android,Android Listview,Xamarin,我有一个listview,它的高度和宽度都是匹配的父级,使用适配器填充,并且我在getview中得到的位置是正确的,但是viewholder.image.click事件始终根据可见区域给出位置。例如,如果我将listview高度更改为某个静态dp,那么可见区域将增加到4个元素0,1,2,3,之后它再次显示0,1,2,3,应该是5,6 每次创建convertView都会解决这个问题,这实际上是一种错误的方法 public override View GetView(int position, Vi
public override View GetView(int position, View convertView, ViewGroup parent)
{
MyDealViewHolder viewHolder = null;
View rowView = convertView;
Toast.MakeText (baseActivity, string.Format (position.ToString ()), ToastLength.Short).Show ();
if (rowView == null)
{
rowView = baseActivity.LayoutInflater.Inflate(Resource.Layout.DealListItem, parent, false);
viewHolder = new MyDealViewHolder();
viewHolder.LikeImage= rowView.FindViewById<ImageView>(Resource.Id.imgDealImage);
viewHolder.LikeImage.Click += delegate(object sender, EventArgs e) {
Toast.MakeText (baseActivity, string.Format (position.ToString ()), ToastLength.Short).Show ();
viewHolder.LikeImage.SetImageResource (Resource.Drawable.heart_red_icon);
};
rowView.Tag = viewHolder;
}
else
{
viewHolder= (MyDealViewHolder)rowView.Tag;
}
return rowView;
}
在这里,两人都给出了不同的立场。第一个正确,第二个符合listview的可见区域
谢谢您无法访问listview上用户看不到的项目,为什么要这样做?@CDrosos-有一个类似/不同的图像视图。单击“不同图像”时,它将更改为“相似图像”。单击第一个元素的“不一样”图像时,我会为“一样”设置一个新图像,但第三个元素在该时间不可见,图像也会显示出来changed@CDrosos-单击可见区域中的第0个元素时,其图像会发生更改,但向上滚动时,第3个元素的图像也会发生更改。由于第一个元素和第三个元素的位置为0,这是不可见的,用于在视图上动态添加行并仅控制可见行,我在这里也做了类似的事情:@CDrosos您所说的不允许访问用户看不见的listview上的项目,这可能是我自己问题解决方案的一大步,这个问题与此问题有点类似,请您访问查看好吗?谢谢你,伙计!