1、模型层(model):对数据库的操作、对网络等的操作都应该在model里面处理,对业务计算等操作也是必须放在的该层的。
  2、视图层(view):一般采用xml文件进行界面的描述,使用的时候可以非常方便的引入,在android中也可以使用javascript+html等的方式作为view层,这里需要进行java和javascript之间的通信,android提供了它们之间非常方便的通信实现。
  3、控制层(controller):android的控制层通常在acitvity,不要直接在acitivity中写代码,要通过activity交割model业务逻辑层处理, 这样做的另外一个原因是android中的acitivity的响应时间是5s,如果耗时的操作放在这里,程序就很容易被回收掉。

项目布局

1.布局

                                                                                                                

 

2.model层

Bean对象

public class CangTouShiBean {    /**     * showapi_res_code : 0     * showapi_res_error :     * showapi_res_body : {"ret_code":0,"list":["北风勇士马,晚水独芙蓉。吾将宝非宝,英雄徒自强。","朝骑五花马,太华三芙蓉。吾将宝非宝,天子贵文强。","请歌牵白马,菡萏金芙蓉。大位天下宝,自从冒顿强。","青丝系五马,秀出九芙蓉。迈德惟家宝,日来知自强。","北买党项马,美女夸芙蓉。河宗来献宝,十年思自强。","青丝系五马,大嫂采芙蓉。药妙灵仙宝,不独有文强。"]}     */    private int showapi_res_code;    private String showapi_res_error;    private ShowapiResBodyBean showapi_res_body;    @Override    public String toString() {        return "CangTouShiBean{" +                "showapi_res_code=" + showapi_res_code +                ", showapi_res_error='" + showapi_res_error + '\'' +                ", showapi_res_body=" + showapi_res_body +                '}';    }    public int getShowapi_res_code() {        return showapi_res_code;    }    public void setShowapi_res_code(int showapi_res_code) {        this.showapi_res_code = showapi_res_code;    }    public String getShowapi_res_error() {        return showapi_res_error;    }    public void setShowapi_res_error(String showapi_res_error) {        this.showapi_res_error = showapi_res_error;    }    public ShowapiResBodyBean getShowapi_res_body() {        return showapi_res_body;    }    public void setShowapi_res_body(ShowapiResBodyBean showapi_res_body) {        this.showapi_res_body = showapi_res_body;    }    public static class ShowapiResBodyBean {        /**         * ret_code : 0         * list : ["北风勇士马,晚水独芙蓉。吾将宝非宝,英雄徒自强。","朝骑五花马,太华三芙蓉。吾将宝非宝,天子贵文强。","请歌牵白马,菡萏金芙蓉。大位天下宝,自从冒顿强。","青丝系五马,秀出九芙蓉。迈德惟家宝,日来知自强。","北买党项马,美女夸芙蓉。河宗来献宝,十年思自强。","青丝系五马,大嫂采芙蓉。药妙灵仙宝,不独有文强。"]         */        private int ret_code;        private List list;        @Override        public String toString() {            return "ShowapiResBodyBean{" +                    "ret_code=" + ret_code +                    ", list=" + list +                    '}';        }        public int getRet_code() {            return ret_code;        }        public void setRet_code(int ret_code) {            this.ret_code = ret_code;        }        public List getList() {            return list;        }        public void setList(List list) {            this.list = list;        }    }}

请求回调接口

public interface BeanCallback {    void onError(String msg);    void onSuccess(T t);}

请求接口

