2012-04-15 88 views
0

我試圖將ListView的內容設置爲TextViews數組。設置ListView適配器:空指針異常

隨着我目前我得到一個空指針異常,即使我想我會做的建議什麼位置: how do I add items to listview dynamically in android

這裏是我目前:

ListView lvSuggestions = (ListView)findViewById(R.id.lvSuggestions); 

ArrayAdapter<TextView> arrayAdapter = new ArrayAdapter<TextView>(this, android.R.layout.simple_list_item_1); 
lvSuggestions.setAdapter(arrayAdapter); 

但我當它設置適配器時得到異常。

我試着用TextViews填充ArrayList,然後用完整的ArrayList創建適配器,但是當我設置適配器時,我得到了相同的空指針異常。

感謝所有幫助

回答

0

(ListView)findViewById(R.id.lvSuggestions); 

可能返回null如果findViewById回報null(沒有項目被發現),或者返回的對象是ListView型的不行。

與保護它:

if (lvSuggestions != null) { 
    ArrayAdapter<TextView> arrayAdapter = new ArrayAdapter<TextView>(this, 
     android.R.layout.simple_list_item_1); 
    lvSuggestions.setAdapter(arrayAdapter); 
} 
+0

雖然你是對的,但不是那條線返回異常。它是: lvSuggestions.setAdapter(arrayAdapter); – 2012-04-15 15:48:33

+0

是的,'lvSuggestions。如果'lvSuggestions'爲'null',setAdapter()會拋出一個NullPointerException。 – Attila 2012-04-15 15:49:18

+0

啊,我明白了。但它不是空的。我可以在調試中看到。 – 2012-04-15 15:52:41

1
ArrayAdapter<TextView> arrayAdapter = new ArrayAdapter<TextView>(this, android.R.layout.simple_list_item_1); 

變化有以下

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1); 

,並添加所有要顯示給arrayAdapter字符串上面的行如下

arrayAdapter.add("string1"); 
arrayAdapter.add("string2"); 
arrayAdapter.add("string3");//so on 
+0

但我不想填補它與字符串。我可以不填寫TextViews嗎? – 2012-04-15 15:50:55

+0

即使在textview中,你需要用字符串設置文本 – 2012-04-15 15:51:29

+0

是的,我知道我需要設置字符串的Textview文本。但我希望我的ListView包含一個TextViews數組,因爲我希望能夠設置TextViews的id。 是否有可能用ListView類型的ArrayList填充ListView? – 2012-04-15 15:54:22

0

也許你在setAdapter之後放置了setContentView。

它必須是這樣的:

setContentView(xxx);

// ....

setAdapter(XXX)

希望它能幫助!