android 架构之mvc
16lz
2021-01-23
首先说下我现在认识的 MVC与Android的各个组件的对应关系:
在android 中 activity 既要充当control 又要充当view
view 与用户交互,响应用户操作
control 接受view的事件请求,数据等。通知model (说明activity持有model的实例)
model 接受control的指令之后,独立运作,通知view
ui图如下:
model接口
model通知view更新数据的回调接口ILoginResult
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
更多相关文章
- android handlerthread 通知机制
- 自己写的一套应用管理系统(包含一套app系统,一套后台web管理系统《
- Android Parcelable接口
- Android使用回调接口
- AIDL --- Android中的远程接口(1)
- Android之Adapter:连接后端数据和前端显示的适配器接口
- [置顶] 开发Android硬件抽象层模块接口
- Android USB HID设备通信controlTransfer 接口参数