草庐IT

Android - 带有 LiveData 组件的 MVVM 和 Repository 中的 Retrofit 调用

我想将以下组件用于身份验证View(登录):MVVM实时数据改造存储库我不知道如何接收Repository类中对当前ViewModel的异步Retrofit调用。View->ViewModel->RepositorywithLiveData。有人会有想法或例子来实现这个吗? 最佳答案 你可以像下面这样:YourActivity.ktclassYourActivity:AppCompatActivity(){privatevalmyViewModelbylazy{return@lazyViewModelProviders.of(thi

android - 从 View 模型类中获取 Activity 的上下文

我的代码基于我发现的一个使用Android架构组件和数据绑定(bind)的示例。这对我来说是一种新方式,它的编码方式使得很难使用被点击的帖子的信息正确打开新Activity。这是帖子的适配器classPostListAdapter:RecyclerView.Adapter(){privatelateinitvarposts:ListoverridefunonCreateViewHolder(parent:ViewGroup,viewType:Int):PostListAdapter.ViewHolder{valbinding:ItemPostBinding=DataBindingUti

java - 在 Viewmodel 中访问 BroadCastReceiver

我正在努力选择将数据从broadcastReceiver传递到ViewModel的正确方法,然后从那里将数据传递到我的存储库并更新LiveData。我使用FCM推送通知并拥有使用ActivityLifecycle的本地broadCastReceiver。我发现从BroadcastReceiver访问ViewModel是不好的做法,但不确定为什么?如果我管理broadcastReceiver的生命周期,它应该不会引起任何问题...那么将接收到的数据从FCM传递到我的存储库的MediatorLiveData的最佳方法是什么?我使用MediatorLiveData,因为我添加了不同的实时数据

android - 使用 LiveData 设置 TextView 的可见性

我想使用LiveData切换TextView的可见性。还有一些关于使用数据绑定(bind)设置可见性的其他帖子,但这些帖子使用Observables,而我想利用(更新的)LiveData。特别是使用LiveData。使用thisdocumentation和一些SO帖子,我已经了解到您应该正确对齐您的observable(LiveData)的getter,以便返回类型与您要设置的View属性的setter预期的类型相匹配。具体来说:View的setVisibility()需要一个int,而我有一个LiveData成员(因此我的ViewModel中的getter也将返回此类型)可以使用三元

android - 无法创建 ViewModel 类的实例(无法启动 Activity ComponentInfo)

我在我的项目中使用MVVM、Retrofit、LiveData,但在我看到这些链接之前出现此错误CannotcreateaninstanceofcustomViewModelCannotcreateaninstanceofclassViewModel错误java.lang.RuntimeException:UnabletostartactivityComponentInfo{ir.orangehat.movieinfo/ir.orangehat.movieinfo.application.home.HomeActivity}:java.lang.RuntimeException:Can

没有数据绑定(bind)的android MVVM

问题:我可以在不使用数据绑定(bind)的情况下使用MVVM实现android应用吗?我要解决的问题非常简单:从后端API读取项目列表并在Recylerview中显示它们。我是如何实现的:在View中-我有Activity和RecyclerViewAdapter模型:ApiResponse和数据模型网络-改造API服务,RxJava2对于ViewModel部分-我有一个ViewModel类(不派生自任何东西)基本上调用RetrofitService并使用RxJava调用获取数据。ViewModel有如下调用:voidgetItems();voidaddItemData();voidre

android - LiveData 如何知道房间数据库中的数据何时更改?

我正在学习android中的Mvvm模式,但我不明白一件事。实时数据如何知道房间数据库中的数据何时发生变化?我有这段代码:fragment:newUserViewModel.getListItemById(itemId).observe(this,newObserver(){@OverridepublicvoidonChanged(@NullableUseruser){tv.setText(user.getName());}});查看模型:publicLiveDatagetListItemById(StringitemId){returnrepository.getListItem(i

android - MVVM Dagger2 组件中存在具有匹配键的绑定(bind)

我正在使用以下谷歌示例项目:https://github.com/googlesamples/android-architecture-components作为我的新项目的引用,并且在尝试向该项目添加第二个Activity时遇到困难。这是我在编译时遇到的错误Error:(22,8)error:[dagger.android.AndroidInjector.inject(T)]com.apps.myapp.ui.common.MainActivitycannotbeprovidedwithoutan@Injectconstructororfroman@Provides-annotated

android - 如何在 mvvm android 中显示对话框

显示对话框,在MVVM中启动Activity是View的责任。在View中,您有一个VM实例,但在VM中您没有View实例。所以解决方案是使用实时数据并在View中观察,对吗?但是我不想使用实时数据呢?当我无权查看时如何显示对话框? 最佳答案 使用某种版本的观察者模式是唯一的方法!甚至定义一个接口(interface)并让View实现该接口(interface)基本上也是在使用观察者模式。javaObservable、RxObservable和LiveData所做的是,它们使这个过程变得super简单。

Android MVVM - 如何在 ViewModel 中引用 Activity

MVVM架构,这是我的View(Activity):privateMyAppapp;privateMainActivityVMviewModel;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);app=(MyApp)this.getApplication();ActivityMainBindingbinding=DataBindingUtil.setContentView(this,R.layout.activity_main);MainActivit