ユーザーが「情報を追加」ボタン(画面上部)をクリックしてリストビューにアイテム(コードと説明を含むクラス)を動的に追加できる必要があるアクティビティを作成しています。最初、リストビューは空です。カスタム ビュー (RowItem.axml) を作成しました。このビューは、Adapter GetView() 呼び出しで拡張され、特定の行の関連情報を表示します。問題は、リストに新しい項目を追加する必要がある [add info].Click イベントにあります。コードは次のようになります。
void button_Click( object sender, EventArgs e )
{
AddNewItemToListView( listview.count);
}
void AddNewItemToListView(int count)
{
DataItem item = new DataItem();
item.Code = FindCode(count);
item.Description = FindDescription(count);
listview_adapter.Add( item ); // !! HERE AN EXCEPTION IS THROWN: --> Java.Lang.UnsupportedOperationException:
listAdapter.NotifyDataSetChanged();
}
DataItem の定義は次のとおりです。
public class DataItem
{
public string Code {get;set;}
public string Description {get;set;}
}
そして、これが私のカスタムアダプターの定義です:
public class MyListAdapter: ArrayAdapter<DataItem>
{
// override code here (ex: GetView(..) ... )
一日中、いくつかの例をウェブで検索していましたが、Monodroid ではなく Android Java でしか見つかりませんでした。これらの例では、Adapter の .Add メソッドを使用します (ほとんどの場合、文字列や整数などの単純な型のアダプターも使用します)。
この例外を取得するために何が間違っているのかわかりません。(私が気付いた唯一のことは、Android.Widget.ArrayAdapter (私の祖先クラス) のメソッド Add が次のように定義されていることです:
Android.Widget.ArrayAdapter<T>.Add(T @object);
「@」の使用はどういう意味ですか? 私の例外はこの「@」に関連していますか? 私が試してみました
listview_adapter.Add( @item ); // STILL SAME EXCEPTION
正しい方向への助けをお願いします。どうもありがとうございました。