Как использовать преобразования LiveData в цикле? - PullRequest
0 голосов
/ 03 октября 2018

Мне нужно подготовить список типа 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>>, или есть альтернативный способ решения этой задачи.

Спасибо.

...