数组列表空指针异常 - Android

use*_*965 0 java android nullpointerexception

我正在尝试创建一个检索用户喜欢的书籍报价的应用程序,但我仍然坚持如何将这些信息显示给用户.我创建了一个ArrayList,它将存储所有信息.但是,当显示此信息时,我不断收到错误:

显示java.lang.NullPointerException

当它试图执行代码时

temp[i] = new HashMap<String,String>();
Run Code Online (Sandbox Code Playgroud)

这个课程如下所示:

public class FavouriteQuotesActivity extends ListActivity {

    static final ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();

    private void getFavorites() {
        DataBaseHelper myDbHelper = new DataBaseHelper(this);

        String favorites [] = myDbHelper.getFavourites();

        if(list.size() > 0)
        {
            list.removeAll(list);
        }

        for(int i = 0;i < favorites.length; i++)
        {
            String quotes = favorites[i];
            String[] quoteArray = quotes.split(":");
            HashMap<String,String> temp[] = null; 

            temp[i] = new HashMap<String,String>();
            temp[i].put("Author",(quoteArray[2]));
            temp[i].put("Quote",(quoteArray[4]));
            list.add(temp[i]);

        }


    }
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

Jon*_*eet 6

看看这段代码:

HashMap<String,String> temp[] = null; 
temp[i] = new HashMap<String,String>();
Run Code Online (Sandbox Code Playgroud)

刚刚temp变量赋予了一个空值(通常会有一个声明HashMap<String, String>[] temp) - 所以NullPointerException当你尝试访问temp[i]下一个语句时,你会得到一个.

目前还不清楚为什么你在代码中使用了一个数组 - 为什么你不只是使用:

HashMap<String, String> map = new HashMap<String, String>();
map.put("Author", quoteArray[2]);
map.put("Quote", quoteArray[4]);
list.add(map);
Run Code Online (Sandbox Code Playgroud)

另外,目前还不清楚为什么你在这里使用地图,因为它总是有相同的两个键.为什么不创建一个Quote具有名称和作者属性的类?此外,在这里使用静态变量似乎是一个坏主意 - 为什么不在getFavorites每次调用时创建一个新列表,并在方法结束时返回它?