你好,我試圖使用RX Java進行下一個任務RxJava的Android toMap操作員停止執行
- 形式的顯示領域
- 上mistaked領域顯示錯誤
- 返回可觀察>有效字段的 - >值
解決方案
List<Observable<RxUtil.EditTextEvent>> listOfObs = new ArrayList<>();
...fill form, fill listOfObs
return Observable.merge(listOfObs) // stream of EdtText events
.debounce(5, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.doOnNext((onTextChangeEvent) -> { // show error, if user made mistake
if (!CheckOutUtils.isInputCorrect(onTextChangeEvent))
onTextChangeEvent.editText.setError("Проверьте поле");
})
.filter(CheckOutUtils::isInputCorrect) // only valid fields
.toMap(editTextEvent -> (Field) editTextEvent.editText.getTag(), editTextEvent -> editTextEvent.text) // called on every change
.doOnNext(fieldStringMap -> {
Log.v("map", fieldStringMap.toString()); // never called
}); // map of it
最後一個操作符永遠不會被調用。 toMap是最後一個執行操作符。怎麼了?
ToMap需要一個有限的源,你的可能不會終止。 – akarnokd
@akarnokd我可以使用哪個運算符來獲取Observable
我會在debounce之後使用'map',用for循環掃描所有字段並手動將正確的輸入收集到Map中,然後把它返還。 – akarnokd