Android Xamarin-无法检测ListView ItemClick事件
我正在尝试获取Android Xamarin-无法检测ListView ItemClick事件,android,listview,xamarin,xamarin.android,Android,Listview,Xamarin,Xamarin.android,我正在尝试获取列表视图中的项目单击,但无法检测到。我尝试过在BaseAdapter的GetView()方法中实现ClickListener,也尝试过ListView的ItemClick。我没有取得任何成功。这是我的片段 在这个给定的代码片段中,我尝试在GetView()中实现ClickListener 任何帮助都将不胜感激。我只是猜测,但您的UI中是否存在阻止您的项目检测触摸事件的情况?@Yupi我在每个视图中都添加了侦听器代码。但是不能被检测到。但是为什么您要在ListView中的每个视图上实
列表视图中的项目单击
,但无法检测到。我尝试过在BaseAdapter
的GetView()
方法中实现ClickListener
,也尝试过ListView
的ItemClick
。我没有取得任何成功。这是我的片段
在这个给定的代码片段中,我尝试在GetView()中实现ClickListener
任何帮助都将不胜感激。我只是猜测,但您的UI中是否存在阻止您的项目检测触摸事件的情况?@Yupi我在每个视图中都添加了侦听器代码。但是不能被检测到。但是为什么您要在ListView中的每个视图上实现Click方法呢?为什么不在ListView的项上呢?因为在您上一次发布的代码中,您正在调用ListView项上的Click方法,但您实际上并没有实现它?或者我遗漏了什么。@Yupi我之所以在每个视图上实现click方法,是因为我只想确保这些视图中的任何一个都可以检测到此事件。但是我没有成功。如果您试图获取单击ListView项目,那么您应该在ListView中使用数据填充事件:placeList.ItemClick+=placeList\u ItemClick代码>然后您可以调用方法:void PlaceList_ItemClick(对象发送者,AdapterView.ItemClickEventArgs e){//从列表适配器获取我们的项目var item=this.listAdapter.GetItemAtPosition(e.Position);//使用项目名称制作一个toast,仅显示它被单击toast.MakeText(this,item.name+“clicked!”,ToastLength.Short)。Show();}
public override View GetView(int position, View convertView, ViewGroup parent)
{
View view = context.LayoutInflater.Inflate(Resource.Layout.single_row_listview_item, parent, false);
ImageView photo = view.FindViewById<ImageView>(Resource.Id.photoImageView);
TextView name = view.FindViewById<TextView>(Resource.Id.nameTextView);
TextView speciality = view.FindViewById<TextView>(Resource.Id.specialtyTextView);
Stream stream = context.Assets.Open(places[position].ImageUrl);
Drawable drawable = Drawable.CreateFromStream(stream, null);
photo.SetImageDrawable(drawable);
name.Text = places[position].Name;
speciality.Text = places[position].Specialty;
name.Click += delegate
{
CommonUtils.showToast(context, "Click on name");
};
speciality.Click += delegate
{
CommonUtils.showToast(context, "Click on speciality");
};
photo.Click += delegate
{
CommonUtils.showToast(context, "Click on photo");
};
view.Click += delegate
{
CommonUtils.showToast(context, "Click on view");
};
return view;
}
placeList.ItemClick += PlaceList_ItemClick;
private void PlaceList_ItemClick(object sender, ItemClickEventArgs e)
{
Console.WriteLine("item clicked ");
CommonUtils.showToast(this,"Item clicked");
}