public override View GetView(int position, View convertView, ViewGroup parent) { Product product = items [position]; View view = convertView; // re-use an existing view, if one is available if (view == null) { // otherwise create a new one view = LayoutInflater.From (context).Inflate (Resource.Layout.BasketItem, parent, false); var swipper = ((SwipableListItem)view).SwipeListener; swipper.SwipeGestureBegin += (sender, e) => parent.RequestDisallowInterceptTouchEvent (true); swipper.SwipeGestureEnd += (sender, e) => parent.RequestDisallowInterceptTouchEvent (false); swipper.ItemSwipped += (sender, e) => { // If view has already been processed, do nothing if (view.Parent == null) return; var p = ((ListView)parent).GetPositionForView (view); var order = WebService.Shared.CurrentOrder; order.Remove (order.Products [p]); NotifyDataSetChanged (); }; } view.FindViewById<TextView> (Resource.Id.productTitle).Text = product.Name; view.FindViewById<TextView> (Resource.Id.productPrice).Text = product.PriceDescription; view.FindViewById<TextView> (Resource.Id.productColor).Text = product.Color.ToString(); view.FindViewById<TextView> (Resource.Id.productSize).Text = product.Size.Description; var orderImage = view.FindViewById<ImageView> (Resource.Id.productImage); orderImage.SetImageResource (Resource.Drawable.blue_shirt); //No need to wait for the async download to return the view #pragma warning disable 4014 orderImage.SetImageFromUrlAsync (product.ImageForSize (Images.ScreenWidth)); #pragma warning restore 4014 return view; }