Следующий код предназначен для заполнения списка с помощью BaseAdapter в Xamarin. Проблема в том, что в функции GetView (), когда я меняю текст TextView, он выдает

Object Reference not set to an instance of an object

Исключение. Скриншот прилагается для подробностей ... Ссылка на объект не соответствует экземпляру объекта

Следующий код - это файл .axml.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/dialogContainer"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFF"
    android:paddingBottom="25dip">
    <TextView
        android:id="@+id/contact"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Default Contact" />
</RelativeLayout>

И этот следующий код имеет функцию GetView():

public override View GetView (int position, View convertView, ViewGroup parent)
{
    View view = convertView ?? _Context.LayoutInflater.Inflate(Resource.Layout.SelectContactsItem, parent, false);

    var textView = _Context.FindViewById<TextView> (Resource.Id.contact);
    Console.WriteLine (_ContactList.ElementAt(position).Name);
    textView.Text = _ContactList.ElementAt (position).Name;
    return view;
}
0
Bugs Happen 21 Апр 2014 в 14:14

2 ответа

Лучший ответ

Не уверен в синтаксисе xamarin, но ... вы можете здесь что-то сделать не так.

 var textView = _Context.FindViewById<TextView> (Resource.Id.contact);
                ^^^^^^^^

Замените эту строку на ...

 var textView = view.FindViewById<TextView> (Resource.Id.contact);

Повторная ссылка

3
MAC 21 Апр 2014 в 10:18

Попробуй изменить

public override View GetView (int position, View convertView, ViewGroup parent)
{
    View view = convertView ?? _Context.LayoutInflater.Inflate(Resource.Layout.SelectContactsItem, parent, false);

    var textView = _Context.FindViewById<TextView> (Resource.Id.contact);
    Console.WriteLine (_ContactList.ElementAt(position).Name);
    textView.Text = _ContactList.ElementAt (position).Name;
    return view;
}

С этим

public override View GetView (int position, View convertView, ViewGroup parent)
{
    View view = convertView ?? _Context.LayoutInflater.Inflate(Resource.Layout.SelectContactsItem, parent, false);

    var textView = view.FindViewById<TextView> (Resource.Id.contact);
    Console.WriteLine (_ContactList.ElementAt(position).Name);
    textView.Text = _ContactList.ElementAt (position).Name;
    return view;
}
0
Sunny Garg 21 Апр 2014 в 10:28