天天看點

ListView的空指針崩潰ListView的空指針崩潰

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了,導緻空指針異常.

好吧,原來是這個導緻的,給自己提個醒吧。

繼續閱讀