返回
Android DataBinding: 从入门到进阶
Android
2024-01-29 01:10:07
DataBinding 是谷歌官方发布的一个框架,顾名思义即为数据绑定,是 MVVM 模式在 Android 上的一种实现,用于降低布局和逻辑的耦合性,使代码逻辑更加清晰。
MVVM 相对于 MVP,其最大的优势就是通过数据绑定,让 View 层和 Model 层直接建立联系,中间不再需要 Presenter 层进行转发,这样就极大降低了 Presenter 层的代码量。
DataBinding 的优点
- 简化了 View 层和 Model 层之间的交互,提高了代码的可读性。
- 降低了代码量,减少了维护成本。
- 提高了代码的可重用性。
DataBinding 的使用
- 在布局文件中使用 DataBinding
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="user"
type="com.example.databinding.User" />
</data>
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.name}" />
</layout>
- 在 Activity 或 Fragment 中使用 DataBinding
public class MainActivity extends AppCompatActivity {
private User user;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
user = new User("John", "Doe");
binding.setUser(user);
}
}
DataBinding 的进阶使用
- 使用 Transformations 类转换数据
@InverseBindingAdapter(attribute = "android:text", event = "android:textAttrChanged")
public static String getText(TextView view) {
return view.getText().toString();
}
- 使用 ObservableField 监听数据变化
public class User {
public ObservableField<String> name = new ObservableField<>();
public ObservableField<String> email = new ObservableField<>();
// 省略 getter 和 setter 方法
}
- 使用 DataBindingAdapters 类自定义绑定适配器
@BindingAdapter("android:visibility")
public static void setVisibility(View view, boolean visible) {
view.setVisibility(visible ? View.VISIBLE : View.GONE);
}
总结
DataBinding 是一个强大的框架,可以极大地简化 Android 开发中的 View 层和 Model 层之间的交互。通过使用 DataBinding,我们可以降低代码量,提高代码的可读性和可重用性。