问题标签 [android-mvvm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2973 浏览

android - ViewModel 在旋转后重新创建;如果直接用 dagger2 注入

可能与此重复

我正在使用 dagger2 探索 android injections api。因此,在我的示例应用程序中,我ViewModel直接在活动中注入;看看下面的代码片段。





如您所见,我已MainViewModel直接注入到活动中。现在,如果我旋转活动,注入的实例会有所不同。

但是,如果我注入MainViewModelProviderFactoryMainActivity执行

ViewModelProviders.of(activity, factory).get(MainViewModel.class)它返回与以前相同的实例。

我不明白我的实施有什么问题。

任何指针都将是可观的。

0 投票
0 回答
1127 浏览

android - 具有列表和嵌套对象的 ViewModel 对象

我正在开发一个新的 Android 项目,并且正在使用新的架构组件,但在某些情况下可以使用一些帮助,因为我不了解最佳解决方案。

我有一个如下的对象

对于 ViewModel,mutableLiveData 应该是 Team 对象还是每个单独的属性,对于用户来说也是一样的,我将更新和用户并想知道我应该如何观察这些变化

0 投票
1 回答
564 浏览

android - 使用 MVVM 架构的活动共享元素转换

我正在学习 MVVM 模式,现在有一个问题。我有一个带有 imageview 的活动 A,还有一个带有相同 imageview 但在另一个地方更大的活动 B。当在活动 A 中单击 imageview 时,我想启动活动 B,并且 imageview 应该是共享元素,以通过漂亮的动画实现我想要的。

使用数据绑定我处理在我的视图模型中单击图像视图:

在我的视图模型中,我应该写这样的东西:

但是,问题是我的视图模型对活动一无所知。而且我不知道如何做我想做的事。

一种可能的解决方案是使用 startActivityB(View view) 之类的方法创建接口,并在活动中实现它并将其设置为字段,例如 viewModelListener。然后我可以写类似的东西:

但在这种情况下,我的视图模型将引用视图,它打破了 MVVM 的主要思想,对吧?

那么,使用 MVVM 架构通过共享元素开始新活动的正确方法是什么?

0 投票
0 回答
107 浏览

android - 接口在 MVVM 中是否仍然相关?

在谈论 MVVM ( Model-View-ViewModel ) 时,接口仍然相关吗?

在 MVP 中,我们曾经有一个“合同”接口,可以保证双方的行为方式。

但是到目前为止,我发现的每个 MVVM 示例都不是使用接口,而是使用具体的类(即使在Google Basic Sample中也是如此)。在这篇文章中,Florina 说[...]这也意味着 MVP 模式所需的所有接口现在都被删除了。

即使我们现在订阅了事件流,我们至少不应该确定我们订阅的是什么吗?

0 投票
6 回答
5293 浏览

android - 使用 DataBinding 使文本的某些部分变为粗体

我想将我的文本的某些部分设置为粗体,其值是使用 DataBinding 和 ViewModel 设置的。

例如

如果您被选中,您将为您的配对支付160 美元。

我正在使用字符串资源

<string name="product_price">If you are selected, you will have to pay $%d for your pair.</string>

目前通过设置使用带有绑定的 ViewModel 传递产品价格binding.setProductPrice(Object.getPrice())

我知道以下解决方案:但想尝试使用 DataBinding

  • 使用 Html 文本 - 但不想在代码中使用它。
  • 在水平样式中使用不同的 TextView。将该产品价格的样式设置为粗体。- 非常糟糕的做法
  • 使用 SpannableString - 但不想在代码中使用它。

但上述所有解决方案都是解决方法。

问题 ::

Want to try DataBinding feature which can be used to style certain part of string. Just like SpannableString

Manipulate String in the Layout file using DataBinding

0 投票
2 回答
1855 浏览

android - Google SignInButton 的 onClick 无法使用 DataBinding

当我尝试onClick在我的 Google 中设置方法时SignInButton

android:onClick="@{() -> viewModel.onGoogleLoginClick()}"

我总是收到这个错误:

发现数据绑定错误。

****/ 数据绑定错误 ****msg:Cannot find the proper callback class for android:onClick. 试过 android.view.View 但它有 0 个抽象方法,应该有 1 个抽象方法。

文件:/Users/user/Android/project/app/src/main/res/layout/activity_login.xml loc:53:31 - 53:66 ****\ 数据绑定错误 ****

这是我的代码:

活动登录.xml

LoginViewModel.class

登录活动类

还有BaseActivity.class,我在其中为每个绑定视图和数据Activity

有谁知道为什么会出现这个错误?因为SignInButton实现OnClickListener. 我已经尝试Invalidate Caches / Restart删除.gradle.idea文件夹,但仍然无法正常工作。

0 投票
0 回答
115 浏览

android - Android 架构组件视图模型

我正在尝试使用 android 架构组件更新我的学校项目。这几天我正在研究架构组件中的 ViewModel 组件。我读了很多文章。

我知道使用 viewmodel 用于向UI 提供数据并在配置更改后继续存在。但我的问题是这会导致内存泄漏吗?举个例子,如果在 Activity 的生命周期完成之前没有清除引用,就会发生内存泄漏。大多数时候Context会导致内存泄漏,因为Contexts包含很多对大量内存的引用。

如果viewmodel会导致内存泄漏如何避免呢?

提前致谢。

参考资料

https://developer.android.com/topic/libraries/architecture/viewmodel

https://google-developer-training.gitbooks.io/android-developer-advanced-course-practicals/unit-6-working-with-architecture-components/lesson-14-room,-livedata,-viewmodel/14- 1-a-room-livedata-viewmodel/14-1-a-room-livedata-viewmodel.html#task7intro

0 投票
2 回答
3814 浏览

android-room - Android Architecture Components(MVVM) - 使用存储库模式处理远程和本地数据的理想方式

我浏览了许多可用于新架构组件的示例代码,但在设置我的项目时仍然面临一些问题。

我需要从远程服务中获取数据并将其保存到房间数据库中。我希望我的视图只观察一个实时数据列表。我的 AppRepository 处理 RemoteRepository 和 LocalRepository。Remote Repository 有一个 fetchMovies() 方法,它从 web 服务接收电影列表。我想将此列表保存在房间数据库中,目前我的 RemoteRepository 类执行此操作。

根据我的理解,理想情况下,远程和本地存储库应该是独立的,这项工作应该由 AppRepository 类完成。一种方法是使用回调,但我想使用实时数据来做到这一点。fetchMovieFromRemote(int page) 方法是否应该为此返回实时数据,但在这种情况下,如何在我的视图模型中处理它,该视图模型目前具有房间返回的电影列表的实时数据。

我是 MVVM 的新手,请指导我了解此架构的理想方法。

0 投票
1 回答
915 浏览

android - Android:使用 MVVM 模式架构的异常观察

我正在尝试运行一个采用 MVVM 模式架构的应用程序,但我遇到了一个我无法解决的异常。我有我的 MainActivity.java,它对 MainViewModel.java 中的 firstTime() 方法有一个观察。

MainActivity.java

MainViewModel.java

}

每次我跑步时,我都会得到以下我无法解决的异常。

我该如何解决这个问题?

0 投票
1 回答
3267 浏览

android - 如何在 Android 中实现 Livedata 和 Databinding?

我搜索了很多关于可观察模型和参数的信息,但我很困惑!

1-一些模型从设置器扩展BaseObservable并设置notifyChange();在设置器中,并将它们绑定到例如这样的edittext:app:addTextChangedListener="@{viewModel.getEmailTextWatcher}"并且通过更改模型的参数来notifyChange()更新文本。emailuser

2-其中一些livedata用于在方法中观察和更改 UI onChanged()。如何使用liveData和更改 UI databinding?不是通过onChanged()。什么时候onChanged()使用,而我们可以databinding用于 UI 更改?

编辑: 这是我的编码:

这是界面:

这是用户模型:

这是视图模型:

这是布局:

我只想inEmail通过数据绑定更改edittext和上部edittext更改