Как наблюдать LiveData и преобразовывать между моделями данных в приложении Android - PullRequest
0 голосов
/ 30 мая 2018

Мое текущее приложение для 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.

...