RxBinding2.0的使用
来源:互联网 发布:域名实名认证查询 编辑:程序博客网 时间:2024/05/21 12:46
简单介绍RxBinding2.0的使用,老套路,直接上代码
public class RxBindActivity extends AppCompatActivity { private TextView mTextView; private Button mButton; private ListView mListView; private EditText mEditText; private CheckBox mCheckBox; private ArrayAdapter<String> mArrayAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_rx_bind); findId(); initView(); initListener(); } private void findId() { mTextView = (TextView) findViewById(R.id.tv_binding); mEditText = (EditText) findViewById(R.id.et_binding); mButton = (Button) findViewById(R.id.btn_binding); mCheckBox = (CheckBox) findViewById(R.id.cb_binding); mListView = (ListView) findViewById(R.id.lv_binding); } private void initView() { mArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, testData()); mListView.setAdapter(mArrayAdapter); } private void initListener() { //1).常规处理方式 RxView.clicks(mTextView).subscribe(v -> showToast("单机了mTextView")); //2).3秒钟之内只取一个点击事件,防抖操作(用户快速的连续点击了好几下) RxView.clicks(mButton).throttleFirst(3, TimeUnit.SECONDS) .subscribe(v -> showToast("单机了mButton")); //RxView.longClicks()长时间点击 //3).ListView的点击 RxAdapterView.itemClicks(mListView) .subscribe(position -> showToast("单机了" + position)); //4).EditText数据改变的监听 RxTextView.textChanges(mEditText) .debounce(600, TimeUnit.MILLISECONDS) //去除发送频率过快的项 .map(charSequence -> charSequence.toString()) //将监听到输入的数据转化为string .subscribeOn(Schedulers.io()) .map(s -> { List<String> dataList = new ArrayList<>(); if (!TextUtils.isEmpty(s)) { for (String testData : testData()) { if (!testData.isEmpty() && testData.contains(s)) { dataList.add(testData); } } return dataList; }else { return testData(); } } ).observeOn(AndroidSchedulers.mainThread()) .subscribe(listData -> { mArrayAdapter.clear(); mArrayAdapter.addAll(listData); mArrayAdapter.notifyDataSetChanged(); }); //5).CheckBox的监听 RxCompoundButton.checkedChanges(mCheckBox).subscribe(checkFlag -> { mCheckBox.setChecked(checkFlag); mButton.setBackgroundColor(checkFlag ? Color.GREEN : Color.RED); }); //6)........ } //模拟测试的数据 private List<String> testData() { List<String> list = new ArrayList<>(); list.add("android"); list.add("math"); list.add("english"); list.add("pe"); list.add("sience"); return list; } private void showToast( String str) { runOnUiThread(() -> Toast.makeText(RxBindActivity.this, str, Toast.LENGTH_SHORT).show()); }}
布局代码就省略了......
阅读全文
0 0
- RxBinding2.0的使用
- Failed to resolve: com.jakewharton.rxbinding2:rxbinding:2.0.0
- [Android开发] Rxjava2之路: Rxbinding2(支持基于Rxjava2)
- mybatis3.0的使用
- JAXB2.0的使用
- MSDN9.0的使用
- MASM5.0的使用
- AFN2.0的使用
- OAuth2.0 的使用
- butterknife7.0的使用
- AFNetworking3.0的使用
- Retrofit2.0的使用
- AFNetworking3.0的使用
- EventBus3.0的使用
- Retrofit2.0 的使用
- Retrofit2.0的使用
- butterknife7.0的使用
- EventBus3.0的使用
- Android ANR是什么?如何避免ANR
- Java认证和授权服务 JAAS 之 授权
- Linux 终端设备驱动
- 【python学习笔记】pandas数据操作,axis遵循“行0列1”原则
- websphere wsadminlib.py使用
- RxBinding2.0的使用
- C++中多重继承的二义性及解决办法
- tensorflow安装
- 不想节后吃土?大家快趁账未到时快点做规划
- nginx 启动,停止和重新加载
- python_如何去除字符串中不想要的字符?
- 匿名内部类实现Comparator接口,没有重写所有方法,为何不报错
- 【codevs 2806】红与黑
- 第一篇不得不写的博客