2017-10-20 25 views
2

Bricoler RxJava pour la première fois, j'ai créé une chaîne Rx pour écouter un changement d'état de l'objet Chaîne:Comment la valeur String est-elle transmise à la méthode 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(); 

Ici enjoliver est:

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

return(gson.toJson(json)); 
} 

Maintenant, je créé un abonné à observable:

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

Mais ce que je ne pouvais pas aider à comprendre comment la valeur est passée au updateText méthode:

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

La méthode updateText fonctionne simplement, mais ma question est comment est-elle la valeur de chaîne? Toute aide à ce sujet sera grandement appréciée.

Répondre

0

Ceci est simplement l'expression lambda

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

Dans this::updateText appelé votre méthode updateText(String text)

en nature version étendue, il ressemble à .subscribe(result -> updateText(result), ....