Implementation of pure functional concept of talking to Android View layer in a Reactive way
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
ci
gradle
rxui-kotlin
rxui-sample-java
rxui-sample-kotlin
rxui-test
rxui
.gitignore
.travis.yml
CHANGELOG.md
LICENSE.md
README.md
build.gradle
dependencies.gradle
gradle.properties
gradlew
gradlew.bat
keystore.jks
settings.gradle

README.md

RxUi: Observable <-> Observable

Minimal implementation of the concept of talking to Android View layer in a Reactive way described here.

RxUi solves 3 main problems of communication between Presenters/ViewModels/etc and View layer in Android applications:
  1. Main Thread should be part of View layer, Presenters/ViewModels/etc should not know about it.
  2. Action posted to Main Thread should be part of Disposable so you could dispose() it and prevent execution.
  3. Backpressure occurred on the View layer should be detected and handled on Presenter/ViewModel/etc layer above.

Sample Apps

Check Sample app written in Java and Sample app written in Kotlin.

RxUi is so tiny that you may not even see it in the code at the first sight!


Basically, RxUi is just two main functions:
  1. bind(Observable<T>): Disposable
  2. ui(Consumer<T>): Function<Observable<T>, Disposable>

And concept of Observable <-> Observable in the View layer when View only produces Observables and consumes Observables.

interface SignInView {
  // Produces.
  Observable<String> login();
  Observable<String> password();
  Observable<Object> signInClicks();
  
  // Consumes.
  Function<Observable<Boolean>,      Disposable> signInEnable();
  Function<Observable<SignInResult>, Disposable> signInResult();
}

Download

RxUi

Only two functions at the moment: RxUi.bind() (use it in Presenters/ViewModels) and RxUi.ui() use it in View layer.

compile 'com.artemzin.rxui2:rxui:2.0.0'

 

RxUi Test

Only one function at the moment: TestRxUi.testUi(), basically same as RxUi.ui() except that it's synchronous and does not know about Main Thread.

testCompile 'com.artemzin.rxui2:rxui-test:2.0.0'

 

RxUi Kotlin

Only one extension function at the moment: Observable.bind(), absolutely same as RxUi.bind() but easier to use in Kotlin.

compile 'com.artemzin.rxui2:rxui-kotlin:2.0.0'

 


Made with ❤️ by Artem Zinnatullin, discussed with Juno Android Team and @FE_Hudl.