3

ListView 内のチェックボックスへのアクセスに問題があります。各ビューの作成時にチェックボックスを設定しようとしています。

この関数を実装するカスタム アダプターを作成しました。

        public override View GetView(int position, View convertView, ViewGroup parent)
    {
        View view = convertView;
        if (view == null)
            view = context.LayoutInflater.Inflate(Android.Resource.Layout.SimpleListItemChecked, null);
        view.FindViewById<TextView>(Android.Resource.Id.Text1).Text = items[position]._fName + items[position]._lName;

        // This seems to return null.. I'm probably accessing it the wrong way.
        view.FindViewById<CheckBox>(Android.Resource.Id.Checkbox).Checked = items[position]._Enabled;
        return view;
    }

問題は、コメントの状態として、プログラムが System.NullReferenceException をスローすることです。ポイントは、そうでなければチェックボックスにアクセスする方法がわからないということです。

どんな助けでも大歓迎です。

4

1 に答える 1

2

これが最善の方法かどうかはわかりませんが、私にとってはうまくいきました。リストがテキストとチェックボックスで構成されることがわかっていることを考慮して、CheckedTextView に直接キャストしました。

        public override View GetView(int position, View convertView, ViewGroup parent)
    {
        var view = convertView as CheckedTextView;
        if (view == null)
            view = context.LayoutInflater.Inflate(Android.Resource.Layout.SimpleListItemChecked, null) as CheckedTextView;
        view.SetText(items[position]._fName + items[position]._lName, TextView.BufferType.Normal);
        view.Checked = items[position]._Enabled;

        return view;
    }

これを達成するための正しい/最良の方法ではないかもしれませんが、少なくとも機能します..

于 2013-01-31T16:23:00.247 に答える