Activty中使用DataBinding
第一步:在app的build.gradle中增加下面的代码,并且Sync Now(同步)
dataBinding{
enabled = true
}
第二步:然后activity_main.xml文件中内容如下
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<!--绑定数据-->
<variable
name="user"
type="com.example.mvvpdemo.bean.User" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.mName}" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.mAge}" />
</LinearLayout>
</layout>
第三步:MainActivity中的内容如下:
package com.example.mvvpdemo;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import com.example.mvvpdemo.bean.User;
import com.example.mvvpdemo.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
//获取到布局文件
//这个类名根据avtivity对应的layout名,加个binding自动生成
//比如此处布局文件为:activity_main 转换为类型为 MainActivityBinding
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
// 给布局文件赋值
User user2 = new User("张三", "User");
binding.setUser(user2);
}
}
Fragment中使用DataBinding
fragment 中使用DataBinding 和 Activity 中不同,使用的是DataBindingUtil.inflate 形成binding,然后通过binding.root方法形式View。
class LeftFragment : Fragment() {
private lateinit var binding: FragmentLeftBinding;
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = DataBindingUtil.inflate<FragmentLeftBinding>(
inflater,
R.layout.fragment_left,
container,
false
)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btn.setOnClickListener {
}
}
}