Передайте данные между двумя действиями, используя viewModel и livingata - PullRequest
2 голосов
/ 01 апреля 2019

Можно ли передавать данные между действиями с помощью класса viewModel?

Я пытался обновить объект модели из одного действия и другого действия и наблюдать изменения во втором действии, но это не помогло. Я не хочу использовать Bundle, если это возможно, используя viewModel.

1 Ответ

0 голосов
/ 01 апреля 2019

вы можете создать синглтон-класс для модели представления, так что вам не нужно передавать его в связке или чем-то еще, а также вы можете использовать его в нескольких действиях.

Activity1 с использованием getCurrentList () из класса SingleTon

public class Activity1 extends ViewModel {
    // Create a LiveData with a String
    private MutableLiveData<String> mCurrentList;

    public MutableLiveData<String> getCurrentList() {
        if (mCurrentList == null) {
            mCurrentList = SingleTonDataRepository.getInstance().getCurrentList();
        }
        return mCurrentList;
    }
}

Activity2 с использованием getCurrentList () из класса SingleTon

public class Activity2 extends ViewModel {
    // Create a LiveData with a String
    private MutableLiveData<String> mCurrentList;

    public MutableLiveData<String> getCurrentList() {
        if (mCurrentList == null) {
            mCurrentList = SingleTonDataRepository.getInstance().getCurrentList();
        }
        return mCurrentList;
    }
}

Класс SingleTon только для одного MutableLiveData

public class SingleTonDataRepository     

    private static SingleTonDataRepository mSingleTonDataRepository = new SingleTonDataRepository();

    SingleTonDataRepository(){

    }

    public static SingleTonDataRepository getInstance(){
        if(mSingleTonDataRepository == null){
            mSingleTonDataRepository = new SingleTonDataRepository();
        }
        return mSingleTonDataRepository;
    }

    private MutableLiveData<String> mCurrentList;

    public MutableLiveData<String> getCurrentList() {
        if (mCurrentList == null) {
            mCurrentList = new MutableLiveData<>();
        }
        return mCurrentList;
    }
}

Надеюсь, это поможет !! :)

...