2012-04-15 96 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)

希望它能帮助!