2017-10-20 106 views
2

RxJava修修补补的第一次,我已经创建了一个的Rx链听在String对象的状态的变化:字符串值如何传递给updateText()方法?

observable=Observable 
    .defer(new Callable<ObservableSource<String>>() { 
    @Override 
    public ObservableSource<String> call() throws Exception { 
     return(Observable.just(query())); 
    } 
    }) 
    .subscribeOn(Schedulers.io()) 
    .map(this::prettify) 
    .observeOn(AndroidSchedulers.mainThread()) 
    .cache(); 

这里美化是:

private String prettify(String raw) { 
Gson gson=new GsonBuilder().setPrettyPrinting().create(); 
JsonElement json=new JsonParser().parse(raw); 

return(gson.toJson(json)); 
} 

现在,我创建了一个订户observable

sub=observable.subscribe(
    this::updateText, 
    error -> Toast 
    .makeText(getActivity(), error.getMessage(), Toast.LENGTH_LONG) 
    .show() 
); 

但我忍不住明白的是该值是如何传递到updateText方法:

private void updateText(String text) { 
((TextView)getView().findViewById(R.id.result)).setText(text); 
} 

的方法updateText简单的工作,但我的问题是,它是如何得到的字符串值?任何帮助,将不胜感激。

回答

0

这是一个简单的lambda表达式

sub=observable.subscribe(
    this::updateText, 
    error -> Toast 
    .makeText(getActivity(), error.getMessage(), Toast.LENGTH_LONG) 
    .show() 
); 

this::updateText叫你的方法updateText(String text)

在一种扩展版本,它看起来像 .subscribe(result -> updateText(result), ....

相关问题