尝试将List <string>添加到HashMap </string>时出现空点异常

时间:2015-03-31 07:52:33

标签: android hashmap

我正在尝试将字符串列表添加到HashMap中,我已经在下面显示了我正在尝试的方式。但我得到零点异常(我在代码中评论了我得到的异常)。 任何人都可以发现我正在犯的错误。

     private List<Product> mCartList;
     List<String> listDataHeader;
     HashMap<String, List<String>> listDataChild;

        List<String> listdescription = new ArrayList<String>();
        List<String> listcrust = new ArrayList<String>();
        List<String> listsize = new ArrayList<String>();
        String descriptionString;
        String crustString;
        String sizeString;

        for (int i = 0; i < mCartList.size(); i++) {

            mCartList.get(i).selected = false;
            hot_number = mCartList.size();


            if (mCartList.get(i).description != null
                    && !mCartList.get(i).description.isEmpty()) {
                descriptionString = mCartList.get(i).description;

                listdescription.add(descriptionString);
                System.out.println("listdescription = " + listdescription);
            }

            if (mCartList.get(i).crust != null
                    && !mCartList.get(i).crust.isEmpty()) {
                crustString = mCartList.get(i).crust;

                listcrust.add(crustString);
                System.out.println("listcrust = " + listcrust);
            }

            if (mCartList.get(i).size != null
                    && !mCartList.get(i).size.isEmpty()) {
                sizeString = mCartList.get(i).size;

                listsize.add(sizeString);
                System.out.println("listsize = " + listsize);
            }

        }

        listDataChild.put("listcrust", listcrust); // error occurs here
        listDataChild.put("listsize", listsize);

        listDataHeader.addAll(listdescription);

        System.out.println("listDataChild = " + listDataChild);
        System.out.println("listDataHeader = " + listDataHeader);

我已调试并获得了88行中listsize的值,但是当我通过第93行时,它会给出下面提到的异常。

enter image description here

异常屏幕截图

enter image description here

3 个答案:

答案 0 :(得分:3)

您尚未将对象分配给listDataChild成员。

看看这些是在班级上定义的:

 private List<Product> mCartList;
 List<String> listDataHeader;
 HashMap<String, List<String>> listDataChild;

代码重置在方法内部。这是对的吗?

默认情况下,该成员未初始化并设置为null。如果您尝试对空引用执行操作,它将失败并显示NullPointerException。

尝试以下方法:

HashMap<String, List<String>> listDataChild = new HashMap<String, List<String>>();

答案 1 :(得分:3)

您的 HashMap (listDataChild)未在第3行初始化。

在为其添加值之前初始化它。如果你没有初始化它,那么当你在它上面调用方法 put 并且 NULL 上的所有操作都会给出它时,它将 NULL 你是一个 NullPointerException

例如,您可以在调用 put 方法之前添加初始化:

listDataChild = new HashMap<String, List<String>>();

答案 2 :(得分:1)

我没有看到,你实例化了listDataChild对象,这会导致这个,对象在你要添加新项目时为空。

HashMap<String, List<String>> listDataChild = new HashMap<String, List<String>>();