package cn.mutils.app.demo.ui; import android.content.Context; import android.util.AttributeSet; import android.widget.TextView; import cn.mutils.app.demo.R; import cn.mutils.app.demo.net.WeatherTask; import cn.mutils.app.demo.net.WeatherTask.WeatherReq; import cn.mutils.app.demo.net.WeatherTask.WeatherRes; import cn.mutils.app.demo.net.WeatherTask.WeatherRet; import cn.mutils.app.net.INetTask; import cn.mutils.app.net.NetExceptionUtil; import cn.mutils.app.net.NetTaskListener; import cn.mutils.app.ui.StateView; import cn.mutils.core.annotation.res.FindViewById; import cn.mutils.core.annotation.res.SetContentView; @SetContentView(R.layout.view_net_task) public class NetTaskDemoView extends StateView { @FindViewById(R.id.log) protected TextView mLog; public NetTaskDemoView(Context context) { super(context); } public NetTaskDemoView(Context context, AttributeSet attrs) { super(context, attrs); } public NetTaskDemoView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public void onCreate() { super.onCreate(); getMainHandler().post(new Runnable() { @Override public void run() { loadData(); getMainHandler().postDelayed(this, 2000); } }); } protected void loadData() { WeatherReq req = new WeatherReq(); req.setCitypinyin("beijing"); final WeatherTask task = new WeatherTask(); task.setRequest(req); task.addListener(new NetTaskListener<WeatherTask.WeatherReq, WeatherTask.WeatherRes>() { @Override public void onException(INetTask<WeatherReq, WeatherRes> task, Exception e) { if (NetExceptionUtil.handle(e, getToastOwner()) != null) { mLog.setText("Load weather failed"); } } @Override public void onComplete(INetTask<WeatherReq, WeatherRes> task, WeatherRes response) { StringBuilder sb = new StringBuilder(); sb.append("Load weather success\n\n"); WeatherRet ret = response.getRetData(); sb.append("City: "); sb.append(ret.getCity()); sb.append("\nCity pinyin: "); sb.append(ret.getPinyin()); sb.append("\nCity code: "); sb.append(ret.getCitycode()); sb.append("\nDate: "); ret.getDate().setFormat("yy-MM-dd"); sb.append(ret.getDate().toString()); sb.append("\nTime: "); ret.getTime().setFormat("HH:mm"); sb.append(ret.getTime().toString()); sb.append("\nPost Code: "); sb.append(ret.getPostCode()); sb.append("\nLogitude: "); sb.append(ret.getLongitude()); sb.append("\nLatitude: "); sb.append(ret.getLatitude()); sb.append("\nAltitude: "); sb.append(ret.getAltitude()); sb.append("\nWeather: "); sb.append(ret.getWeather()); sb.append("\nTemperature: "); sb.append(ret.getTemp()); sb.append("\nLowest Temperature: "); sb.append(ret.getL_tmp()); sb.append("\nHighest Temperature: "); sb.append(ret.getH_tmp()); sb.append("\nWind Direction: "); sb.append(ret.getWD()); sb.append("\nWind Strength: "); sb.append(ret.getWS()); sb.append("\nSunrise: "); sb.append(ret.getSunrise()); sb.append("\nSunset: "); sb.append(ret.getSunset()); mLog.setText(sb); } }); add(task); getMainHandler().postDelayed(new Runnable() { @Override public void run() { task.stop(); } }, 320); mLog.setText("Loading weather... ..."); } }