List为Null,并且向该列表添加字符串不起作用

时间:2014-09-05 23:02:15

标签: java android list arraylist adapter

我不明白为什么代码中的某个地方始终为空。 此外,我没有将数据库中的字符串添加到列表

的解决方案
public List<String> dbToString() {

// list where all Strings should be saved for an adapter
    List<String> allNamesTodos = null;

// getting List von database with all Items
    List<DB_Item> allItems = dbHelper.getAllItems();

    for (int j = 0; j < allItems.size(); j++) {

// here says the code, that allNamesTodos is null...
// Null pointer access: The variable allNamesTodos can only be null at this location

        allNamesTodos.add(allItems.get(j).getName());
    }

    return allNamesTodos;

,这是带适配器的那个:

SortItems sortTodos = new SortItems(this);
        List<String> todos = sortTodos.dbToString();

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                R.layout.items, R.id.label, todos);
希望,你能帮帮我,谢谢你:)。

3 个答案:

答案 0 :(得分:1)

它是null因为您将其初始化为null,并且在实例化List实例之前无法添加元素。你可以改变这个,

List<String> allNamesTodos = null;

List<String> allNamesTodos = new ArrayList<>();

或者,你可以在第一次添加 -

if (allNamesTodos == null) {
  allNamesTodos = new ArrayList<>();
}
// Then you can add elements.
allNamesTodos.add(allItems.get(j).getName());

答案 1 :(得分:0)

variable = null表示变量没有任何内容。 它没有对象。因此,尝试访问它,即调用其上的任何方法,就像尝试在 nothing 上调用方法一样,只需生成NullPointerException

您混淆了null值,这意味着该变量不包含实际对象,而空列表 - 这是一个实际对象。

要构建空列表,请执行以下操作:

List<Stuff> list = new ArrayList<Stuff>();

add()事情要好。

答案 2 :(得分:0)

我(*)建议始终初始化变量,这样您就不必为空值而烦恼。如果您使用= null替换无用的= new ...,您的问题就会消失。

(*)我没有发明这个原则,但是很久以前在做Pascal,Fortran,Basic的过程中阅读并了解了这一点。