单击Viewpager Xamarin Android
我是Xamarin Android开发的新手。我已经使用ViewPager创建了图像滑块。现在我想点击该ViewPager的图像。我如何实现? 我尝试过这个,但没有成功:单击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
{
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中代码>你检查过完整的源代码了吗?