概述
mvvm 基础的使用
- 添加绑定
- 编写布局
- 定义实体类
- 使用
添加绑定
android {
...
dataBinding {
enabled = true
}
}
编写布局
- 要以layout作为根布局
- 使用data将布局和数据模型进行绑定
- 定义变量的名称和变量类型
- 给对应的控件使用对应变量的属性和方法
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:binding="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="viewModel"
type="com.chery.mvvmdouban.viewmodel.LoginViewModel" />
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@mipmap/login_back"
android:scaleType="fitXY" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:padding="20dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/logo" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="34dp"
android:background="@mipmap/user_edit"
android:gravity="center"
android:orientation="horizontal"
android:padding="16sp">
<EditText
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@null"
android:hint="请输入用户名"
android:text="@{viewModel.account}"
android:textColor="@color/textColor"
android:textColorHint="@color/textColorHint"
android:textSize="16sp"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@mipmap/user_edit"
android:gravity="center"
android:orientation="horizontal"
android:padding="16sp">
<EditText
android:id="@+id/et_password"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@null"
android:hint="请输入密码"
android:inputType="textPassword"
android:text="@{viewModel.password}"
android:textColor="@color/textColor"
android:textColorHint="@color/textColorHint"
android:textSize="16sp" />
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="8dp"
android:text="忘记密码"
android:textColor="@color/colorPrimaryDark"
android:textSize="16sp" />
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@mipmap/btn_login"
android:orientation="vertical"
android:padding="6dp">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?selectableItemBackground"
android:text="登录"
android:textColor="@color/viewLineColor"
android:textSize="18sp"
android:onClick="@{viewModel.onClickView}"
/>
</LinearLayout>
<TextView
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="模拟一个登陆操作,随便输入账号密码点击登录即可进入"
android:textColor="#EE1010" />
</LinearLayout>
</RelativeLayout>
</layout>
定义实体类
- 实体类通过Obserable属性值的改变会立即触发 UI 刷新
package com.chery.mvvmdouban.viewmodel;
import android.app.Activity;
import android.databinding.ObservableField;
import android.view.View;
import com.dejun.commonsdk.wight.ToastUtil;
/**
* @author DcotorWei
* @date :2019/11/26 14:46
* @description :TODO
* @email :1348172474@qq.com
*/
public class LoginViewModel {
public ObservableField<String> account=new ObservableField<>();
public ObservableField<String> password=new ObservableField<>();
public LoginViewModel(String account,String password) {
this.account.set(account);
this.password.set(password);
}
//登录按钮监听
public void onClickView(View view){
ToastUtil.MakeToast(((Activity)view.getContext()),"点击事件",ToastUtil.LENGTH_LONG).show();
}
}
使用
public class LoginActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
ActivityLoginBinding activityLoginBinding = DataBindingUtil.setContentView(this, R.layout.activity_login);
activityLoginBinding.setViewModel(new LoginViewModel("DoctorWei","123456"));
}
}
最后
以上就是单纯啤酒为你收集整理的android mvvm基础的使用的全部内容,希望文章能够帮你解决android mvvm基础的使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复