Мое текущее приложение для Android пытается объединить LiveData
с RealmIO
.
У меня базовая функциональность работает так, как нужно, однако я считаю, что возможны улучшения рефакторинга.
Япытаясь изолировать мою модель данных Realm от остальной части приложения.
Мой код преобразования между Realm и моделью данных пользовательского интерфейса: -
private final MutableLiveData<LocationUI> LOCATION_DETAILS = new MutableLiveData<>();
...
public LiveData<LocationUI> getLocation(final String locationId) {
final Realm LocationRealm = Realm.getInstance(REALM_CONFIGURATION.Location.getRealmConfiguration());
final RealmQuery<Location> query = LocationRealm.where(Location.class);
query.equalTo(LOCATION_ID, locationId);
final Location location = query.findFirst();
if (location == null) {
return LOCATION_DETAILS;
}
final LiveRealmObject<Location> liveLocation = new LiveRealmObject<>(location);
return Transformations.switchMap(liveLocation, input -> {
final LocationUI locationUI = Location_MAPPER.mapLocation(input);
LOCATION_DETAILS.setValue(locationUI);
return LOCATION_DETAILS;
});
}
Этот конкретный код кажется неправильным
return Transformations.switchMap(liveLocation, input -> {
final LocationUI locationUI = Location_MAPPER.mapLocation(input);
LOCATION_DETAILS.setValue(locationUI);
return LOCATION_DETAILS;
});
Тот факт, что я одновременно устанавливаю значение моего MutableLiveData и возвращаю его из Transformations.switchMap (), кажется неправильным.
Как можно отделить преобразование от RealmIO до модели данных пользовательского интерфейса инаблюдение за интерфейсом LiveData.