Android Programjaim

Androidfejlesztes

RxAndroid - 4. resz - RxBinding

2016. július 06. 14:23 - lacas82

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