JetPack之ViewModel+DataBinding

一、声明

此篇仅仅叙述DataBinding的基本用法以及搭配ViewModel实现VIew和Model的双向绑定。

ViewModel在JetPack的作用:持久化数据;
DataBinding的作用是:实现View和Model的双向绑定

二、ViewModel基本用法

继承ViewModel后,将Activity中需要保存的数据存放在ViewModel中,当Activity切换横竖屏时,保存在ViewModel中的数据不会丢失。

public class MainActivity extends AppCompatActivity {
   
    private MyViewModel viewModel;
    private EditText editText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        viewModel = new MyViewModel();
        editText = findViewById(R.id.edit);
        editText.setText((String)viewModel.getWord());
    }

    public void click(View view) {
   
        viewModel.setWord("xixi");
    }
}
.public class MyViewModel<T> extends ViewModel {
   
    public T getWord() {
   
        return word;
    }

    public void setWord(T word) {
   
        this.word = word;
    }

    private T word;

}

三、ViewModel+LiveData+DataBinding

3.1 DataBinding简介
此处借用一下QQ音乐团队绘制的一张图片说明,DataaBinding的作用。
在这里插入图片描述
3.2 使用方法:
在app的build.gradle中添加如下:

dataBinding {
   
        enabled = true
    }

(1)第一种方式:
此处必须要申明layout标签,data标签申明数据源
在textView和EditView同时绑定同一个user.name数据源,当通过编辑EditView中的数据时,TextView也会发生相应的变化。

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">
    <data>
        <variable
            name="user"
            type = "com.example.myviewmodel.databinding.model.User">
        </variable>
    </data>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <Button
            android:id="@+id/btn1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按钮">
        </Button>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值