Я пытаюсь использовать данные Mediator Live для объединения двух Livedata.Методы, написанные во ViewModel и Fragment, проиллюстрированы ниже.Я получаю сообщение об ошибке исключения класса (приведена ниже).Можете ли вы предложить, если все пошло не так.Возможно, я подумал, что MediatorLive мог бы получать значения из двух Live Data, но я не мог понять это и, следовательно, запрос к кодировщикам. Пожалуйста, сообщите заранее и спасибо за помощь.
// LiveData -1
public LiveData<GrpMsgTimestamp> getlastRec(Long lastbookID, String groupID)
{
return bookRepository.getlatest(lastbookID,groupID);
}
// LiveData -2
public LiveData<Integer> getNoOfUnreadBook(Long lastbookID, String groupID)//Final to be kept
{
return bookRepository.getNoOfUnreadBook(lasbookID,groupID);
}
// Метод посредника
MediatorLiveData liveDataMerger = new MediatorLiveData<GrpIDandLatestMsg>();
public MediatorLiveData getLiveDataMerger(Long lastmsgID,String groupID) {
liveDataMerger.addSource(getlastRec(lastbookID,groupID),value->liveDataMerger.setValue(getlastRec(lastbookID,groupID)));
liveDataMerger.addSource(getNoOfUnreadBook(lastgroupID,groupID), value -> liveDataMerger.setValue(getNoOfUnreadBook(lastbookID,groupID)));
return liveDataMerger;
}
// Наблюдатель во фрагменте
mViewModel.getLiveDataMerger(chatList.getLastbookID(),chatList.getGroupID()).observe(getActivity(), new Observer<GrpIDandLatestBook>() {
@Override
public void onChanged(@Nullable final GrpIDandLatestBook newName) {
// Update the UI, in this case, a TextView.
if(newName != null) {
chatList.setLast_msg(newName.getBook());
chatList.setLasttimestamp(String.valueOf(newName.getTimestamp()));
chatList.setNoofunreadBook(String.valueOf(newName.getMsgcount()));
}
}
Ошибка: -
java.lang.ClassCastException: android.arch.lifecycle.ComputableLiveData$1 cannot be cast to com.support.android.designlibdemo.database.inernal.ModelClass.GrpIDandLatestMsg
at com.support.android.designlibdemo.View.UI.FragmentChatList$1$1.onChanged(FragmentChatList.java:61)
at android.arch.lifecycle.LiveData.considerNotify(LiveData.java:109)
at android.arch.lifecycle.LiveData.dispatchingValue(LiveData.java:126)
at android.arch.lifecycle.LiveData.setValue(LiveData.java:282)
at android.arch.lifecycle.MutableLiveData.setValue(MutableLiveData.java:33)
at com.support.android.designlibdemo.ViewModel.ChatListViewModel.lambda$getLiveDataMerger$1$ChatListViewModel(ChatListViewModel.java:65)
Thanks