ArrayList为空并且出错

时间:2012-06-28 10:24:44

标签: android android-view android-adapter

我在Fragment扩展ListFragment中有这个:

try {
    FileInputStream in = getActivity().getApplicationContext().openFileInput("list");
    ObjectInputStream i = new ObjectInputStream(in);
    myData = (ArrayList<HashMap<String, MessageRecord>>) i.readObject();
    if (myData != null) {
        this.totalmessages = myData.size();
        mySimpleAdapter = new MySimpleAdapter(getActivity().getApplicationContext(),  myData, R.layout.menurow, mStrings, new int [] {R.id.ivDirection, R.id.tvMessage});
        setListAdapter(mySimpleAdapter);
    }
    in.close();
   }

我收到了这个错误:

Error: Fetch Message List
Error: java.lang.NullPointException
Error: ...FragmentMessages$1.run(FragmentMessages.java:307)

最后一行指向

mySimpleAdapter.notifyDataSetChanged();

请帮忙。

1 个答案:

答案 0 :(得分:1)

如果数组为空,则

调用notifyDataSetInvalidated();如果数组不为空,则调用notifyDataSetChanged()

为了澄清一点,如果您的数据为空并且在listView上设置了emptyViewnotifyDataSetInvalidated()将显示空视图。 你得到的错误是因为在调用notifyDataSetChanged()时,适配器试图在没有数据时召唤一个listView视图,因此无法构造该视图。