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

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

LiveData观察就是通过setValue()
Android JetPack DataBinding 将界面和数据进行绑定_第1张图片

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

dataBinding{
            enabled true
        }

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

转换后布局文件查看Text会多一对标签
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)