草庐IT

Jetpack-MVVM

全部标签

Android MVVM + 数据绑定(bind) RecyclerView

我正在尝试实现MVVM架构+DataBinding+RxJava。我有一个RecyclerView的Activity。据我了解,ViewModel不应引用View。MVVM中将数据列表从ViewModel传递到Activity中的RecyclerView的正确方法是什么?像MVP一样通过接口(interface)传递数据? 最佳答案 您应该将数据绑定(bind)添加到您的ViewHolder。您可以阅读一些文章,例如this让它更清楚。顺便说一句,我在尝试应用动画或例如尝试实现后延迟时使用MVVM+数据绑定(bind)库时遇到问题。

java - Android:在 View 中使用观察者模式(可能与 MVC、MVVM 相关)

我花了几个小时阅读有关在Android中实现各种MVC类型模式的各种问题和答案。我在各种博客中看到了一些代码示例。但是,我仍然会欣赏关于我正在努力实现的目标的一些想法和意见。具体来说,我想找出最佳代码机制来通知单个View或一组View特定数据项已更改。我的应用程序非常简单,它通过蓝牙从硬件设备获取测量数据,并显示和记录该数据。目前,我有一项服务负责蓝牙通信和后台日志记录。我有一个“全局”数据存储类,它是应用程序的扩展。当从外部设备轮询测量数据时,测量数据(实际上是大约30个字节的数据)在数据存储对象(用MVC术语来说,我猜是“模型”)中更新).在任何时候,UIView只会显示该数据的

android - 如何在 Android 上使用 DataBinding 测试 MVVM

我一直在网上搜索,但无法找到如何使用MVVM改进测试。我想到有一个与View接口(interface)的viewModel,但我不知道如何使用MVVM编写好的测试用例。我已经在Android中拥有以下ViewModel:publicclassViewModelextendsBaseObservable{privatelongcountDownTime;privateMyCountDownTimermCountDownTimer;privatefinalStringTAG=getClass().getSimpleName();@BindablepubliclonggetCountDown

android - MVVM startActivityForResult

单击View时,应调用startActivityForResult。但是我不能在viewModel中调用startActivityForResult。我怎样才能实现它? 最佳答案 我在这里阅读了谷歌示例(https://github.com/googlesamples/android-architecture/tree/todo-mvvm-databinding)并找到了解决方案:创建一个接口(interface)来实现:publicinterfaceTaskItemNavigator{voidopenTaskDetails(Str

android - 使用新的android架构(MVVM)的 Activity fragment 通信

目标是从Fragment获取信息,以便托管Activity可以显示它。让我们举一个简单的例子,假设当一个Fragment发生变化时,我们想要从我们的Activity的ActionBar中显示Fragment的标题。这是我以前的做法:Activity@OverrideprotectedvoidonCreate(@NullableBundlesavedInstanceState){super.onCreate(savedInstanceState);getSupportFragmentManager().addOnBackStackChangedListener(this);}@Overr

android - view 在 MVVM 中向 ViewModel 请求数据是否可以?

我一直在阅读有关MVVM模式的内容。View应该观察ViewModel中的变化并据此采取行动,但如果View中的以下代码在MVVM架构中是否正常,我感到困惑。funonClick(view:View){showUser(viewModel.getUserDisplayName())}这里View不是在观察变化,而是从ViewModel请求最新数据。这在MVVM中是否正确? 最佳答案 这是一个可能没有唯一答案的问题,因为可能会根据具体用例提出不同的观点。然而:我认为Codesalot爵士(出色的把柄)在技术上是正确的。让我详细说明。在

android - Android Jetpack 是否需要使用 Kotlin 语言?

我似乎无法在Google中找到明确的答案,而且我看到的关于Jetpack的所有文档和示例似乎都引用并使用了Kotlin。但是你必须使用Kotlin才能使用Jetpack吗?或者Jetpack可以与传统Java程序一起使用吗?我在看Kotlin,但它使您的应用大小增加了将近1MB。鉴于我的整个应用程序目前只有大约200KB,我认为Kotlin不值得将我的应用程序的大小增加500%! 最佳答案 Jetpack是库的集合以及关于Google如何推荐构建Android应用程序的指南。这些库都有JavaAPI,因此您无需迁移到Kotlin即可

android - 使用 kotlin 学习 Android MVVM 架构组件

在搜索了android架构组件之后,我意识到MVVM在某些方面比其他架构更好,所以我开始学习MVVM并且我正在使用Kotlin语言但问题是,当我搜索教程开始学习时,我发现了很多组件,例如RxJava、RxAndroid、Dagger2、Room、Lifecycle等,但他们没有说为什么使用它们以及为什么他们选择某些特定组件。我将向您展示一些示例:1-AndroidMVVMwithDagger2,Retrofit,RxJava2-AndroidMVVMwithDagger2,Retrofit,RxAndroid3-AndroidappwithMVVMdagger2RxJavaLiveda

android - 带有查询参数的 Jetpack Navigation 深度链接

在新的JetpackNavigation库中似乎无法使用查询参数处理深层链接。如果将以下内容放入navigation.xml:那么深层链接不会打开fragment。经过一些挖掘后,我发现当NavDeepLink将url从xml转换为模式正则表达式时,罪魁祸首可能在其中。看起来问题是一个没有被排除的问号。我写了一个失败的测试:@Testfuntest(){valnavDeepLink=NavDeepLink("scheme://host/path?query1={query_value}")valdeepLink=Uri.parse("scheme://host/path?query1=

Android Jetpack Navigation 如何处理 Toolbar 和 BottomNavBar 内容

我对导航组件如何适应应用程序行为感到有点困惑。在教程中,一切看起来都不错而且Shiny,您不会做太复杂的事情,但在实际应用程序中实现时,情况似乎有所不同。导航前在实现导航之前,我必须手动运行fragment事务。为了做到这一点,我的fragment将实现一个接口(interface)onFragmentAction,它将一个bundle传递给主要的Activity并在基于操作的Activity中,将当前fragment替换为另一个fragment。第二个需要处理的部分是顶部工具栏和BottomAppBar。例如,BottomAppBar需要让FAB在某些fragment上以不同方式对齐