Я пытаюсь использовать данные Mediator Live для объединения двух Livedata. Методы, написанные на ViewModel и Fragment, показаны ниже. Я получаю сообщение об ошибке исключения приведения класса (подробности приведены ниже). Не могли бы вы подсказать, что пошло не так. Возможно, я думал, что MediatorLive может принимать значения из двух Live Data, но я не мог этого понять, и, следовательно, просьба к кодерам. Пожалуйста, сообщите и заранее спасибо за помощь.
//ЖивыеДанные -1
public LiveData<GrpMsgTimestamp> getlastRec(Long lastbookID, String groupID)
{
return bookRepository.getlatest(lastbookID,groupID);
}
//ЖивыеДанные -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