如何在循环中使用LiveData Transformations?

时间:2018-10-03 06:36:07

标签: android android-architecture-components android-livedata mutablelivedata

我需要使用LiveData对象基于AttendanceData的更改来准备classId类型的列表。 此代码块按预期工作正常。

  // 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并结合dataModelsLiveDtotalCount来获得<List<AttendanceData>>的结合输出,还是有另一种方法可以完成此任务。

谢谢。

0 个答案:

没有答案