Мне нужно подготовить список типа AttendanceData
на основе classId
изменений с использованием объекта LiveData.Этот блок кода работает нормально, как и ожидалось.
// Get the section attendance data when classId is changed
public LiveData<List<AttendanceData>> getSectionLiveDataList(int classId) {
// use switchMap when you need data from another set of liveData object
final LiveData<List<SectionModel>> dataModelsLiveD =
schoolSectionRepository.getAllSectionNames(classId);
return Transformations.switchMap(dataModelsLiveD,
newData -> getAttendanceLiveData(newData));
}
Но когда приходит этот метод, я не могу получить значение в LiveData<Integer>totalCount
, которое вызывается из сети.
final MutableLiveData<List<AttendanceData>> liveItems=new MutableLiveData<>();
private LiveData<List<AttendanceData>> getAttendanceLiveData(List<SectionModel> sectionModelList) {
AttendanceData attendanceData=new AttendanceData();
List<AttendanceData> attendanceDataList=new ArrayList<>();
for (SectionModel item : sectionModelList) {
final LiveData<Integer> totalCount=mRepository.getTotalNumberOfPresentStudent(date,item.getID().toString());
attendanceData.setSectionModel(item);
attendanceData.setTotalPresentCount(totalCount.getValue().toString());
attendanceDataList.add(attendanceData);
}
liveItems.postValue(attendanceDataList);
return liveItems;
}
Интересно, нужно ли мне использовать MediatorLiveData
и комбинировать dataModelsLiveD
и totalCount
, чтобы получить объединенный вывод <List<AttendanceData>>
, или есть альтернативный способ решения этой задачи.
Спасибо.