1

起動時にアダプターをリストビューに設定しようとして、モノドロイドで遊んでいます。私は画面上にたくさんのコントロールを持っています。私がやろうとしているのは、ボタンをクリックすると項目がリストビューに入るということです。

デバッガーからエラーは発生しません。「残念ながら Application1 が停止しました」というメッセージが表示されるだけで、何が間違っているのかを突き止めるのが難しくなります。

これが私のコードです:

public class Activity1 : Activity
{
    List<string> items = new List<string>();
    ArrayAdapter<string> adaptor;
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        SetContentView(Resource.Layout.Main);
        int i = 0;

        items.Add("Hello world");
        adaptor = new ArrayAdapter<string>(this,
            Resource.Id.listView1,
            items);

        Button button = FindViewById<Button>(Resource.Id.button1);
        ListView listView = FindViewById<ListView>(Resource.Id.listView1);
        listView.SetAdapter(adaptor);

        button.Click += delegate
        {
            items.Add("Hello " + ++i);
            adaptor.NotifyDataSetChanged();
        };
    }
}

コメントすると、次のようなデバイス ログが見つかりました。

android.content.res.Resources$NotFoundException: Resource ID #0x7f050003 type #0x12 is not valid

これは、Resource.Designer.cs のリストビューの ID です。

public const int listView1 = 2131034115;

リストビューは次のように宣言されます。

    <ListView
        p1:minWidth="25px"
        p1:minHeight="25px"
        p1:layout_width="wrap_content"
        p1:layout_height="fill_parent"
        p1:id="@+id/listView1"
        p1:layout_marginBottom="70dp" />
4

2 に答える 2

2

ドキュメントを読んだ後、私はそれを理解しました。ArrayAdapter をインスタンス化するときは、リストビュー自体ではなく、Android.Resource.Layout.SimpleListItem1 または別のリスト項目リソースを参照してインスタンス化する必要があります。

于 2012-11-01T22:06:23.027 に答える
0

私はこのコードで同じ問題を抱えていました:

mForecastAdapter =
    new ArrayAdapter<String>(
                    this,
                    android.R.layout.mymain,
                   R.id.list_view_forecast, 
                    foreCastArray
    );

それからあなたの投稿を読んだ後、私はそれを次のように変更しました:

 mForecastAdapter =
     new ArrayAdapter<String>(
                    this,
                    android.R.layout.simple_list_item_1,
                   // R.id.list_view_forecast, 
                    foreCastArray
     );

単純なリスト ビューを使用し、リスト ビュー ID削除しました。これはうまくいきました。

于 2015-05-04T02:23:47.480 に答える