RxAndroid更新字段/Textview时,字符串值的变化



我刚刚开始使用RxJava/RxAndroid,我想知道我是否可以使用它来解决以下问题。基本上,给定一个字段,说一个textview,和一个值,一个字符串,我正在寻找一种方法来自动更新textview每当字符串的值改变。我不确定我将如何实现这作为一个可观察对象。

String str = "Test"; //the string value
TextView textView = (TextView) findViewById(R.id.textView); //the textview
Observable o = //looking for this part. Want to observe the String str
o.subscribe(new Observer<String>() { //subscribe here looking for string changes
            @Override
            public void onCompleted() {
                System.out.println("Completed");
            }
            @Override
            public void onError(Throwable e) {
            }
            @Override
            public void onNext(String s) {
                textView.setText(s); //update the textview here
            }
        });
//here is where the string changes, it could be hardcoded, user input, or   
//anything else really, I just want the textview to be updated automatically 
//without another setText
str = "Different String"; 

是什么我正在寻找可能与RxAndroid/RxJava?

实现这一目标的最简单方法是使用任何类型的Subject,可能是BehaviorSubjectPublishSubjectSubject既是Subscriber(因此您可以使用onNext将值输入其中),也是Observable(因此您可以订阅它)。查看这里的差异解释:http://reactivex.io/documentation/subject.html

所以,不用

String str = "Test";

你会有

BehaviorSubject<String> stringSubject = BehaviorSubject.<String>create("Test");

您可以直接订阅stringObservable

而不是像这样给变量赋一个新值:

str = "Hello World!";

你会做

stringSubject.onNext("Hello World!");

哦,永远不要让onError为空——这样做会悄悄地吞下之前可能发生的任何异常,你会坐下来想为什么什么都没发生。至少写e.printStacktrace()

相关内容

  • 没有找到相关文章

最新更新