Ich versuche, .distinctUntilChanged()
zu verwenden und seinen Wert nicht nach switchmap()
nach dem ersten Mal zu übergeben.Rxjava2 distinctUntilChanged() funktioniert nicht richtig nach dem ersten Mal
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());
}));
Ist es korrekt zu verwenden .distinctUntilChanged()
?
Die 'CharSequence' die textChanges gibt Ihnen Mutable und sollte in' String' umgewandelt werden, bevor es weitergegeben wird. – akarnokd
Vielen Dank. Ich habe gerade '.map (CharSequence :: toString)' hinzugefügt und ich denke, es funktioniert. –
Also 'distinctUntillChanged()' funktioniert nur für unveränderliche emittiert? Kannst du bitte Erklären. @akarnokd –