1

リストビュー項目にこの問題があり、皆さんがこれを修正するのを手伝ってくれることを願っています. 私の目標は、リストビューをリストで埋めることであり、ユーザーがこれらのアイテムに触れると、別のビューをロードしたいと考えています。アイテムの追加は正常に機能しますが、選択したアイテムから値を取得して正しいオブジェクトに型キャストすると、「「無効なキャスト」はキャストできません...」と表示されてクラッシュします。

参考までに、私は Android 4.0 sim を使用しています。これらはコードの一部です。

SetContentView(Resource.Layout.ArchiveList);
ListView lstArchiveList = FindViewById<ListView>(Resource.Id.lstArchive);

if (lstArchiveList != null) {
    ArrayAdapter<MobileContracts.Archive> archivesAdapter = new 
         ArrayAdapter<MobileContracts.Archive>(this, Resource.Layout.ListItem, sessionData.Archives.Archive);
    lstArchiveList.Adapter = archivesAdapter;
    lstArchiveList.TextFilterEnabled = true;
    lstArchiveList.ItemClick += new EventHandler<AdapterView.ItemClickEventArgs>(lstArchiveList_ItemClick);
    archivesAdapter.NotifyDataSetChanged();
}

OnClick イベント ハンドラ:

void lstArchiveList_ItemClick(object sender, AdapterView.ItemClickEventArgs e) {
    SetContentView(Resource.Layout.SearchDocuments);
    ListView lstEditableIndexList = FindViewById<ListView>(Resource.Id.lstEditableIndexList);
    if (lstEditableIndexList != null) {

        Console.WriteLine("sender type: {0}", sender.GetType().FullName); 

        Object currentItem = e.Parent.GetItemAtPosition(e.Position);
        MobileContracts.Archive selectedArchive = (MobileContracts.Archive) currentItem; //invalid cast?

        Toast.MakeText(Application, selectedArchive.Name + " => " + selectedArchive.Id, ToastLength.Short).Show();
}

どんな助けでも感謝します。よろしくお願いします。

乾杯、イノエル

4

1 に答える 1

1

気にしないでください、私はこれを理解します。

これを置き換えます:

MobileContracts.Archive selectedArchive = (MobileContracts.Archive) currentItem; //invalid cast?

これとともに:

System.Reflection.PropertyInfo propertyInfo = currentItem.GetType().GetProperty("Instance");
MobileContracts.Archive selectedArchive = propertyInfo.GetValue(currentItem, null) as MobileContracts.Archive;
于 2012-07-06T12:49:13.987 に答える