@RichardLeMesurier Он становится недействительным, потому что в хранилище постоянно происходят изменения. Следовательно, теперь я добавил ссылку на мою суть, чтобы она не ломалась

ользуюTransformations.switchMap в моей ViewModel, так что мойLiveData Наблюдаемая в моем фрагменте коллекция реагирует на измененияcode параметр.

Это прекрасно работает:

public class MyViewModel extends AndroidViewModel {

    private final LiveData<DayPrices> dayPrices;
    private final MutableLiveData<String> code = new MutableLiveData<>();
    // private final MutableLiveData<Integer> nbDays = new MutableLiveData<>();
    private final DBManager dbManager;

    public MyViewModel(Application application) {
        super(application);
        dbManager = new DBManager(application.getApplicationContext());
        dayPrices = Transformations.switchMap(
            code,
            value -> dbManager.getDayPriceData(value/*, nbDays*/)
        );
    }

    public LiveData<DayPrices> getDayPrices() {
        return dayPrices;
    }

    public void setCode(String code) {
        this.code.setValue(code);
    }

    /*public void setNbDays(int nbDays) {
        this.nbDays.setValue(nbDays);
    }*/

}

public class MyFragment extends Fragment {

    private MyViewModel myViewModel;

    myViewModel = ViewModelProviders.of(this).get(MyViewModel.class);
    myViewModel.setCode("SO");
    //myViewModel.setNbDays(30);
    myViewModel.getDayPrices().observe(MyFragment.this, dataList -> {
        // update UI with data from dataList
    });
}

проблема

Мне сейчас нужен другой параметр (nbDays прокомментировал код выше), так что мойLiveData объект реагирует на изменение обоих параметров (code а такжеnbDays).

Как я могу связать преобразования?

Некоторое чтение указало мне наMediatorLiveData, но это не решает мою проблему (все еще нужно вызвать одну функцию БД с 2 параметрами, мне не нужно объединять 2 liveDatas).

Так что я попробовал это вместоswitchMap ноcode а такжеnbDays всегда нулевые.

dayPrices.addSource(
    dbManager.getDayPriceData(code.getValue(), nbDays.getValue),
    apiResponse -> dayPrices.setValue(apiResponse)
);

Одним из решений было бы передать объект как один параметр, я уверен, что есть простое решение для этого.

Ответы на вопрос(3)

Ваш ответ на вопрос