首先说下我现在认识的 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

更多相关文章

  1. Android: AIDL --- Android中的远程接口
  2. MVC架构设计与三层模型 & MVP思想精髓与解耦
  3. android handlerthread 通知机制
  4. Android和js进行交互
  5. Android中的通知—Notification
  6. 自己写的一套应用管理系统(包含一套app系统,一套后台web管理系统《
  7. android平台下基于OpenSL ES实现音频录制功能
  8. android的binder机制研究
  9. Android动态加载jar、apk的实现

随机推荐

  1. Android(安卓)SQLite 数据库、表的增、删
  2. 我的Android进阶之旅------>Android常用
  3. android 中的Main调试方法
  4. 实现图片浏览,改变透明度的方法
  5. android中使用SAX和DOM以及Pull对xml文件
  6. EditText背景 光标 下划线颜色
  7. android:screenOrientation的取值含义
  8. android中pull解析xml和生成xml
  9. Android(安卓)开发(04)高级UI组件
  10. [置顶] Android(安卓)LockScreen