2015-04-25 8 views
7

У меня есть переменная во Фрагменте, которая будет менять свое значение несколько раз в течение всей жизни Фрагмента. Это вызвано взаимодействием пользовательского интерфейса, поэтому я подумал, что было бы неплохо использовать Observable для его хранения, вместо того чтобы делать все обновляемые представления в виде полей и изменять мои пользовательские интерфейсы из сеттера.Предоставление RxJava Наблюдаемое что-то испускать из другого метода

Значение должно быть обновлено с помощью другого метода (в основном, сеттера, который должен называть абонента onNext()), а не через сам Наблюдаемый. Есть ли способ сделать это с дизайном RxJava?

Другими словами, я ищу, чтобы иметь наблюдаемое поле, и дать ему новые значения для испускания (вызов onNext() на своих подписчиков) из другого метода в классе.

ответ

11

RxJava имеет Subjects для этой цели. Например:

private final PublishSubject<String> subject = PublishSubject.create(); 

public Observable<String> getUiElementAsObservable() { 
    return subject; 
} 

public void updateUiElementValue(final String value) { 
    subject.onNext(value); 
} 
+0

Это похоже на то, что мне нужно! Отчитается. –

+1

@ D_Steve595, вероятно, ['BehaviorSubject'] (http://reactivex.io/RxJava/javadoc/rx/subjects/BehaviorSubject.html) подходит больше в вашем случае –

+0

Это выглядит идеально, поскольку мне иногда нужно будет получить последний испускаемое значение. Благодаря! –

Смежные вопросы