首先说下我现在认识的 MVC与Android的各个组件的对应关系

 在android 中 activity  既要充当control 又要充当view

   view   与用户交互,响应用户操作

  control 接受view的事件请求,数据等。通知model  (说明activity持有model的实例)

   model  接受control的指令之后,独立运作,通知view

ui图如下:

android 架构之mvc_第1张图片

model接口

android 架构之mvc_第2张图片

model通知view更新数据的回调接口ILoginResult

android 架构之mvc_第3张图片

activity(view 和control)

public class MainActivity extends AppCompatActivity implements ILoginResult,        View.OnClickListener{    private EditText mEdtName;    private EditText mEdPwd;    private Button mBtnSearch;    private TextView mTvResult;    private LoginModel mLoginModel;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        init();        initEvent();    }    private void init() {        mLoginModel=new LoginModel();    }    private void initEvent() {        mBtnSearch.setOnClickListener(this);    }    private void initView() {      mEdtName=findViewById(R.id.edt_name);      mEdPwd=findViewById(R.id.edt_pwd);      mBtnSearch=findViewById(R.id.btn_search);      mTvResult=findViewById(R.id.tv_result);    }    @Override    public void onClick(View v) {        switch (v.getId()){            case R.id.btn_search:                search();                break;        }    }//    搜索点击事件    private void search() {        String account = mEdtName.getText().toString().trim();        String pwd = mEdPwd.getText().toString().trim();        if(TextUtils.isEmpty(account)){            Toast.makeText(this, "用户名不能为空", Toast.LENGTH_SHORT).show();            return;        }        if(TextUtils.isEmpty(pwd)){            Toast.makeText(this, "密码不能为空", Toast.LENGTH_SHORT).show();            return;        }        mLoginModel.getLoginInfo(account,pwd,this);    }    @Override    public void loginSucess(String result) {        mTvResult.setText(result);    }    @Override    public void loginFail(String errorMsg) {        mTvResult.setText(errorMsg);    }}

其中model接口的实现类如下

public class LoginModel implements ILoginModel{    /**     * 获取登录账户和密码     * @param account     * @param pwd     * @param iLoginResult 回掉接口,用来通知view     *     * */    @Override    public void getLoginInfo(String account, String pwd, ILoginResult iLoginResult) {        if(!"zhangsan".equals(account)){            //用户名不对,login fail,通知view            iLoginResult.loginFail("用户名不对");            return;        }        if(!"123".equals(pwd)){            //密码不正确 login fail,通知view            iLoginResult.loginFail("密码不正确");            return;        }        if("zhangsan".equals(account) && "123".equals(pwd)){            //登录成功 login sucess ,通知view            iLoginResult.loginSucess("登录成功");        }    }}

是不是很简单,

 control 接受view的登陆事件的响应,将数据传递给model处理,处理完之后,通过接口回掉,将处理的结果通知view,view更新数据和ui

源代码:http://download.csdn.net/download/oneblue123/10258850

更多相关文章

  1. android handlerthread 通知机制
  2. 自己写的一套应用管理系统(包含一套app系统,一套后台web管理系统《
  3. Android Parcelable接口
  4. Android使用回调接口
  5. AIDL --- Android中的远程接口(1)
  6. Android之Adapter:连接后端数据和前端显示的适配器接口
  7. [置顶] 开发Android硬件抽象层模块接口
  8. Android USB HID设备通信controlTransfer 接口参数

随机推荐

  1. React-native 问题汇总
  2. Android(安卓)下拉控件:Spinner
  3. Android(安卓)近场通信(NFC)
  4. adb for remote connections
  5. android contentProvider 小例子
  6. Android(安卓)resource notlong / long i
  7. android应用启动页面
  8. 使用ant打包APK文件
  9. Android显示网络图片
  10. android小项目demo2