如何弄清楚在listview中点击了什么?

时间:2018-01-03 14:22:15

标签: android listview xamarin

我有一个listview,我在其中创建一个事件listview_itemClick事件。我有一个LinearLayout作为列表视图项。 LinearLayout有2个控件。 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
}

在listitem_click事件中,我正在寻找实际点击的控件。

3 个答案:

答案 0 :(得分:1)

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
}

答案 1 :(得分:0)

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

control.Touch += (handler)

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

答案 2 :(得分:0)

试试这个:

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,您可以使用此功能。