After multiple hours, I've pin-point that the problem has to do something with with day.setIcon(). I came to this conclusion because mIcon's value is not changed in spite invoking the method.
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference at teamtreehouse.com.myapplication.weather.Forecast.getIconId(Forecast.java:39) at teamtreehouse.com.myapplication.weather.Day.getIconId(Day.java:68)
Line 39 is:
if (iconString.equals("clear-day")) {
Line 68 is:
return Forecast.getIconId(mIcon);
MainActivity Class
private Day[] getDailyForecast(String jsonData) throws JSONException {
    JSONObject forecast = new JSONObject(jsonData);
    String timezone = forecast.getString("timezone");
    JSONObject daily = forecast.getJSONObject("daily");
    JSONArray data = daily.getJSONArray("data");
Day[] days = new Day[data.length()];
for (int i = 0; i < data.length(); i++) {
    JSONObject jsonDay = data.getJSONObject(i);
    Day day = new Day();
    day.setIcon("snow"); //not changing mIcon
    day.setSummary(jsonDay.getString("summary"));
    day.setTemperatureMax(jsonDay.getDouble("temperatureMax"));
    day.setTime(jsonDay.getLong("time"));
    day.setTimezone(timezone);
    days[i] = day;
}
return days;
}
Day Class
package teamtreehouse.com.myapplication.weather;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.Log;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
/**
 * Created by Owner on 2016-09-14.
 */
public class Day implements Parcelable {
    private long mTime;
    private String mSummary;
    private double mTemperatureMax;
    private String mIcon;
    private String mTimezone;
    public long getTime() {
        return mTime;
    }
    public void setTime(long time) {
        mTime = time;
        Log.d("mTime", "mTime");
    }
    public String getSummary() {
        return mSummary;
    }
    public void setSummary(String summary) {
        mSummary = summary;
    }
    public int getTemperatureMax() {
        return (int) Math.round(mTemperatureMax);
    }
    public void setTemperatureMax(double temperatureMax) {
        mTemperatureMax = temperatureMax;
    }
    public String getIcon() {
        return mIcon;
    }
    public void setIcon(String icon) {
        mIcon = icon;
    }
    public String getTimezone() {
        return mTimezone;
    }
    public void setTimezone(String timezone) {
        mTimezone = timezone;
    }
    public int getIconId() {
        return Forecast.getIconId(mIcon);
    }
    public String getDaysOfTheWeek(){
        SimpleDateFormat formatter = new SimpleDateFormat("EEEE");
        formatter.setTimeZone(TimeZone.getTimeZone(mTimezone));
        Date dateTime = new Date(mTime * 1000);
        return formatter.format(dateTime);
    }
 }
Forecast class
package teamtreehouse.com.myapplication.weather;
import teamtreehouse.com.myapplication.R;
/**
 * Created by Owner on 2016-09-14.
 */
public class Forecast {
    private Current mCurrent;
    private Hour[] mHourlyForecast;
    private Day[]mDailyForecast;
    public Current getCurrent() {
        return mCurrent;
    }
    public void setCurrent(Current current) {
        mCurrent = current;
    }
    public Hour[] getHourlyForecast() {
        return mHourlyForecast;
    }
    public void setHourlyForecast(Hour[] hourlyForecast) {
        mHourlyForecast = hourlyForecast;
    }
    public Day[] getDailyForecast() {
        return mDailyForecast;
    }
    public void setDailyForecast(Day[] dailyForecast) {
        mDailyForecast = dailyForecast;
    }
    public static int getIconId(String iconString){
        int iconId = R.drawable.clear_day;
        if (iconString.equals("clear-day")) { //you can use switch-case statement
            iconId = R.drawable.clear_day;
        }
        else if (iconString.equals("clear-night")) {
            iconId = R.drawable.clear_night;
        }
        else if (iconString.equals("rain")) {
            iconId = R.drawable.rain;
        }
        else if (iconString.equals("snow")) {
            iconId = R.drawable.snow;
        }
        else if (iconString.equals("sleet")) {
            iconId = R.drawable.sleet;
        }
        else if (iconString.equals("wind")) {
            iconId = R.drawable.wind;
        }
        else if (iconString.equals("fog")) {
            iconId = R.drawable.fog;
        }
        else if (iconString.equals("cloudy")) {
            iconId = R.drawable.cloudy;
        }
        else if (iconString.equals("partly-cloudy-day")) {
            iconId = R.drawable.partly_cloudy;
        }
        else if (iconString.equals("partly-cloudy-night")) {
            iconId = R.drawable.cloudy_night;
        }
        return iconId;
    }
}
 
     
    