我是靠谱客的博主 单纯啤酒,最近开发中收集的这篇文章主要介绍android mvvm基础的使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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基础的使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部