package com.example.administrator.rxbinding;
import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.AndroidRuntimeException;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.jakewharton.rxbinding.view.RxView;
import com.jakewharton.rxbinding.widget.RxTextView;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import rx.Observable;
import rx.Observer;
import rx.Scheduler;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action1;
import rx.functions.Func1;
import rx.schedulers.Schedulers;
/*
延时搜索
*/
public class MainActivity extends Activity {
private EditText ed;
private TextView tv1;
private Button but1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
myOnCick();
}
private void myOnCick() {
/*
输入框事件
*/
RxTextView.textChanges(ed)
.debounce(1000, TimeUnit.MICROSECONDS)//1秒之后操作
.subscribeOn(AndroidSchedulers.mainThread())//必须在主线程
.filter(new Func1<CharSequence, Boolean>() {
@Override
public Boolean call(CharSequence charSequence) {
/*
过滤输入框的内容必须大于0
*/
Log.d("filter", charSequence + "");
return charSequence.toString().trim().length() > 0;
}
})
.switchMap(new Func1<CharSequence, Observable<List<String>>>() {//每一次为上一次的数据为准 在这里进行网络操作
@Override
public Observable<List<String>> call(CharSequence charSequence) {
Log.d("switchMap", charSequence + "");
List<String> stringList = new ArrayList<String>();
stringList.add(charSequence.toString().trim());
return Observable.just(stringList);
}
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<List<String>>() {
@Override
public void call(List<String> strings) {
/*
执行操作UI更新
*/
Log.d("subscribe", strings + "");
tv1.setText(strings.get(strings.size() - 1));
}
}, new Action1<Throwable>() {//捕获错误
@Override
public void call(Throwable throwable) {
}
});
/*
防止重复点击
*/
RxView.clicks(but1).throttleFirst(1, TimeUnit.SECONDS).subscribeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Void>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Void aVoid) {
startActivity(new Intent(MainActivity.this,Main2Activity.class));
}
});
}
private void initView() {
but1 = (Button) findViewById(R.id.but1);
ed = (EditText) findViewById(R.id.ed);
tv1 = (TextView) findViewById(R.id.tv1);
}
}
Rxjava1
最新推荐文章于 2021-03-04 09:59:33 发布