2017-01-30 3 views
2

Есть ли способ, возможно, с помощью RxBinding, чтобы связать Observable<String> к TextView объекту таким образом, что его свойство .text сохраняются до настоящего времени с Observable? Очевидно, вы могли бы subscribe() и вручную обновить текстовое поле, но удобный способ кажется вероятным. Я просто не могу найти его, и документация не дала мне никаких ответов.связывание RxJava Observable к текстовому свойству а TextView в

Подобный метод удобства существует в RxSwift (или, скорее, RxCocoa), в случае, если это разъясняет то, о чем я прошу; это называется .bindTo().

+0

Это не связано непосредственно с вашим вопросом, но вы видели библиотеку привязки данных Android: https://developer.android.com/topic/libraries/data-binding/index.html? –

ответ

3

Да методы, подобные этому, представлены в rx-binding library. Например, для TextView RxTextView.text(textView) создается действие, которое может использоваться как подписчик.

См source code

Usage будет что-то вроде этого

observable.subscribe(RxTextView.text(textView), Throwable::printStackTrace); 

Будьте осторожны с памятью и читать документы:

Предупреждение: Созданное наблюдаемым сохраняет сильную ссылку для просмотра , Отказаться от подписки, чтобы освободить эту ссылку.

Это не то же самое, что bindTo магия, но делает то, что вам нужно.

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