2012-11-01 44 views
1

我在玩Monodroid,嘗試在啓動時將適配器設置爲列表視圖。我在屏幕上有一堆控件,我試圖做的是當按鈕被點擊時,一個項目進入列表視圖。listView SetAdaptor在應用程序啓動時導致崩潰

我沒有從調試器中得到任何錯誤,只是一個「不幸的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

ListView控件的ID
public const int listView1 = 2131034115; 

listview聲明如下:

<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" /> 
+0

作爲一個調試參考:LogCat會告訴你在你的應用程序的哪一行代碼導致崩潰和故障的原因..就像一個空指針..索引超出範圍..等等,這是在在eclipse中的DDMS標籤 – dymmeh

+0

@dophi謝謝我不知道它,發現它在VS.更接近問題的原因。 – Sam

回答

2

我在閱讀文檔後發現它。在實例化ArrayAdapter時,它必須參照Android.Resource.Layout.SimpleListItem1或其他列表項資源進行實例化,而不是列表視圖本身。

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。這工作。