如何弄清楚在列表视图中究竟点击了什么



我有一个列表视图,我可以在其中创建事件listview_itemClick事件。我有一个LinearLayout作为列表视图项目。 LinearLayout有 2 个控件。图像视图和文本视图。

_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
}

listitem_click我正在寻找实际单击的控件。

AdapterView.ItemClickEventArgs有一个名为Position的属性,您可以使用该属性来确定单击了绑定到ListView的模型。

private void List_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
{
    var postition = e.Position;
    var clickedItem = _recipes.ToArray()[position];
    // do stuff with clicked item
}

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

control.Touch += (handler)

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

试试这个:

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.Textitem.Description是列表视图的选定TextDescription

您可以使用它来确定所选项目是否具有ImageViewTextView

相关内容

最新更新