私が取り組んでいるプロジェクトでは、Listviews を含むアクティビティを作成するために、元々 ListActivity から継承していました。しかし、設定メニューなどをよりシンプルにするための基本クラスがあるので、基本クラスを 1 つだけにするために、それを通常のアクティビティに切り替えることができるかどうかを確認したかったのです。しかし、私の問題は、アクティビティの 1 つで、作成したアダプターで Listactivity.Listadapter を使用すると正常に動作しますが、ListView.Adapter に同じアダプターを使用しようとすると、nullreferenceexep が発生することです。ドキュメントを見ると、両方が同じオブジェクト タイプ (IListAdapter) を呼び出しているように見えますが、私の人生では理由がわかりません。
private ListView ticketView;
List<TicketViewModel> tickets;
List<String> ticketInfo;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
ticketView = (ListView)FindViewById(Android.Resource.Id.List);
//pulls data from a remote source
//and puts it into a string array
tickets = new List<Ticket>();
tickets = DataDownload();
ticketInfo = new List<string>();
foreach (Ticket tick in tickets)
{
ticketInfo.Add(tick.Subject);
}
//adapter I am using
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
Resource.Layout.itemList, ticketInfo);
//this one works
ListAdapter = adapter;
//this one does not
ticketView.Adapter = adapter;
}
明らかな何かが欠けていると確信していますが、一生それを理解することはできません。
編集:
ログキャットはこちら
07-30 08:59:53.498 I/ActivityManager( 162): Starting: Intent { cmp=KahunaAndroid.KahunaAndroid/kahunaandroid.TicketList } from pid 2101
07-30 08:59:59.534 D/ViewConsistency( 2101): AbsListView android.widget.ListView@40845958 enabled= true
07-30 08:59:59.594 D/dalvikvm( 2101): GC_EXTERNAL_ALLOC freed 9K, 47% free 3405K/6407K, external 575K/587K, paused 55ms
07-30 08:59:59.604 D/ViewConsistency( 2101): AbsListView android.widget.ListView@40845958 enabled= true
07-30 09:00:02.947 D/ViewConsistency( 2101): AbsListView android.widget.ListView@40867758 enabled= true
07-30 09:00:02.947 D/ViewConsistency( 2101): AbsListView android.widget.ListView@40867758 enabled= true
07-30 09:00:03.498 W/ActivityManager( 162): Launch timeout has expired, giving up wake lock!
07-30 09:00:03.538 W/ActivityManager( 162): Activity idle timeout for HistoryRecord{40a0aa88 KahunaAndroid.KahunaAndroid/kahunaandroid.TicketList}
07-30 09:00:13.958 I/MonoDroid( 2101): UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object
07-30 09:00:13.958 I/MonoDroid( 2101): at KahunaAndroid.TicketList.OnCreate (Android.OS.Bundle) [0x000aa] in C:\Users\david\Documents\Visual Studio 2010\Projects\AndroidApplication2\AndroidApplication2\Tickets\TicketList.cs:44
07-30 09:00:13.958 I/MonoDroid( 2101): at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (intptr,intptr,intptr) [0x00010] in /Users/builder/data/lanes/monodroid-mac-monodroid-4.2.4-branch/9f7cbd60/source/monodroid/src/Mono.Android/platforms/android-8/src/generated/Android.App.Activity.cs:1490
07-30 09:00:13.958 I/MonoDroid( 2101): at (wrapper dynamic-method) object.50e53c19-ce69-4f39-9dda-0aec4e7e7dcd (intptr,intptr,intptr) <IL 0x00012, 0x00033>
そして、例外「System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません」