2015-04-25 18 views
7

Tôi có một biến trong một Phân đoạn sẽ có giá trị thay đổi nhiều lần trong suốt thời gian của Fragment. Nó được kích hoạt bởi các tương tác UI, vì vậy tôi nghĩ có thể sử dụng một Observable để giữ nó, thay vì làm cho tất cả các khung nhìn được cập nhật thành các trường và thực hiện các thay đổi giao diện người dùng của tôi từ một setter.Cho một thứ RxJava quan sát được để phát ra từ phương pháp khác

Giá trị phải được cập nhật thông qua một phương pháp khác (về cơ bản là trình thiết lập nên gọi onNext() trên người đăng ký), không phải thông qua chính Đài quan sát. Có cách nào để làm điều đó với thiết kế của RxJava không?

Nói cách khác, tôi đang tìm kiếm một trường có thể quan sát và cung cấp cho nó các giá trị mới để phát ra (gọi số onNext() trên các thuê bao của nó) từ một phương thức khác trong lớp.

Trả lời

11

RxJavaSubjects cho mục đích này. Ví dụ:

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

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

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

Điều này có vẻ như những gì tôi cần! Sẽ báo cáo lại. –

+1

@ D_Steve595 có lẽ ['Hành viSubject'] (http://reactivex.io/RxJava/javadoc/rx/subjects/BehaviorSubject.html) phù hợp hơn trong trường hợp của bạn –

+0

Điều đó có vẻ hoàn hảo, vì đôi khi tôi sẽ cần để có được giá trị phát ra. Cảm ơn! –

Các vấn đề liên quan