欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > Data binding和View binding

Data binding和View binding

2025/2/22 2:17:35 来源:https://blog.csdn.net/weixin_43508502/article/details/141200613  浏览:    关键词:Data binding和View binding

Data Binding 和 View Binding 是 Android 开发中两种用于简化界面(UI)与数据之间交互的技术。它们各自有其独特的用途和优势。

Data Binding

Data Binding 允许你在布局文件中直接使用变量,并自动将它们与你的数据对象同步。这减少了大量的样板代码(如 findViewById 和手动更新 UI 的代码)。

步骤 1: 在 build.gradle 文件中启用 Data Binding

android {...dataBinding {enabled = true}
}

步骤 2: 创建一个简单的布局文件 activity_main.xml

<layout xmlns:android="http://schemas.android.com/apk/res/android"><data><variablename="user"type="com.example.User" /></data><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{user.name}" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{user.email}" /></LinearLayout>
</layout>

注释:

  • <layout> 标签是 Data Binding 特有的。
  • <data> 标签内部定义了布局中可用的变量。
  • android:text="@{user.name}" 表示 TextView 的文本会自动绑定到 User 对象的 name 属性上。

步骤 3: 在 Activity 中使用 Data Binding

public class MainActivity extends AppCompatActivity {private ActivityMainBinding binding;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 使用 Data Binding 加载布局binding = DataBindingUtil.setContentView(this, R.layout.activity_main);User user = new User("John Doe", "john.doe@example.com");// 设置数据对象binding.setUser(user);}
}

注释:

  • ActivityMainBinding 是由 Data Binding 插件自动生成的,对应于你的布局文件。
  • 使用 DataBindingUtil.setContentView 替代传统的 setContentView 方法。
  • 直接通过生成的 binding 类来访问 UI 元素和设置数据。

View Binding

View Binding 提供了对视图更直接、类型安全的访问,它自动为布局中的每个视图生成一个绑定类。

步骤 1: 在 build.gradle 文件中启用 View Binding

android {...viewBinding {enabled = true}
}

步骤 2: 在 Activity 中使用 View Binding

public class MainActivity extends AppCompatActivity {private ActivityMainBinding binding;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 替代 findViewByIdbinding = ActivityMainBinding.inflate(getLayoutInflater());View view = binding.getRoot();setContentView(view);// 现在可以直接通过 binding 访问布局中的视图TextView textView = binding.textView;textView.setText("Hello, View Binding!");}
}

注释:

  • ActivityMainBinding 是由 View Binding 自动生成的,与你的布局文件名相对应。
  • inflate 方法用于生成布局并返回绑定对象。
  • binding.getRoot() 返回布局的根视图,可以像普通布局一样设置给 setContentView
  • 现在你可以直接通过 binding 访问布局中的所有视图,无需再调用 findViewById

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词