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

Rxjava2 distinctUntilChanged() not working properly after first time

我正在尝试使用 .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() 的地方是否正确?

来自评论:

textChanges 给你的 CharSequence 是可变的,在传递之前应该变成 String

textChanges 给你相同的 CharSequence 引用,distinctUntilChange 依赖 Object.equals() 会发现它一直等于它自己。