Android Jetpack中数据绑定ViewModel入门

Jetpack 包含一系列 Android 库,它们都采用最佳做法并在 Android 应用中提供向后兼容性。

网站原址为:https://developer.android.google.cn/jetpack,英文好的最好看原版,里面有简单的教程。

本文介绍的是其中的两个小部分,数据绑定和ViewModel的入门,主要是介绍他们的使用,应用没什么功能,第一步创建应用:

Android Jetpack中数据绑定ViewModel入门

第二步设置名字和保存位置,注意勾选最底下的androidx*选项

Android Jetpack中数据绑定ViewModel入门

接下来就会创建项目

Android Jetpack中数据绑定ViewModel入门

之后在app的build.gradle 中增加dataBinding.enabled=true,然后sync

Android Jetpack中数据绑定ViewModel入门

接着在项目的xml中如下图点击创建数据绑定

Android Jetpack中数据绑定ViewModel入门

创建新的java类,继承自ViewModel,如下图

Android Jetpack中数据绑定ViewModel入门

Android Jetpack中数据绑定ViewModel入门

Myviewmodel类里的代码如下

<code>
package com.jesus.holy.myjiafa;

import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;

public class Myviewmodel extends ViewModel {
private MutableLiveData<integer> Score;

public MutableLiveData<integer> getScore() {
if (Score == null) {
Score = new MutableLiveData<>();
Score.setValue(0);
}

return Score;
}

public void Add(int p) {
Score.setValue(Score.getValue() + p);
}

}/<integer>/<integer>/<code>

接着在xml中添加如下代码

Android Jetpack中数据绑定ViewModel入门

然后更改文本框,用于显示数字

Android Jetpack中数据绑定ViewModel入门

如上图中间的@{}中间的代码,接着

Android Jetpack中数据绑定ViewModel入门

在button里onclick里如上图更改;最后在MainActivity里代码如下

<code>package com.jesus.holy.myjiafa;

import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.ViewModelProviders;

import android.os.Bundle;

import com.jesus.holy.myjiafa.databinding.ActivityMainBinding;

public class MainActivity extends AppCompatActivity {
Myviewmodel myviewmodel;
ActivityMainBinding binding;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding= DataBindingUtil.setContentView(this,R.layout.activity_main);
myviewmodel=ViewModelProviders.of(this).get(Myviewmodel.class);
binding.setData(myviewmodel);
binding.setLifecycleOwner(this);
// setContentView(R.layout.activity_main);
}
}
/<code>

xml的代码

<code>
<layout><data><variablename>/<data><layout>data.Add(1)}"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.517"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.707" />/<layout>/<layout>/<code>

效果图

Android Jetpack中数据绑定ViewModel入门


分享到:


相關文章: