Skip to content

ReactiveX/RxKotlin

 
 

Repository files navigation

Kotlin Adaptor for RxJava

Kotlin has support for SAM (Single Abstract Method) Interfaces as Functions (i.e. Java 8 Lambdas). So you could use Kotlin in RxJava without this adaptor

Observable.create(OnSubscribeFunc<String> { observer ->
    observer!!.onNext("Hello")
    observer.onCompleted()
    Subscriptions.empty()
})!!.subscribe { result ->
    a!!.received(result)
}

In RxJava 0.17.0 version a new Subscriber type was included

Observable.create(object:OnSubscribe<String> {
    override fun call(subscriber: Subscriber<in String>?) {
        subscriber!!.onNext("Hello")
        subscriber.onCompleted()
    }
})!!.subscribe { result ->
    a!!.received(result)
}

(Due to a bug in Kotlin's compiler you can't use SAM with OnSubscribe)

This adaptor exposes a set of Extension functions that allow a more idiomatic Kotlin usage

{(subscriber: Subscriber<in String>) ->
    subscriber.onNext("Hello")
    subscriber.onCompleted()
}.asObservable().subscribe { result ->
    a!!.received(result)
}

Binaries

Binaries and dependency information for Maven, Ivy, Gradle and others can be found at http://search.maven.org.

Example for Maven:

<dependency>
    <groupId>io.reactivex</groupId>
    <artifactId>rxkotlin</artifactId>
    <version>x.y.z</version>
</dependency>

and for Ivy:

<dependency org="io.reactivex" name="rxkotlin" rev="x.y.z" />

and for Gradle:

compile 'io.reactivex:rxkotlin:x.y.z'