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()
会发现它一直等于它自己。
我正在尝试使用 .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()
会发现它一直等于它自己。