欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android JetPack DataBinding 将界面和数据进行绑定

程序员文章站 2022-03-13 21:25:31
...

DataBinding改写,将界面和数据进行绑定

LiveData观察就是通过setValue()
Android JetPack DataBinding 将界面和数据进行绑定

1.在bulid.gradle(Module:app)deafultConfig里加

dataBinding{
            enabled true
        }

2.将布局文件 Convert to data binding layout

转换后布局文件查看Text会多一对<data></data>标签
Activity.java文件中会多一个对象类型 xxx(布局文件名)Binding 如:ActivityMainBinding binding;
原来的setContentView(R.layout.activity_main);就不需要了
绑定布局文件

ActivityMainBinding binding;
binding= DataBindingUtil.setContentView(this,R.layout.activity_main);

绑定ViewModel(数据)文件

MyViewModel myViewModel;
myViewModel=ViewModelProviders.of(this).get(MyViewModel.class);

控件什么的通过binding.id名访问
最后

binding.setData(myViewModel);
binding.setLifecycleOwner(this);

3.数据和点击事件反向绑定

布局文件:

	<data>
        <variable
            name="data"
            type="com.example.databinding2.MyViewModel" />
    </data>
    <TextView
    	android:text="@{String.valueOf(data.number)}"
    <Button
    	android:onClick="@{()->data.add()}"

观察就不需要了。
activity完整代码:

package com.example.databinding2;

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

import android.os.Bundle;

import com.example.databinding2.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);
    }

}

相关标签: Android android