Android(安卓)JetPack DataBinding 将界面和数据进行绑定
16lz
2021-01-26
DataBinding改写,将界面和数据进行绑定
LiveData观察就是通过setValue()
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开发中的五大布局
- android studio导入第三方工具
- Android(安卓)adb不是内部或外部命令 (转)
- 移植ffmpeg到android_1
- android 支持的资源类型及其存放的目录
- android浮动布局
- Android:封装一个通用PopupWindow
- 使用ScrollView时解决android布局不能撑满全屏的问题
- Android入门第三篇之RelativeLayout、FrameLayout .