ListView的空指針崩潰
一、問題情況:
某個類中調用getDataFromServer(),來擷取資料news,adapter中根據news決定條目數量,然後就奔潰啦,提示空指針。
public void initData() {
String cache = CacheUtil.getCache(mActivity, mTabDetailUrl);
if (!TextUtils.isEmpty(cache)) {
processData(cache);
}
getDataFromServer();
//listView.setAdapter 為什麼這裡會奔潰?news空指針?明明上面請求網絡資料了啊?
//請求網絡為異步GET請求,onSuccess還沒執行時,就已經執行setAdapter了,導緻空指針異常
//SystemClock.sleep(1000);
listView.setAdapter(new LvAdapter());
}
private void getDataFromServer() {
RequestParams params = new RequestParams(mTabDetailUrl);
x.http().get(params, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
//擷取資料news--就是這東西導緻Adapter中空指針
}
}
private class LvAdapter extends BaseAdapter {
@Override
public int getCount() {
return news.size(); //這裡空指針
}
}
二、原因分析
一開始找了半天原因沒發現到底為什麼會出現這樣的問題,明明有資料的啊?emmm,費了老大勁試到在xUtils3的網絡請求中onSuccess中打個Log,發現奔潰時Log根本沒打,才覺得為什麼沒走onSuccess方法啊?後來點進源碼一看才發現是異步GET請求。
請求網絡為異步GET請求,onSuccess還沒執行時,就已經執行下面的setAdapter了,導緻空指針異常.
好吧,原來是這個導緻的,給自己提個醒吧。