Articles of mvvm

Android:listView Adapter应该是ViewModel类的一部分吗?

我正在研究Android应用程序并试图遵循MVVM设计模式。 我有一个listView,问题是适配器是否应该是ViewModel类的一部分? 使用MVVM设计模式构建此结构的最佳方法是什么?

MVVM notify有关加载状态的视图

我现在正在使用Google的LiveData,他们建议使用MVVM模式设计。 对于我的一些请求,我使用RxJava2,并在SubscribeWith(…)中侦听响应。 例如,当我按下按钮将一些数据发送到远程数据源时,我正在显示一些加载animation,并希望将其隐藏在onComplete()事件上( 在subscribeWith(…)内 )。 问题是我无法访问ModelView中的View。 怎么可能让View知道加载animation应该被隐藏? 我目前的想法是在ViewModel内部的界面中创建并在View中实现它。 但它破坏了View和ViewModel分离的概念。

app:visibleGone无法解析android Databinding

当我构建项目时。 我在app上遇到错误:visibleGone 我也在build.gradle中启用了dataBinding并使用了android架构组件和mvvm。 project targetSdkVersion是26 , support lib version is 26.0.1 。 以下是错误消息 error: package com.****.****.databinding does not exist error: cannot find symbol class ActivityMainBinding Cannot find the setter for attribute ‘app:visibleGone’ with parameter type boolean on android.widget.Button. 这是我的activity_main.xml ActivityMain.java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = DataBindingUtil.setContentView(this, R.layout.activity_main); binding.btnLoadRoom.setOnClickListener(this); binding.btnLoadSql.setOnClickListener(this); viewModels= ViewModelProviders.of(this).get(MainActivityViewModels.class); […]

如何在Android中使用MVVM时在Room中制作复合键

我刚刚在房间里find@PrimaryKey注释。 所以,如果我想制作复合键,那我怎样才能在MVVM中制作它?

MVVM Dagger2与组件中存在匹配键的绑定

我正在使用以下谷歌示例项目: https : //github.com/googlesamples/android-architecture-components作为我的新项目的参考,并且在尝试向项目添加第二个活动时遇到困难。 这是编译时遇到的错误 Error:(22, 8) error: [dagger.android.AndroidInjector.inject(T)] com.apps.myapp.ui.common.MainActivity cannot be provided without an @Inject constructor or from an @Provides-annotated method. This type supports members injection but cannot be implicitly provided. com.apps.myapp.ui.common.MainActivity is injected at com.apps.myapp.ui.common.NavigationController.(mainActivity) com.apps.myapp.ui.common.NavigationController is injected at com.apps.myapp.ui.addContacts.AddContactsFragment.navigationController com.apps.myapp.ui.addContacts.AddContactsFragment is injected at dagger.android.AndroidInjector.inject(arg0) A binding with matching key exists in component: […]

android livedata进行顺序调用

我正在使用Retrofit,实时数据。 我的项目有一种情况,我必须进行网络调用。 如果任何一个失败,它应该返回错误。 目前我有两个实时数据观察员来完成工作,这不是一个好方法,所以我想知道更好的方法或示例代码来处理这样的要求。 注意:我没有使用Rxjava。 查看代码基本逻辑 String id = “items/1233”; //ID which has to to be deleted if (isCustomizedItem) { viewModel.deleteEvent(id); } else { viewModel.createCustomItems(); viewModel.deleteEvent(id); } Livedata观察员 viewModel.getItemDeleted().observe(this, serverResponse -> { if (serverResponse.status == Status.SUCCESS) { Timber.i(“Successfully deleted”); } }); viewModel.itemCreated().observe(this, serverResponse -> { if (serverResponse.status == Status.SUCCESS) { Timber.i(“new items added”); //Again call […]

如何使用DataBinding Framework MVVM在EditText上设置错误

我正在使用Android数据绑定框架我假设一个EditText用于登录表单,用户名如下所示 我也定义了LoginViewModel但我需要帮助如何在用户输入错误的电子邮件地址时在edittext中设置Error在某些事件中让我们说 public void afterTextChanged(@NonNull final Editable editable) 因为据我所知,在传统Android方法中,我们可以通过et.setError()方法以编程方式执行此操作,但我不想通过Activity或Fragment创建edittext对象。

Android ViewModel调用Activity方法

我在我的项目中使用android AAC库和Android数据绑定库。 我有AuthActivity和AuthViewModel扩展了android的ViewModel类。 在某些情况下,我需要让Activity为ViewModel调用一些方法。 例如,当用户点击Google Auth或Facebook Auth按钮时,它在Activity类中初始化(因为初始化GoogleApiClient我需要Activity上下文,我无法传递给ViewModel,视图模型无法存储Activity字段)。 在Activity类中实现了Google Api和Facebook API的所有逻辑: //google api initialization googleApiClient = new GoogleApiClient.Builder(this) .enableAutoManage(this, this) .addApi(Auth.GOOGLE_SIGN_IN_API, gso) .build(); //facebook login button loginButton.setReadPermissions(Arrays.asList(“email”, “public_profile”)); loginButton.registerCallback(callbackManager, 此外,我需要调用登录意图,这也需要Activity上下文: Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient); startActivityForResult(signInIntent, GOOGLE_AUTH); 我不能请求facebook登录和google登录,或者从视图模型类请求startActivity intent,所以我创建了类接口AuthActivityListener: public interface AuthActivityListener { void requestSignedIn(); void requestGoogleAuth(); void requestFacebookAuth(); void requestShowDialogFragment(int type); } 在活动类中实现监听器: AuthActivityRequester authRequestListener = […]

在’/activity_login.xml’DataBinding文件中find重复的类,未生成BR

我大多陷入了android数据绑定BR问题。 始终存在单个activity.xml,但生成的绑定类显示错误。 请让我知道如何解决此问题。

在MVVM体系结构中使用Tab布局和数据绑定库

我正在开发一个具有标签布局作为图像的应用程序。 我想将MVVM架构与数据绑定库一起使用,但我是这个框架的新手。 我可以通过使用ViewPager作为此示例的常规设置选项卡布局而不使用MVVM来执行此操作。 没有MVVM和数据绑定的常规选项卡布局: activity_main.xml中: MainActivity.java: public class MainActivity extends AppCompatActivity { private Toolbar toolbar; private TabLayout tabLayout; private ViewPager viewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); viewPager = (ViewPager) findViewById(R.id.viewpager); setupViewPager(viewPager); tabLayout = (TabLayout) findViewById(R.id.tabs); tabLayout.setupWithViewPager(viewPager); } private void setupViewPager(ViewPager viewPager) { ViewPagerAdapter adapter = new […]