Как получить данные элемента ListView, по которому пользователь щелкнул, с помощью listview.GetItemAtPosition (e.Position)?
в приложении Xamarin.Android у меня есть ListView, который я ранее заполнил. В обработчике события listview_ItemClick, который корректно запускается, я хотел бы получить текст нажатых представлений элемента списка, чтобы показать некоторую информацию об этом в AlertDialog.
Мой код не работает, потому что все, что я могу получить, это Java.Lang.Object (lvItem), и я не знаю, как извлечь из него нужные мне представления.
private void lv_ItemClick(object sender, AdapterView.ItemClickEventArgs e) {
lvItem = lv.GetItemAtPosition(e.Position);
// lvItem is a Java.Lang.Object
Toast.MakeText(this, + "you clicked" + lvItem, ToastLength.Long).Show();
}
Если я запускаю его так, Тост печатает:
вы щелкнули System.Collections.Generic.Dictionary'2 [System.String, System.String]
Обратите внимание, что каждая строка ListView состоит из двух TextView, и я заполняю ListView, передаваяList<Dictionary<string,string>>
в конструктор адаптера ListView.
Проще говоря:
ПОСМОТРЕТЬ СПИСОК
| textView1 | textView2 | ---> пункт 1
| textView1 | textView2 | ---> пункт 2
Если пользователь нажимает на элемент 2 ListView, мне нужно получить textView1.Text или textView2.Text элемента 2.
Я тоже думал о выполнении:
FindViewById<TextView>(resultsListView.GetItemIdAtPosition(e.Position);
но адаптер GetItemIdAtPosition возвращает long вместо int, и поэтому я не уверен, что это тот же самый тип Id.
Следующее тоже не работает (я думаю, что это то же самоеlv.GetItemAtPosition(e.position)
:
lv.Adapter.GetItem(e.Position);