我有一个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事件中,我正在寻找实际点击的控件。
答案 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.Text
和item.Description
是列表视图的选定Text
和Description
。
如果所选项目包含ImageView
或TextView
,您可以使用此功能。