在android中,我有一个如下定义的文本 View :

<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次之后,我想开始一个新的 Activity 。我需要使用RXJava来执行此操作;这是一个要求。或rxAndroidrxBinding等。

我的 Activity 如下所示:
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){

        }
    }
}

更新:
但这只是这样做的标准方法。必须有一种与 react 性rxJava API有关的方法。

因此,我阅读了代替使用onClicklistenerrxBinding的方法,我们可以这样做:
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次单击后执行?我不是要存储静态变量,也不是要使用匿名类并在其中存储成员变量以进行计数。为此应该有一种可观察的方法。

最佳答案

您可以创建一个可观察对象,使其在每次单击按钮时发出,然后计算其发出的总次数,并使用过滤器,以便您的订阅者仅在发出四次后才能看到它。

Observable<View> buttonObservable = ViewObservable.clicks(initiateButton, false);
buttonObservable.count()
        .filter(count -> (count >= 4))
        .subscribe(object -> {
            //Your code here
        });

关于android - RxJava-如何在Android中的4次点击事件上调用订户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34881141/

10-11 00:42