如何创建onclick事件Android的可观察到的? [英] How to create an Observable from OnClick Event Android?

查看:313
本文介绍了如何创建onclick事件Android的可观察到的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是新的反应式编程。所以,我有,当从事件创建流问题一样的onClick,ontouch ...

I'm new in reactive programming. So I have problem when create a stream from an Event, like onClick, ontouch...

谁能帮我解决这个问题。

Can anyone help me solve this problem.

感谢。

推荐答案

您会做这样的事

    Observable<View> clickEventObservable = Observable.create(new Observable.OnSubscribe<View>() {
        @Override
        public void call(final Subscriber<? super View> subscriber) {
            viewIWantToMonitorForClickEvents.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (subscriber.isUnsubscribed()) return;
                    subscriber.onNext(v);
                }
            });
        }
    });

    // You can then apply all sorts of operation here
    Subscription subscription = clickEventObservable.flatMap(/*  */);

    // Unsubscribe when you're done with it
    subscription.unsubscribe();

由于您使用的是Android,那么你可能已经包含的contrib rxjava-机器人的依赖现在被称为 ioreactivex:rxandroid 。 他们已经有了一个类来实现这一点。该方法是 ViewObservable.clicks 。您可以使用它像这样。

Since you're using Android then you may already include the contrib rxjava-android dependency now known as ioreactivex:rxandroid. They already have a class to facilitate this. The method is ViewObservable.clicks. You can use it like so.

Observable<View> buttonObservable = ViewObservable.clicks(initiateButton, false);
    buttonObservable.subscribe(new Action1<View>() {
        @Override
        public void call(View button) {
            // do what you need here
        }
    });


编辑:从1.x版本, ViewObservable 和许多助手类的删除从RxAndroid 。您需要 RxBinding库代替。


Since version 1.x, ViewObservable and many helper classes are removed from RxAndroid. You will need RxBinding library instead.

Observable<Void> buttonObservable = RxView.clicks(initiateButton);
    buttonObservable.subscribe(new Action1<Void>() {
        @Override
        public void call(Void x) {
            // do what you need here
        }
    });

这篇关于如何创建onclick事件Android的可观察到的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