I am new to Xamarin Android Development.I have created Image slider using ViewPager.Now I want click on image of that ViewPager.How can I implement that ? I have tried this but not worked:
{ viewpage = mview.FindViewById<ViewPager> (Resource.Id.viewpager); viewpage.Adapter = new itemadapter (ChildFragmentManager); viewpage.Click += Viewpage_Click; } public void Viewpage_Click (object sender, EventArgs e) { ViewModel.DetailViewCommand.Execute (); }
Just implement onclick listener
for imageview
in viewpager's
adapter if you have only image slider.
Edit: full source of imageslider
viewpager
that downloads images from web.
public class ImageSliderAdapter : PagerAdapter { Context _context; List<string> _imageUrls; public ImageSliderAdapter (Context context, List<string> imageUrls) { _imageUrls = imageUrls; _context = context; } public override bool IsViewFromObject (Android.Views.View view, Java.Lang.Object @object) { return view == ((LinearLayout)@object); } public override int Count { get { return _imageUrls.Count; } } public override void DestroyItem (ViewGroup container, int position, Java.Lang.Object objectValue) { } public override Java.Lang.Object InstantiateItem (ViewGroup container, int position) { View view = container; var inflater = _context.GetSystemService (Context.LayoutInflaterService) as LayoutInflater; view = inflater.Inflate (Resource.Layout.image_slider_item, null); var child = view.FindViewById<ImageView> (Resource.Id.image_slider_item); child.Click += (o, e) => { //your code here }; Bitmap image = null; Task.Run (() => { URL url = new URL (_imageUrls [position]); image = BitmapFactory.DecodeStream (url.OpenConnection ().InputStream); }).ContinueWith (t => { (_context as MainView).RunOnUiThread (() => { child.SetImageBitmap (image); }); }); container.AddView (view); return view; } }
in activity:
var imageViewer = FindViewById<ViewPager> (Resource.Id.pager); imageViewer.Adapter = new ImageSliderAdapter (this, imageUrls);