MVP 类图
classDiagram
LoginModel <|.. LoginModeImp
<<interface>> LoginModel
LoginView <|.. LoginViewImpl
<<interface>> LoginView
LoginPresenter <|.. LoginPresenterImpl
<<interface>> LoginPresenter
class LoginModeImp{
login(User user, OnLoginFinishedListener listener)
}
class LoginViewImpl{
void showProgress();
void hideProgress();
void setUsernameError();
void setPasswordError();
}
class LoginPresenterImpl {
LoginView mView
LoginModel mModel
destroy()
validateCredentials(User u)
}
class Activity {
onCreate()
}
Activity o-- LoginPresenter
LoginPresenterImpl o-- LoginModel
LoginPresenterImpl o-- LoginView
MMVVM
- 布局文件最外层使用layout布局标签
- 标签中需要定义变量类似:
- View的属性需要使用上面定义的变量赋值:例如 "@={adapterLogin.password}"有中间这个等号是双向绑定的形式,UI变化的时候会调用 ModelUser的setPassword方法
- 代码中可以使用 @BindingAdapter("xx_name")的形式监听layout xml中的变化 这里的xx_name 必须和下面的xx_name 保持一直
<EditText
xx_name="adapterLogin.userName"
这代表 当ModelUser的userName的值发生变化的时候,会调用代码中@BindingAdapter("xx_name")注解标识的方法