Binding fragment 使用
Binding fragment 是 Android 中的一种数据绑定库,它可以将视图和数据绑定在一起,使得视图可以动态地展示数据变化。使用 Binding fragment 需要进行以下步骤:
- 添加依赖:在项目的 build.gradle 文件中添加如下依赖:
android {
...
buildFeatures {
dataBinding true
}
}
dependencies {
...
implementation 'androidx.databinding:databinding-runtime:4.2.2'
}
- 创建布局文件:在布局文件中使用
<layout>标签来包含视图,然后使用数据绑定表达式来设置视图的属性。例如:
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{viewModel.userName}" />
</LinearLayout>
</layout>
其中,viewModel.userName 是一个数据绑定表达式,它会将 userName 属性与 TextView 的 text 属性绑定在一起。
- 创建 Binding 实例:在 Fragment 中创建 Binding 实例,然后使用
binding.root获取根视图。例如:
class MyFragment : Fragment() {
private lateinit var binding: MyFragmentBinding
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = MyFragmentBinding.inflate(inflater, container, false)
return binding.root
}
}
- 绑定数据:在 Fragment 中设置数据源,然后将数据源与 Binding 实例绑定在一起。例如:
class MyFragment : Fragment() {
private lateinit var binding: MyFragmentBinding
private val viewModel by viewModels<MyViewModel>()
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = MyFragmentBinding.inflate(inflater, container, false)
binding.viewModel = viewModel
binding.lifecycleOwner = viewLifecycleOwner
return binding.root
}
}
其中,viewModel 是一个 ViewModel 实例,binding.viewModel 将 ViewModel 与 Binding 实例绑定在一起,binding.lifecycleOwner 设置生命周期所有者,以便在数据变化时自动更新视图。
原文地址: https://www.cveoy.top/t/topic/Z7z 著作权归作者所有。请勿转载和采集!