3
voici mon code:comment utiliser RxBinding & Retrofit?
// Observable from RxView
RxView.clicks(mBtnLogin)
.throttleFirst(500, TimeUnit.MILLISECONDS)
.subscribe(new Action1<Void>() {
@Override
public void call(Void aVoid) {
String userName = mEditUserName.getText().toString();
String passWord = mEditPassWord.getText().toString();
if (TextUtils.isEmpty(userName)) {
Toast.makeText(LoginActivity.this, R.string.input_user_name, Toast.LENGTH_SHORT).show();
return;
}
if (TextUtils.isEmpty(passWord)) {
Toast.makeText(LoginActivity.this, R.string.input_pass_word, Toast.LENGTH_SHORT).show();
return;
}
LoginAction action = Constants.retrofit().create(LoginAction.class);
// Observable from Retrofit
Observable<String> call = action.login(userName, MD5.encode(passWord));
call.subscribeOn(Schedulers.io())
.subscribe(new Observer<String>() {
@Override
public void onCompleted() {
System.out.println("completed");
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
}
@Override
public void onNext(String s) {
System.out.println("next" + s);
}
});
}
});
Est-il possible que vous pouvez combiner les Observable de RxView et Observable de rénovation?
Je pense que le code est moche et ne répond pas aux spécifications de ReactiveX.
ce qui est le 'apiService'? la demande http doit être en arrière-plan, puis obtenir le nom d'utilisateur et le mot de passe sur le thread principal, comment faire? –
Dans mon exemple 'apiService' est le service que vous créez en utilisant Retrofit. Il fait l'appel sur un thread d'arrière-plan en utilisant 'Schedulers.io()', puis observe les résultats sur le thread principal. – Orbit
mais vous devez obtenir le nom d'utilisateur et mot de passe lorsque RxView.clicks (mButton), vous oubliez l'étape. –