gpt4 book ai didi

android - MVVM - 从互联网加载数据的位置

转载 作者:太空狗 更新时间:2023-10-29 13:55:39 25 4
gpt4 key购买 nike

我正在尝试将此 MVVM 用于我的 Android 应用程序。我已经完成了很多应用程序,但我正在尝试更上一层楼并尝试使用 MVVM。但我需要了解我应该从互联网加载数据的位置。我正在使用 RxJava,但我不确定是否应该只在 ViewModel 中加载数据。如果是这样,那么我在哪里设置数据。我正在使用来自谷歌的数据绑定(bind),但我不想通过 viewModel 在 xml 中设置数据。我想从 java 文件中设置它。

很抱歉,如果我写错了什么,请发布答案,我会尝试填写任何必需的信息。

最佳答案

“触发数据加载”是表示逻辑的一部分。因此,这应该属于 ViewModel。

有关“如何加载数据”的详细信息,例如网络逻辑,不属于 ViewModel 层。我强烈推荐使用 Retrofit因为您已经在使用 RxJava。

由于 rx.Observabledatabinding.ObservableField 非常相似,您可以将它们从一种形式转换为另一种形式。我写了一个library这让你可以做到这一点。参见 FieldUtils.java用于实现。

无论哪种方式,假设您有一个 DataService 接口(interface)/类:

public interface DataService {
Observable<String> loadSomeData();
}

您可以按如下方式构建您的 ViewModel:

public class ExampleViewModel {
ObservableField<String> title;

public ExampleViewModel(DataService dataService) {
this.title = FieldUtils.toField(dataService.loadSomeData());
}
}

然后,您可以使用数据绑定(bind)语法在您的 View 中显示它

<TextView
android:text="@{viewModel.title}" />

我最近写了一篇关于将 RxJava 与 MVVM 结合使用的博客。我展示了一个应用程序,它使用 Retrofit 从 Github 加载事件列表并将它们显示在 RecyclerView 中。这已在 MVVM 中实现。

文章链接: MVVM using RxJava + Data Binding example: Loading data using Retrofit

一个更复杂的示例,它还显示加载指示器和错误:DataLoadingViewModel.java .

关于android - MVVM - 从互联网加载数据的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39891603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com