我有一个列表视图,我可以在其中创建事件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.Text
和item.Description
是列表视图的选定Text
和Description
。
您可以使用它来确定所选项目是否具有ImageView
或TextView
。