Rxjava2 distinctUntilChanged()在第一次之后无法正常工作
我正在尝试使用Rxjava2 distinctUntilChanged()在第一次之后无法正常工作,java,android,rx-java,rx-java2,Java,Android,Rx Java,Rx Java2,我正在尝试使用.distinctUntilChanged(),并且在第一次使用后,它不会将值传递给switchmap() RxTextView.textChanges(etUserQuery).debounce(300, TimeUnit.MILLISECONDS) .observeOn(AndroidSchedulers.mainThread()).filter(charSequence -> { if (charSequence.toString().isEmp
.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()
是否正确?来自注释:
CharSequence
传递给您的textChanges
是可变的,应该在传递之前转换为String
textChanges
为您提供相同的CharSequence
参考和distinctUntilChange
依赖对象。equals()
将发现它始终等于自身。注释:
CharSequence
传递给您的textChanges
是可变的,应该在传递之前转换为String
textChanges
根据Object.equals()提供相同的CharSequence
引用和distinctUntilChange
将发现它始终与自身相等。文本更改提供的字符序列
是可变的,在传递之前应转换为字符串
。非常感谢。我刚刚添加了.map(CharSequence::toString)
我认为它可以工作。那么distinctUntillChanged()
只对不可变发射有效吗?你能解释一下吗@akarnokdtextChanges
根据Object.equals()为您提供相同的CharSequence
引用和distinctUntilChange
将发现它始终等于它本身。textChanges提供给您的CharSequence
是可变的,应该在传递之前转换为String
。非常感谢。我刚刚添加了.map(CharSequence::toString)
我认为它可以工作。那么distinctUntillChanged()
只对不可变发射有效吗?你能解释一下吗@akarnokdtextChanges
为您提供相同的CharSequence
引用和distinctUntilChange
依赖Object.equals()
将发现它始终等于自身。