เพิ่งได้ว่างกลับมาดู เลยมาอัพเดตให้นะครับ คร่าวๆ...
# thailand
b
เพิ่งได้ว่างกลับมาดู เลยมาอัพเดตให้นะครับ คร่าวๆที่ทำอยู่นะครับ จะเป็นอารมณ์คล้ายๆ passcode คือจะมี EditText แอบรับ input อยู่แล้วมีเป็น custom TextView เท่าจำนวน passcode ที่ต้องใส่ ทีนี้โค้ดของเก่าใน ViewModel มันจะรับ rx_textChanged ของ EditText เข้ามา แล้วเอามา map เป็นแต่ละ char ประมาณนี้
character1Observable = inputObservable.map { it[0] }
และเมื่อพิมพ์ครบจำนวน ก็ดักเพื่อทำ action ต่อไป ประมาณนี้
inputObservable.filter { checkCompleted() }.flatMap { action() }
ส่วนใน activity ก็จะ bind rx_text กับ viewmodel กับทุก characters ประมาณนี้ครับ
viewModel.character1Observable.bindTo(character1TextView.rx_text).addTo(subscriptions)
-- _ก่อนหน้านี้ใช้ reactive-android v0.2.18 มัน work ครับ พอเปลี่ยนเป็น v0.4.0 มันไม่ work _ ตอนนี้ผมได้เข้ามาแก้จากโค้ดเดิม จนมัน work เป็นประมาณนี้ครับ ใน viewModel แต่ละ characters ปรับจาก
Observable
เป็น
MutableProperty
โดยไปเซ็ตค่าของแต่ละ characters ตรง chain ที่ดัก action ตอนพิมพ์ครบเลย
inputObservable.filter { setCharactersValueAndCheckCompleted() }.flatMap { action() }
แล้วตรง activity ก็สลับเป็น
character1TextView.rx_text.bindTo(viewModel.character1).addTo(subscriptions)
คิดว่าน่าจะมีท่าสวยกว่านี้นะครับ แต่ยังไม่เชี่ยว Rx เลย เลยเน้นแก้จากโค้ดที่มีให้ไปก่อน แนะนำได้นะครับ 😆