Tôi đang cố gắng triển khai màn hình trong ứng dụng Android sử dụng kiến trúc MVP và sử dụng RxJava và RxBinding ở phía Chế độ xem.RxJava và MVP trong ứng dụng Android
Về cơ bản tôi có 2 Spinners, 1 TextEdit và nút bị tắt theo mặc định. Tôi muốn kích hoạt nút khi Spinners có các mục được chọn và trường văn bản không trống. Đây là mã:
Observable.combineLatest(
RxAdapterView.itemSelections(mFirstSpinner),
RxAdapterView.itemSelections(mSecondSpinner),
RxTextView.textChanges(mEditText),
new Func3<Integer, Integer, CharSequence, Boolean>() {
@Override
public Boolean call(Integer first, Integer second, CharSequence value) {
return !TextUtils.isEmpty(value);
}
}).subscribe(new Action1<Boolean>() {
@Override
public void call(Boolean enable) {
mButton.setEnabled(enable);
}
});
Câu hỏi bây giờ là cách tích hợp vào mẫu MVP. Lý tưởng nhất là "logic nghiệp vụ" cho phép nút phải ở trong người trình bày. Cách tốt nhất để đạt được điều này là gì? Tôi đang nghĩ đến việc đưa những người quan sát ban đầu vào người trình bày bằng cách nào đó (câu hỏi phụ là như thế nào?), Và người trình bày sẽ kết hợp những người quan sát đó và nó sẽ có logic cho phép nút. Cuối cùng, nó sẽ chỉ gọi View để sửa đổi trạng thái nút.
Có tùy chọn nào tốt hơn không? Có bất kỳ ví dụ tốt của MVP với RxJava trên View?
Điều này rất giống với cách tiếp cận mà tôi đã đề xuất và triển khai. Sự khác biệt duy nhất là tôi vượt qua 3 người quan sát riêng biệt để trình bày thay vì kết hợp chúng ở phía bên xem.Kết hợp 3 trong số đó cũng là loại logic "kinh doanh". Trong tương lai, chúng tôi có thể chỉ muốn sử dụng 2 trường hoặc thêm một số trường nữa. –