Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单击Viewpager Xamarin Android_Android_Xamarin_Android Viewpager_Onclicklistener - Fatal编程技术网

单击Viewpager Xamarin Android

单击Viewpager Xamarin Android,android,xamarin,android-viewpager,onclicklistener,Android,Xamarin,Android Viewpager,Onclicklistener,我是Xamarin Android开发的新手。我已经使用ViewPager创建了图像滑块。现在我想点击该ViewPager的图像。我如何实现? 我尝试过这个,但没有成功: { viewpage = mview.FindViewById<ViewPager> (Resource.Id.viewpager); viewpage.Adapter = new itemadapter (ChildFragmentManager); viewpage.Click += Viewpag

我是Xamarin Android开发的新手。我已经使用ViewPager创建了图像滑块。现在我想点击该ViewPager的图像。我如何实现? 我尝试过这个,但没有成功:

{
  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 ();
}
{
viewpage=mview.findviewbyd(Resource.Id.viewpager);
viewpage.Adapter=newitemAdapter(ChildFragmentManager);
查看页面。单击+=查看页面\u单击;
}
public void Viewpage_单击(对象发送者,事件参数e)
{
ViewModel.DetailViewCommand.Execute();
}

如果您只有图像滑块,只需在
viewpager的
适配器中为
imageview
执行
onclick listener

编辑:从web下载图像的
imageslider
viewpager
的完整源代码

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;
        }
    }
公共类ImageSliderAdapter:PagerAdapter
{
语境(Context)语境;;
列出ImageURL;
公共图像SliderAdapter(上下文上下文,列表图像URL)
{
_imageUrls=imageUrls;
_上下文=上下文;
}
public override bool IsViewFromObject(Android.Views.View,Java.Lang.Object@Object)
{
返回视图==((LinearLayout)@object);
}
公共覆盖整数计数{
得到{
返回_imageurl.Count;
}
}
公共覆盖项(视图组容器,int位置,Java.Lang.Object对象值)
{
}
public override Java.Lang.Object实例化项(视图组容器,int位置)
{
视图=容器;
var充气器=_context.GetSystemService(context.LayoutInflaterService)作为LayoutInflater;
视图=充气机。充气(Resource.Layout.image\u滑块\u项,空);
var child=view.findviewbyd(Resource.Id.image\u slider\u项目);
点击+=(o,e)=>
{
//你的代码在这里
};
位图图像=空;
Task.Run(()=>{
URL URL=新URL(_imageUrls[position]);
image=BitmapFactory.DecodeStream(url.OpenConnection().inputsream);
}).ContinueWith(t=>{
(_上下文作为主视图)。RunOnUiThread(()=>{
child.SetImageBitmap(图像);
});
});
container.AddView(视图);
返回视图;
}
}
在活动中:

            var imageViewer = FindViewById<ViewPager> (Resource.Id.pager);
            imageViewer.Adapter = new ImageSliderAdapter (this, imageUrls);
var-imageViewer=findviewbyd(Resource.Id.pager);
Adapter=新的ImageSliderAdapter(这是imageUrls);
您可以这样使用

public class TourPagerAdapter : PagerAdapter
   {
       private Context mContext;
        LayoutInflater mLayoutInflater;

        public TourPagerAdapter(Context context)
        {
            mContext = context;
            mLayoutInflater = (LayoutInflater)mContext.GetSystemService(Context.LayoutInflaterService);
        }

        public override Java.Lang.Object InstantiateItem(ViewGroup container, int position)
        {
            View itemView = mLayoutInflater.Inflate(Resource.Layout.TourItemLayout, container, false);
            ImageView imageView = itemView.FindViewById<ImageView>(Resource.Id.TextTour);

            if (position == 0)
            {
                imageView.SetImageResource(Resource.Drawable.Tour1Text);

            }
            else if (position == 1)
            {
                imageView.SetImageResource(Resource.Drawable.Tour2Text);

            }
            else
            {
                imageView.SetImageResource(Resource.Drawable.Tour3Text);

            }

            imageView.Click+=delegate {

                 //Your code
            };

            container.AddView(itemView);
            return itemView;
        }

        public override int Count => 3;

        public override bool IsViewFromObject(View view, Java.Lang.Object @object)
        {
            return view == @object;
        }

        public override void DestroyItem(ViewGroup container, int position, Java.Lang.Object @object)
        {
            container.RemoveView((View)@object);
        }
    }
公共类TourPagerAdapter:PagerAdapter
{
私有上下文;
放平机MLAYOUTIONFLATER;
公共TourPagerAdapter(上下文)
{
mContext=上下文;
mLayoutInflater=(LayoutInflater)mContext.GetSystemService(Context.LayoutInflaterService);
}
public override Java.Lang.Object实例化项(视图组容器,int位置)
{
View itemView=MLayoutFlater.Inflate(Resource.Layout.TourItemLayout,container,false);
ImageView ImageView=itemView.FindViewById(Resource.Id.TextTour);
如果(位置==0)
{
SetImageResource(Resource.Drawable.Tour1Text);
}
否则如果(位置==1)
{
SetImageResource(Resource.Drawable.Tour2Text);
}
其他的
{
SetImageResource(Resource.Drawable.Tour3Text);
}
imageView。单击+=委派{
//你的代码
};
container.AddView(itemView);
返回项目视图;
}
公共覆盖整数计数=>3;
public override bool IsViewFromObject(视图,Java.Lang.Object@Object)
{
返回视图==@对象;
}
公共覆盖项(视图组容器,int位置,Java.Lang.Object@Object)
{
container.RemoveView((View)@object);
}
}

不获取_context.GetSystemService。解决方案是什么@mishoIt说:使用未分配的局部变量“上下文”@misho@DhruvGohil赋值发生在构造函数
\u context=context中你检查过完整的源代码了吗?