Как установить значение по умолчанию в BehaviourSubject - PullRequest
0 голосов
/ 28 августа 2018

Наверное, нубский вопрос. Как установить значение по умолчанию для BehaviourSubject.

У меня есть enum с двумя разными значениями

enum class WidgetState {
    HIDDEN,
    VISIBLE
}

И субъект поведения, который излучает состояния

val widgetStateEmitter: BehaviorSubject<WidgetState> = BehaviorSubject.create()

Мой излучатель начинает излучать, когда написана логика представления. Однако по умолчанию он скрыт. Как мне установить значение по умолчанию как WidgetState.HIDDEN для моего эмиттера widgetStateEmitter?

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

При подписке на эту тему вы можете использовать Начать с оператора

widgetStateEmitter.startWith(HIDDEN)
//continue your chain
0 голосов
/ 28 августа 2018

Есть статический BehaviorSubject.createDefault(T defaultValue) фабричный метод, который позволяет установить начальное значение.

Javadoc для параметра defaultValue говорит:

defaultValue - элемент, который будет передан первому любому Observer до тех пор, пока BehaviorSubject еще не наблюдал никаких предметов из его источник Observable

Так что вам просто нужно создать свой BehaviorSubject следующим образом:

val widgetStateEmitter: BehaviorSubject<WidgetState> = 
        BehaviorSubject.createDefault(HIDDEN)
0 голосов
/ 28 августа 2018

В вашем конструкторе или onCreate (или подобном) просто вызовите widgetStateEmitter.onNext(HIDDEN)

...