public interface ICangTouShi {    //请求数据,需要有变化的参数    void doRequest(String num, String type, String yayuntype, String key, BeanCallback callback);}

实现请求接口

public class CangTouShiModel implements ICangTouShi {    @Override    public void doRequest(String num, String type, String yayuntype, String key, final BeanCallback callback) {        //请求数据        //使用OkHttp        OkHttpClient client = new OkHttpClient();        RequestBody body = new FormBody.Builder()                .add("showapi_appid","27306")                .add("showapi_sign","150e9206e7f542bab4affe49d73cb920")                .add("num",num)                .add("type",type)                .add("yayuntype",yayuntype)                .add("key",key).build();        Request request = new Request.Builder()                .post(body)                .url("http://route.showapi.com/950-1").build();        Call call = client.newCall(request);        //异步请求,子线程        call.enqueue(new Callback() {            @Override            public void onFailure(Call call, IOException e) {                Log.e("TAG","-----------"+e.getMessage());                callback.onError(e.getMessage());            }            @Override            public void onResponse(Call call, Response response) throws IOException {                String json = response.body().string();                Gson gson = new Gson();                CangTouShiBean bean = gson.fromJson(json, CangTouShiBean.class);                callback.onSuccess(bean);            }        });    }}

3.controller层

public class MainActivity extends Activity {    //逻辑判断,UI操作    RadioGroup rg_57,rg_ct,rg_yy;    EditText et_key;    Button btn_submit;    TextView tv_show;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        registerListener();    }    private void registerListener() {        //逻辑控制        //实际上就只要监听提交按钮即可,因为其他的按钮只是获取数据,不需要按下后立即更改UI        btn_submit.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                String key = et_key.getText().toString();                if(TextUtils.isEmpty(key)){                    Toast.makeText(MainActivity.this,"key不能为空",Toast.LENGTH_SHORT).show();                    return;                }                String num = rg_57.getCheckedRadioButtonId()==R.id.rb_5?"5":"7";                String type = null;                switch (rg_ct.getCheckedRadioButtonId()){                    case R.id.rb_ct:                        type = "1";                        break;                    case R.id.rb_cw:                        type = "2";                        break;                    case R.id.rb_cz:                        type = "3";                        break;                    case R.id.rb_dz:                        type = "4";                        break;                    case R.id.rb_dj:                        type = "5";                        break;                }                String yy = null;                switch (rg_yy.getCheckedRadioButtonId()){                    case R.id.rb_1y:                        yy="1";                        break;                    case R.id.rb_2y:                        yy="2";                        break;                    case R.id.rb_3y:                        yy="3";                        break;                }                final ProgressDialog dialog = new ProgressDialog(MainActivity.this);                dialog.setTitle("提示");                dialog.setMessage("开始请求");                dialog.show();                //请求数据                CangTouShiModel model = new CangTouShiModel();                //OkHttp的异步请求,在子线程中                model.doRequest(num, type, yy, key, new BeanCallback() {                    @Override                    public void onError(String msg) {                        runOnUiThread(new Runnable() {                            @Override                            public void run() {                                dialog.dismiss();                                Toast.makeText(MainActivity.this,"msg",Toast.LENGTH_SHORT).show();                            }                        });                    }                    @Override                    public void onSuccess(final CangTouShiBean bean) {                        runOnUiThread(new Runnable() {                            @Override                            public void run() {                                dialog.dismiss();                                List list = bean.getShowapi_res_body().getList();                                tv_show.setText("");                                for (String s : list) {                                    tv_show.append(s+"\n");                                }                            }                        });                    }                });            }        });    }    private void initView() {        rg_57 = (RadioGroup) findViewById(R.id.rg_57);        rg_57.check(R.id.rb_5);        rg_ct = (RadioGroup) findViewById(R.id.rg_ct);        rg_ct.check(R.id.rb_ct);        rg_yy = (RadioGroup) findViewById(R.id.rg_yy);        rg_yy.check(R.id.rb_1y);        et_key = (EditText) findViewById(R.id.et_key);        btn_submit = (Button) findViewById(R.id.btn_submit);        tv_show = (TextView) findViewById(R.id.tv_show);    }}

写这个,只为自己了解

更多相关文章

  1. Android(安卓)WebView 中的 Html 网页定位操作
  2. Android(安卓)Binder入门指南之getService详解之请求的反馈
  3. Android(安卓)OkHttp完全解析 是时候来了解OkHttp了
  4. Android中发送Http请求实例
  5. Android启动Application onCreate走了多次
  6. Android与服务器通信的方法之一(json)效率不高安全性不好
  7. [Android]解决3gwap联网失败:联网请求在设置代理与直连两种方式的
  8. Intent filter 关于Action、Category属性详解---附带实例源码
  9. Android(安卓)RxJava 实际应用讲解:网络请求嵌套回调

随机推荐

  1. Android(安卓)Property System | Android
  2. 【android 应用】Android(安卓)APP(应用)如何
  3. Android传感器编程实例开发——三轴数据
  4. Android(安卓)多媒体框架 OpenCore(Packet
  5. Android中的线程处理
  6. Android网络收音机项目
  7. 海康威视视频监控demo 源码+库文件
  8. Android(安卓)Manifest.xml全局配置文件
  9. Android(安卓)HIDL第一个HelloWorld demo
  10. android下远程GDB调试