通常情况下我们会自定义标签来自定义view的属性供我们自己使用,但是如何在databinding中添加自定义属性呢?
我们来看看
1,在xml中定义属性
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<!--通过自定义的data来赋值,data的类型定位string-->
<variable
name="data"
type="String"/>
</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"
app:data="@{data}" />
</LinearLayout>
</layout>
2,在activity中调用它
public class RecyclerViewActivity extends Activity {
...
//获取自定义属性
@BindingAdapter("data")
public static void setData(TextView textView, final String data) {
Log.e("testaaa", "xml中的数据:" + data);
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
recyclerViewBinding = DataBindingUtil.setContentView(this, R.layout.activity_recycler_view);
//给自定义标签设置值
recyclerViewBinding.setData("这是一个自定义属性");
}
...
}
会在日志里舒输出:这是一个自定义属性。
关键在于:@BindingAdapter(“data”)
这个用于绑定binding中自定义的属性