RxBinding, tulajdonkeppen annyi, hogy nem kell listenereket, es hosszu csunya kodokat irnunk, hanem minden View-re, stb-re tudunk aggatni egy Bind-ot, subscribe()-al
példák:
@Bind(R.id.button) Button button; //ez ugye a Butterknife-ot hasznalja
...
RxView.clicks(button).subscribe(aVoid -> onButtonClicked());
...
private void onButtonClicked() {
Toast.makeText(this, "onButtonClicked", Toast.LENGTH_LONG).show();
}
Ha Butterknife-al egyutt hasznalnank, akkor kell a gradle-be egy ilyen is hozza:
packagingOptions {
exclude 'META-INF/services/javax.annotation.processing.Processor' // butterknife
}
Hogy ne zavarodjon be a build tole. Amugy meg van annotacios @OnClick Butterknife-ba, tehat ez vegulis felesleges, de van ilyen is. Hurra.
Masik pelda:
RxToolbar.navigationClicks(toolbar).subscribe(aVoid -> onToolbarNavigationClicked());
Azt kell latni, hogy ugyszolvan mindenhez van ilyen subscribe, az android osszes
elemehez, es a design libraryhez is, meg a legujabb cuccokhoz is.
Es egy kiforrottabb pelda:
usualApproachEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
onNewTextChanged(s);
}
@Override
public void afterTextChanged(Editable s) {}
});
Ehelyett is tudunk RxBind-os megoldast:
RxTextView.textChanges(reactiveApproachEditText).subscribe(this::onNewTextChanged);
1 sor az egesz. Hat nem szebb es stilusosabb? Olvashatobb, rovidebb?
Kell ez nekunk? IGEEEEEN