一个LiveData中有多个对象
我有这个实体:
@Entity public class CartItem { @PrimaryKey(autoGenerate = true) private long id; private long itemId; private long serviceId; private String observation; @Ignore private Service service; @Ignore private Item item; }
正如你所看到的,它由其他对象组成,在这种情况下, Service
和Item
。
在片段中,我以这种方式实现LiveData:
CartItemViewModel model = CartItemViewModel.create(getActivity()); model.getLiveData().observe(this, new Observer<List>() { @Override public void onChanged(@Nullable List cartItems) { }
它正在工作, onChange
方法正在按预期调用。
这是我在kotlin中的ViewModel:
class CartItemViewModel : ViewModel() { val liveData: LiveData<List> = MainApplication.getInstance().cartItemDao.liveData companion object { @JvmStatic fun create(fragment: FragmentActivity): CartItemViewModel = ViewModelProviders.of(fragment).get(CartItemViewModel::class.java) } }
这里的重点是CartItem
正在被加载,但是我怎样才能以正确的方式填充Item
和Service
对象呢?
如果需要其他信息,请告诉我。 谢谢。
编辑:创建存储库,使onChanged
不会被调用了。
class CartItemRepository { companion object { fun getLiveData(): LiveData<List> { val liveData = MutableLiveData<List>() doAsync { val cartItems = MainApplication.getInstance().cartItemDao.all for (cartItem in cartItems) { val item = MainApplication.getInstance().itemDao.get(cartItem.itemId) cartItem.item = item val service = MainApplication.getInstance().serviceDao.get(cartItem.serviceId) cartItem.service = service } liveData.value = cartItems } return liveData } } }