ยินดีต้อนรับกลับมา
เราได้สร้างแหล่งข้อมูลระยะไกลและที่เก็บข้อมูลแล้ว ดังนั้นเราจึงเสร็จสิ้นชั้นของโมเดล
ตอนนี้เรามาดูที่เลเยอร์แบบจำลองมุมมองในสถาปัตยกรรม Mvvm Model View ViewModel กัน
โมเดลมุมมองเป็นองค์ประกอบที่สำคัญซึ่งทำหน้าที่เป็นสะพานเชื่อมระหว่าง UI
ซึ่งเป็นมุมมอง และข้อมูลซึ่งเป็นโมเดล
มันมีหน้าที่รับผิดชอบในการจัดการและเปิดเผยข้อมูลให้กับ UI
ในขณะที่แยกแยะตรรกะทางธุรกิจและปฏิสัมพันธ์กับแหล่งข้อมูลที่อยู่เบื้องหลังออกไป
มาสร้างแพ็กเกจใหม่กันเถอะ และฉันจะตั้งชื่อว่า view model
และภายในแพ็กเกจนี้ ผมจะสร้างคลาสใหม่ชื่อว่า Main Activity View Model
View Model เปิดเผยข้อมูลให้กับส่วนประกอบ UI โดยใช้ข้อมูลแบบเรียลไทม์และกลไกการสังเกตอื่นๆ
ข้อมูลสดคือคลาสที่เก็บข้อมูลซึ่งสามารถถูกสังเกตได้โดยส่วนประกอบของ UI เมื่อข้อมูลเปลี่ยนแปลงในโมเดลมุมมอง
ข้อมูลสดจะแจ้งให้ UI ทราบเพื่อให้สามารถโต้ตอบและอัปเดตตามความเหมาะสม
เพื่อบอก Android Studio ว่าคลาสนี้จะทำหน้าที่เป็นวิวโมเดล ฉันจะขยายมันจาก
Android view model อีกครั้ง
ทุกคนครับ
ผมต้องการให้คุณไปศึกษาบทเรียนเกี่ยวกับวิวโมเดลเพื่อให้คุณมีข้อมูลเพิ่มเติมและข้อมูลเชิงลึกเกี่ยวกับวิวโมเดล
แต่เพื่อทบทวนอย่างรวดเร็ว เรามีโมเดลมุมมองใน Android และโมเดลมุมมอง Android
ความแตกต่างระหว่างโมเดลมุมมองทั้งสองนี้คืออะไร? โมเดลมุมมองของ Android
และโมเดลมุมมอง (View model)
เป็นคลาสที่จัดเตรียมโดยส่วนประกอบสถาปัตยกรรมของ Android สำหรับใช้ในแพทเทิร์นสถาปัตยกรรม
Mvvm แต่มีวัตถุประสงค์ที่แตกต่างกันเล็กน้อยและมีกรณีการใช้งานที่แตกต่างกัน
โมเดลมุมมองพื้นฐานนี้ไม่ได้เจาะจงสำหรับ Android
และไม่มีการอ้างอิงถึงแอปพลิเคชันหรือบริบทของ Android
ออกแบบมาเพื่อใช้ร่วมกับข้อมูลสดเพื่อเปิดเผยข้อมูลให้กับส่วนประกอบ UI
ตัวอย่างกิจกรรมและส่วนย่อยในลักษณะที่ตระหนักถึงวงจรชีวิต
โดยปกติแล้ว อินสแตนซ์ของ ViewModel จะถูกสร้างขึ้นโดยใช้
ViewModel provider และไม่จำเป็นต้องเข้าถึงคอมโพเนนต์เฉพาะของ Android
เราใช้ ViewModel สำหรับเก็บและจัดการข้อมูลที่เกี่ยวข้องกับ
UI เช่น การเปลี่ยนแปลงการตั้งค่าและข้อมูลที่ควรคงอยู่เมื่อมีการหมุนหน้าจอ
เหมาะสำหรับตรรกะที่ไม่เฉพาะเจาะจงกับ Android เช่น การแปลงข้อมูลและตรรกะการแสดงผล
แต่เนื่องจากฉันกำลังใช้ Viewmodels ในแอปพลิเคชัน Android ที่เราจำเป็นต้องเข้าถึงคอมโพเนนต์เฉพาะของ Android
ฉันจะใช้ Android view model ที่นี่
Android View model เป็นคลาสย่อยของ view model ที่ตระหนักถึงบริบทของแอปพลิเคชัน Android
มันถูกออกแบบมาสำหรับกรณีที่โมเดลมุมมองจำเป็นต้องเข้าถึงคอมโพเนนต์เฉพาะของ Android
เช่น การตั้งค่าทรัพยากรหรือบริบทของแอปพลิเคชัน
และเหตุผลที่ฉันใช้มันที่นี่คือฉันจะส่งอินสแตนซ์ของแอปพลิเคชันไปยังรีโพสิตอรี
ดังนั้นหากเรากลับไปที่ที่เก็บข้อมูลและที่นี่คือน้ำหนักของที่เก็บข้อมูลจากเราเพื่อส่งผ่านอินสแตนซ์ของแอปพลิเคชัน
ดังนั้น เพื่อที่จะส่งผ่านอินสแตนซ์ของแอปพลิเคชัน ฉันจะใช้ Android view model
ดังนั้น Android view model จึงเหมาะเมื่อคุณต้องการทำงานเฉพาะของ
Android ด้วย view model เช่น
การเข้าถึงทรัพยากร การทำงานกับการตั้งค่า การดำเนินการฐานข้อมูลที่ต้องการวัตถุ context
ฉันจะสร้างอินสแตนซ์จากคลังภาพยนตร์
ฉันจะตั้งชื่อว่า repository และที่นี่ฉันจะสร้างคอนสตรัคเตอร์
เมื่อมีคลังข้อมูลนี้แล้ว ฉันจะลบคลังข้อมูลภาพยนตร์นี้ออกจากพารามิเตอร์ของคอนสตรัคเตอร์
และที่นี่ฉันต้องส่งคลังภาพยนตร์ใหม่
ฉันกำลังเข้าถึงแอปพลิเคชันเพื่อให้คุณสามารถดูในคอนสตรัคเตอร์ของคลาสวิวโมเดลกิจกรรมหลักได้
มีแอปพลิเคชันถูกแทรกไว้ที่นี่
และฉันจะใช้มันเพื่อส่งผ่านและสร้างอินสแตนซ์ของคลังภาพยนตร์
นี่คือจุดประสงค์ของการใช้ Android view model ซึ่งเป็นอินสแตนซ์ของแอปพลิเคชันนี้
จากนั้นฉันจะดำเนินการติดตั้งข้อมูลสด
ฉันจะสร้างเมธอดหนึ่งขึ้นมา เพื่อดึงข้อมูลภาพยนตร์ทั้งหมด
และประเภทข้อมูลที่เมธอดนี้จะส่งคืนจะเป็นรายการภาพยนตร์ที่รวมอยู่ในข้อมูลสด
ข้อมูลสดของรายการภาพยนตร์ Alt+ Enter
เพื่อนำเข้าคลาสของรายการและส่งคืน ที่นี่ฉันจะเรียกใช้ตัวแปรของรีโพสิตอรี
ดังนั้น Repository dot Get
จะดึงข้อมูลแบบเปลี่ยนแปลงได้และข้อมูลแบบเปลี่ยนแปลงได้ของ Repository นี้จะอยู่ในรูปแบบรายการภาพยนตร์ที่คุณสามารถดูได้
ฉันกำลังเรียกใช้เมธอดนี้ในวิวโมเดล