Xamarin. Android listview Метод getPosition возвращает объект - PullRequest
0 голосов
/ 01 марта 2020

У меня есть ListView, и я хочу взять элемент в нажатой позиции. Но метод GetItemAtPosition возвращает объект, и приведение не работает. Я назначил его переменной типа «var», но в этом случае я не могу получить свойства и метод объекта Person. Что мне делать? Спасибо.

persons.Add(new Person("Random Name", "Merhaba", Resource.Drawable.image));
        persons.Add(new Person("Random Name", "Merhaba", Resource.Drawable.image));

        ListView listView = (ListView)FindViewById(Resource.Id.listView);

        PersonAdapter adapter = new PersonAdapter(this,persons);

        listView.Adapter = adapter;



        listView.ItemClick += (object sender, ItemClickEventArgs e) =>
        {
            Person person = listView.GetItemAtPosition(e.Position); // this line gives error. (Cannot implictly convert type "Java.Lang.Object" to Person)
            Toast.MakeText(this.ApplicationContext, person.Name, ToastLength.Short).Show();
            var intent = new Intent(this, typeof(ChatActivity));
            this.StartActivity(intent);
        };

введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 02 марта 2020

В среде IDE не удалось преобразовать тип объекта в адаптере при создании проекта. Так что вы можете явно преобразовать его вручную.

Person person = (Person)listView.GetItemAtPosition(e.Position); 
0 голосов
/ 01 марта 2020

Использовать просмотр списка ItemSelected

        private void Handle_ItemSelected(object sender, SelectedItemChangedEventArgs e)
        {

            if (((ListView)sender).SelectedItem == null)
            {
                return;
            }
            else
            {
                var obj = (Person)e.SelectedItem;
            }
        }
...