RxJava – 如何在Android中的4个点击事件中调用订阅者

android我有一个像这样定义的文本视图:
<TextView
     android:id="@+id/text1"       
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="@string/hello_world"
     android:textColorHighlight="#000000"
     android:textIsSelectable="true" />

我的目标是在点击4次之后,我想开始一项新活动.我需要用RXJava做到这一点;这是一项要求.或rxAndroid,rxBinding等

我的活动如下:

public class MainActivity extends Activity implements onClickListener {
    TextView tv;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv=(TextView)findViewById(R.id.text1);
        tv.setonClickListener(this);
    }

    @Override
    public void onClick(View v) {
        if(v.getId() == R.id.text1){

        }
    }
}

更新:
但这只是标准的做法.必须有一种方法可以使用反应式rxJava API.

因此,我没有使用带有rxBinding的onClicklistener,而是可以执行以下操作:

RxView.clicks(tv).flatMap(tv -> { 
        // another observable which can throw onError. 
        return Observable.error(null); 
    }).subscribe(object -> { 
        Log.d("CLICK","textview clicked",start activity);
    },error -> { 
        Log.d("CLICK","ERROR");
    });

我可以以某种方式使用rxBinding中的命令使其仅在4次点击后执行吗?我不打算存储静态变量,或者使用匿名类并将成员变量存储为count.应该有一个可观察的方法.

解决方法

您可以创建一个observable,在每次单击按钮时发出,然后计算它发出的总次数,并使用过滤器,这样您的订阅者只有在它发出四次后才能看到它.
Observable<View> buttonObservable = ViewObservable.clicks(initiateButton,false);
buttonObservable.count()
        .filter(count -> (count >= 4))
        .subscribe(object -> {
            //Your code here
        });

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...