Databinding的简单使用
以 对Textview进行数据联动 为用例
xml中
layout为根
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="UserBean"
type="com.example.mytestdatabinding_kotlin.UserBean" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/tttt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/asdasd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@{UserBean.name}"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@{String.valueOf(UserBean.age)}"/>
</LinearLayout>
</layout>
class UserBean(
var name: String? //姓名
, var age: Int //年龄
)
用DataBindingUtil进行了setContentView
创建UserBean对象 对TextView进行赋值
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val dataBinding = DataBindingUtil.setContentView<ActivityMainBinding>(this,R.layout.activity_main)
dataBinding.userBean = UserBean("yiyi",123)
dataBinding.tttt.setOnClickListener { }
}
}
优点
- 不用findViewById了
- 直接后台配置 一个类对应着好几个TextView 方便了管理
- 可以双向绑定 比如EditView的数据用户更改了 与其绑定的变量值也会改变 "=@{String.valueOf(UserBean.age)}"
Databinding
设计想法 wpf -》mvvm 与viewmodel是一个系列的
实现原理 rxjava的那种观察者模式
参考资料