Android ViewModels之间的交流



我有一个客户详细信息页面,该页面是"客户"表中的客户详细信息,并允许对一些详细信息进行编辑,一个是客户的位置。客户的位置是一个旋转器,从"位置"表中加载了下拉物品。

所以我当前的实现是我的客户攻击性具有customerviewModel和locationviewModel

public class CustomerActivity extends AppCompatActivity {
    ...
   onCreate(@Nullable Bundle savedInstanceState) {
      ...
      customerViewModel.getCustomer(customerId).observe(this, new Observer<Customer>() {
         @Override
        public void onChanged(@Nullable Customer customer) {
            // bind to view via databinding
        }
      });
      locationViewModel.getLocations().observe(this, new Observer<Location>() {
         @Override
        public void onChanged(@Nullable List<Location> locations) {
           locationSpinnerAdapter.setLocations(locations);
        }
      });
   }
}

我的问题是如何设置来自"客户"表中值的位置旋转器,因为两个执行订单的of ot ot othanged oferchanged oferchanged ofercled ofer订单可能会有所不同(有时客户加载速度更快,而其他位置加载速度更快)。

>

我仅在加载客户后才考虑加载位置,但是无论如何,我是否可以同时加载客户的位置旋转器,并使用"客户"表中的值?

是的,您可以使用标志。

public class CustomerActivity extends AppCompatActivity {
   private Customer customer = null;
   private List<Location> locations = null;
    ...
   onCreate(@Nullable Bundle savedInstanceState) {
      ...
      customerViewModel.getCustomer(customerId).observe(this, new Observer<Customer>() {
         @Override
        public void onChanged(@Nullable Customer customer) {
            // bind to view via databinding
              this.customer = customer;
              if(locations != null){
                 both are loaded 
              }
        }
      });
      locationViewModel.getLocations().observe(this, new Observer<Location>() {
         @Override
        public void onChanged(@Nullable List<Location> locations) {
           locationSpinnerAdapter.setLocations(locations);
              this.locations = locations;
              if(customer != null){
                 //customer and locations loaded
              }
        }
      });
   }
}

听起来您想要类似于rxjava的combineLatest运算符的东西。

您可以使用MediatorLiveData

实现自己的版本

相关内容

  • 没有找到相关文章

最新更新