【Android】在Kotlin中更优雅地使用LiveData 秒速五厘米 2022-12-11 13:43 251阅读 0赞 ![20201001213946138.png][] 由于`LiveData#Observer`接口定义在Java中,且接受一个`Nullable`参数,导致其不能很好的兼容Kotlin的SAM以及NonNull等语法特性: viewModel.order.observe(viewLifecycleOwner, Observe { it?.let { applyCurrentOrder(it) } }) * `Observe { .. }`不能省略 * `?.let`显得非常多余 现在使用`lifecycle-livedata-ktx`可以帮我们在Kotlin中更好的使用LiveData: dependencies { def lifecycle_version = "2.1.0" // or higher ... implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" ... } 然后我们可以在代码中更加优化的`observe`了: class MyViewModel: ViewModel() { private val _data: MutableLiveData<MyData> = MutableLiveData() val order: LiveData<MyData> get() = _data .. fun updateData(data: MyData) { _data.value = data } } import androidx.lifecycle.observe //ktx的observe class MyFragment: Fragment(R.layout.my_fragment) { private val viewModel: MyViewModel by viewModels() override fun onViewCreated(view: View, savedInstanceState: Bundle?) { viewModel.order.observe(viewLifecycleOwner) { // observe接受lambda,且it为NonNull applyData(it) } } fun applyData(order: Order) { .. } } 期待未来所有的AAC库都会用Kotlin重写,那时就不需要这些Ktx库做桥接了。 [20201001213946138.png]: /images/20221123/4ec369f9098b4563a344ae45c6cc59de.png
相关 在Java中,如何优雅地使用继承? 在Java中,继承是一种代码复用的方式,它使得一个类(子类)能够继承另一个类(父类)的属性和方法。以下是一些优雅使用继承的建议: 1. **单一职责原则**:子类应专注于扩展 蔚落/ 2024年09月15日 10:18/ 0 赞/ 11 阅读
相关 在Android项目中,如何优雅地处理SQLite数据库事务 在Android项目中,处理SQLite数据库事务可以遵循以下步骤,这通常被称为使用`Transaction`对象: 1. **开启事务**: 在你想要开始操作的地方( 缺乏、安全感/ 2024年09月11日 07:48/ 0 赞/ 14 阅读
相关 android开发,使用kotlin学习LiveData LiveData是Jetpack提供的一种响应式编程组件,它可以包含任何类型的数据,并在数据发生变化的时候通知给观察者。也就是说,我们可以将数据使用LiveData来包装,然后 电玩女神/ 2024年04月03日 09:45/ 0 赞/ 44 阅读
相关 【Android】在Kotlin中更优雅地使用LiveData ![20201001213946138.png][] 由于`LiveDataObserver`接口定义在Java中,且接受一个`Nullable`参数,导致其不能很好的兼容K 秒速五厘米/ 2022年12月11日 13:43/ 0 赞/ 252 阅读
相关 如何在Java代码中更优雅地调用Kotlin ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ub 秒速五厘米/ 2022年10月28日 12:26/ 0 赞/ 430 阅读
相关 android之livedata使用 一、前言 LiveData 是一个可观察的数据存储类, 并且具有Activity or Framgent生命周期的感知能力,livedata会将存储的数据,发送给正处于活 秒速五厘米/ 2022年09月04日 11:53/ 0 赞/ 213 阅读
相关 Android LiveData 使用详解 说在前面 本次推出 Android Architecture Components 系列文章,目前写好了四篇,主要是关于 lifecycle,livedata 的使用和源 刺骨的言语ヽ痛彻心扉/ 2022年03月22日 07:14/ 0 赞/ 298 阅读
相关 如何在vue项目中优雅地使用SVG 基础介绍 本文旨在介绍如何在项目中配置和方便地使用svg图标。 本文以vue项目为例,当然在react中的使用原理基本相似。 svg图标可以直接通过im 冷不防/ 2022年01月29日 07:17/ 0 赞/ 323 阅读
相关 如何更优雅地切换Git分支 在日常开发中,我们经常需要在不同的 Git 分支之间来回切换,特别是业务需求比较多的开发人员。在分支较多的情况下,分支名的 tab 自动补全会比较糟糕,切换时我们不免需要... 灰太狼/ 2021年03月23日 13:30/ 0 赞/ 594 阅读
还没有评论,来说两句吧...