我投入了大量时间来正确理解架构组件以及一切如何适应MVVM模式。到目前为止,这是我的看法(没有进行Dagger注入(inject),因为我还没有做到这一点):a)UserEntity是一个带有@Entity注解的类,用于处理Room的表创建@Entity(tableName="users")publicclassUsers{privatelongid;privateStringname;}b)User模型中的pojo类以在应用程序周围使用它,并根据需要具有补充字段。publicclassUser{privatelongid;privateStringname;privateListro
我有一个问题与MVVM的正确设计和架构有关,而不是与编码本身有关。在我的项目中,我遇到了ViewModel正在提供数据的情况,这些数据后来在RecyclerView.Adapter中用于创建正确的View。但是我想知道这是否也是正确的(从正确的“做事方式”POV)如果一些数据以id的形式提供以便从Room或外部服务器进一步获取?例如,在onBindViewHolder期间使用一些带有observe()的LiveData在成功加载时更新某些字段。 最佳答案 在View中获取数据是不行的。它违背了MVVM的初衷,尤其是AndroidJe
我正在开发一个带有6个tabs的ViewPager,其中它只有一个fragmentTimesListFragment根据传递给TimesListFragment的参数,它调用api例如;科学、技术、旅游等我已经为我的应用关注了Google的GithubBrowserSample我有TimesListFragment->TimesViewModel->TimesRepository有6个选项卡,当我点击api时,所有选项卡显示相同的结果,如果是最后一个argumentStoriesPagerAdapter.ktclassStoriesPagerAdapter(fragmentManage
我正在尝试在Android中使用新的架构组件,到目前为止它运行良好。但是,我遇到了架构问题。我有一个MainActivity,它承载了一堆fragment,A、B和C。到目前为止,每次我需要我的ViewModel(VM)时,我都会在MainActivity的上下文中获取它(如下所示:MyViewModelvm=ViewModelProviders.of(getActivity()).get(MyViewModel.类);)。现在考虑一下:fragmentC让用户选择一些值,并将其写入VM。fragmentA使用fragmentC让用户选择值,然后A直接从VM并将其显示在其UI中。fra
Google表示不可能从ViewModel观察LiveData:[...]HoweverViewModelobjectsmustneverobservechangestolifecycle-awareobservables,suchasLiveDataobjects.[...]我会在ViewModel中处理repo.login()结果并通知UI认为这两个SingleLiveEvents,这可能吗?classRepository{//....//funlogin(user:String,password:String):LiveData{/*...*/}}classLoginViewMo
我正在使用Support.V7.NotificationCompat显示通知。单击此通知时,我想导航到ViewModel。当我尝试使用MvxViewModelRequest显示ViewModel时,我传递给ViewModel的导航参数不起作用,但当我像这样使用ShowViewModel时它有效:ShowViewModel(new{id=existingModification.Id});这是ViewModelInit方法。当我使用ShowViewModel导航时,Guid具有正确的值。当我使用MvxViewModelRequest导航时,Guid始终具有值Guid.Empty(全为0)
有一种称为MVVM(模型-View-View模型)的设计模式,其中使用View模型作为View的抽象。ViewModel应该向View公开数据流并与Model的数据交互。但是有一个ViewModelAndroid框架中的类。问题:Android的ViewModel与MVVM模式中的View模型有关吗? 最佳答案 它们是不同的。Android所指的ViewModel就是。TheViewModelclassisdesignedtostoreandmanageUI-relateddatasothatthedatasurvivesconfi
在ViewModel中获取AndroidRoomDAO的最佳方式是什么?基于paginglibrary例如我写了这个ViewModel:classMyViewModel(myDao:MyDao):ViewModel(){valdata=myDao.get().create(/*initialloadposition*/0,PagedList.Config.Builder().setPageSize(50).setPrefetchDistance(50).build())}然后我尝试获取一个实例valviewModel=ViewModelProviders.of(this).get(My
在AndroidComponents中,我可以将应用程序类作为ViewModel的所有者,以便我在多个Activity中使用它吗?还是没有走动?ViewModelProviders.of(applicationclassnotactivity).get(MyViewModel.class); 最佳答案 Application不是LifecycleOwner,因此您不能将它用作ViewModel的作用域。 关于跨Activity的Android组件ViewModel,我们在StackOve
我正在将我的应用程序转换为使用ViewModel。为了实例化ViewModel,我使用自定义Factory和Dagger2进行依赖注入(inject)。它看起来像这样:@SingletonclassViewModelFactory@Injectconstructor(privatevalviewModels:Map,@JvmSuppressWildcardsProvider>):ViewModelProvider.Factory{overridefuncreate(modelClass:Class):T=viewModels[modelClass]!!.get()asT}@Target