查看一些 Google 演示应用程序(如向日葵或 Google io 2018 应用程序)的代码,我注意到对于 viemodels 的支持属性,它们使用具有自定义 getter 的相同类型的单独实例;像这样:
private val _userData: MutableLiveData<User>
val userData: LiveData<User>
get() = _userData
Run Code Online (Sandbox Code Playgroud)
但他们为什么要这样做?直接使_userData可访问性不是更好吗?难道是因为虽然_userData是MutableLiveData他们不想观察者能够改变的价值呢?
我正在尝试 android 上的新材料设计组件,例如底部应用栏,但我发现每个 MDC 都存在于 android 设计支持库中,但也存在于另一个被调用com.google.android.material的库中,并且代码几乎相同(在设计库中,代码与另一个不同),那么这两个库之间有什么区别?
android android-studio android-design-library androiddesignsupport
我正在尝试学习 kotlin 语言(尤其是 Android),但我发现学习各种类型的 for 循环有些困难,那么普通 for 循环、for every 循环和 for every 索引之间有什么区别以及如何使用它?
例如在这篇文章中:https://medium.com/mindorks/building-a-customview-tictactoe-eb439f506505(谈论android自定义视图),有这部分:
squares.forEachIndexed {
i, rects ->
for ((j, rect) in rects.withIndex()) {
if (rect.contains(x.toInt(), y.toInt()))
return Pair(i, j)
}
}
Run Code Online (Sandbox Code Playgroud)
他使用每个索引来迭代正方形(即二维数组)中包含的所有变量,但我真的不明白它是如何工作的。感谢任何帮助我的人!