Rxjava2 distinctUntilChanged()在第一次之后无法正常工作

时间:2017-12-12 12:12:52

标签: java android rx-java rx-java2

我尝试使用.distinctUntilChanged(),并且在第一次使用后没有将值传递给switchmap()

RxTextView.textChanges(etUserQuery).debounce(300, TimeUnit.MILLISECONDS)
    .observeOn(AndroidSchedulers.mainThread()).filter(charSequence -> {
        if (charSequence.toString().isEmpty()) {
            etUserQuery.setHint("Please type username");
                return false;
            } else
                return true;
        }).distinctUntilChanged()
        .switchMap(charSequence -> vm.dataFromNetwork(charSequence.toString()))
        .subscribe(fetchUserResponce -> {
            noDataText.setVisibility(fetchUserResponce.getItems().size() == 0 ? View.VISIBLE : View.GONE);
            mUsersListAdapter.updateData(fetchUserResponce.getItems());
        }));

使用.distinctUntilChanged()是否正确?

1 个答案:

答案 0 :(得分:5)

来自评论:

CharSequence textChanges给你的信息是可变的,在传递之前应该转为String

textChanges为您提供相同的CharSequence引用,依赖distinctUntilChange的{​​{1}}会一直发现它等同于自己。