W android Mam widoku tekstu zdefiniowany następująco:RxJava - jak wywołać abonenta 4 zdarzeń kliknij Androida
<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" />
Moim celem jest to, że po kliknięciu 4 razy, chcę zacząć nowy czynność. Muszę to zrobić z RXJava; to jest wymaganie. Lub rxAndroid
, rxBinding
itp
Moja aktywność wygląda następująco:
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){
}
}
}
UPDATE: ale jest to po prostu standardowy sposób to zrobić. Z reaktywnym interfejsem API rxJava musi być jakiś sposób.
Więc zamiast używać onClicklistener
z rxBinding
czytałem możemy to zrobić:
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");
});
można jakoś użyć polecenia w rxBinding
aby wykonać dopiero po 4 kliknięcia? Nie chcę przechowywać zmiennej statycznej, lub użyć anonimowej klasy i przechowywać zmienną składową, aby ją policzyć. Powinna istnieć możliwa do zaobserwowania metoda.
Próbujesz uzyskać czterokrotne kliknięcie lub tylko 4 kliknięcia o nieokreślonej ilości czasu między nimi? – skywall
Czterokrotne kliknięcie, ale mogę rozliczać się za 4 kliknięcia z limitem czasu pomiędzy. to działa równie dobrze. – j2emanue