Android 如何确定在listview中单击了什么?

Android 如何确定在listview中单击了什么?,android,listview,xamarin,Android,Listview,Xamarin,我有一个listview,在这里我创建了一个事件listview\u itemClick事件。我有一个LinearLayout作为列表视图项线性布局有两个控件。ImageView和TextView _list = view.FindViewById<ListView>(Resource.Id.list); _recipeAdapter = new RecipeAdapter(this.Activity, _recipes.ToArray()); _list.Adapter = _re

我有一个listview,在这里我创建了一个事件listview\u itemClick事件。我有一个
LinearLayout
作为列表视图项<代码>线性布局有两个控件。ImageView和TextView

_list = view.FindViewById<ListView>(Resource.Id.list);
_recipeAdapter = new RecipeAdapter(this.Activity, _recipes.ToArray());
_list.Adapter = _recipeAdapter;
_list.ItemClick += List_ItemClick;

_list.Scroll += List_Scroll;

private void List_ItemClick(object sender, AdapterView.ItemClickEventArgs e) {
    // I am looking here a way to figure out if clicked element is ImageView or TextView
}
\u list=view.findviewbyd(Resource.Id.list);
_recipeAdapter=新recipeAdapter(this.Activity,_recipes.ToArray());
_list.Adapter=\u recipeAdapter;
_list.ItemClick+=list\u ItemClick;
_list.Scroll+=list\u Scroll;
私有无效列表\u项单击(对象发送者,AdapterView.ItemClickEventArgs e){
//我在这里寻找一种方法来确定单击的元素是ImageView还是TextView
}

在listitem_click event中,我正在查找实际单击的控件。

在适配器内创建视图时,请在控件上添加触摸事件处理程序:

control.Touch += (handler)

当您按下列表视图项内的元素时,它将触发视图的触摸处理程序,该处理程序将被触摸

AdapterView.ItemClickEventArgs
有一个名为
Position
的属性,您可以使用该属性确定单击了绑定到
列表视图的哪个模型

private void List\u ItemClick(对象发送者,AdapterView.ItemClickEventArgs e)
{
变量位置=e.位置;
var clickedItem=_recipes.ToArray()[position];
//用点击的项目做一些事情
}
试试这个:

async void OnItemSelected(object sender, SelectedItemChangedEventArgs args)
{
    var item = args.SelectedItem as Item;
    if (item == null)
        return;

    await DisplayAlert(item.Text, item.Description, "OK");

    // Manually deselect item
    ItemsListView.SelectedItem = null;
}
item.Text
item.Description
是列表视图选中的
Text
Description


您可以使用此选项确定所选项目是否具有
ImageView
TextView

使用recyclerview而不是listview,或者为其创建自定义适配器listview@ApoorvSingh谢谢你的建议。@YorkShen MSFT不,这件事还在等待中,我正在考虑今晚使用Recyclerview,因为有人向我推荐了它。如果您可以使用listview使其正常工作,那将非常棒。当我这样做时,我的listview\u itemclick停止工作,这就是问题所在。感谢帮助,单个列表项是一个线性布局,其中有两个项,textview和imageview,我应该如何从该事件中获得它们。这不是本事件的目的。为什么需要行的布局?我需要将图像的全尺寸和文本底部放到图像上,为了得到这个,我创建了linearlayout。如果您有更好的方法,请向我推荐。由于您提供的适配器是
\u receipes
,我不明白为什么该数组中的元素不足以满足您的需要。您是否有任何链接或文章的参考资料,我可以从中获得有关如何在单击事件时计算当前对象(配方)的详细信息。我已经在Winforms中完成了这项工作,但不知道如何在这里实现。你能将我的代码与之集成吗,只需像我在OP中那样设置一个全局变量会很有帮助。我在列表上有itemclick,我测试了这段代码,它不工作,使用itemclick和不使用itemclick进行了测试。