ยินดีต้อนรับกลับมา
เราได้ดำเนินการกับแหล่งข้อมูลระยะไกลและที่เก็บข้อมูลเสร็จเรียบร้อยแล้ว
ดังนั้นเราจึงเสร็จสิ้นชั้นของแบบจำลอง
ตอนนี้เรามาดูที่เลเยอร์ของโมเดลมุมมองกัน
โมเดลมุมมองเป็นองค์ประกอบที่สำคัญซึ่งรับผิดชอบในการจัดการและจัดเตรียมข้อมูลให้กับ UI
หรือมุมมอง โดยยังคงแยกความรับผิดชอบออกจากกัน
เป็นส่วนหนึ่งขององค์ประกอบสถาปัตยกรรมของ Android และทำหน้าที่เป็นสะพานเชื่อมระหว่างแหล่งข้อมูล
โมเดล และส่วนประกอบ UI
วิว
วัตถุประสงค์หลักของโมเดลมุมมองคือการจัดเก็บและจัดการข้อมูลที่เกี่ยวข้องกับ UI เพื่อให้แน่ใจว่าข้อมูลนี้ยังคงอยู่แม้จะมีการเปลี่ยนแปลงการกำหนดค่า เช่น
การหมุนอุปกรณ์ และทำให้ UI ยังคงตอบสนองได้
เรามาไปที่ Android Studio และเรียนรู้วิธีเพิ่มและสร้างวิวโมเดลกัน
ฉันจะสร้างแพ็กเกจใหม่ ฉันจะตั้งชื่อว่า View
Model และตรวจสอบให้แน่ใจว่าคุณตั้งชื่อแพ็กเกจของคุณด้วยตัวอักษรเล็กทั้งหมด
จากนั้นภายในแพ็กเกจนี้ ฉันจะสร้างคลาส Java ใหม่ และตั้งชื่อว่า Quiz View Model
อีกครั้งนะครับทุกคน ผมต้องการให้พวกคุณตั้งใจอยู่กับผม
มีแนวคิดมากมาย มีรายละเอียดมากมาย
กรุณาไปที่ส่วนของโมเดลมุมมองเพื่อศึกษาเพิ่มเติมเกี่ยวกับโมเดลมุมมอง
แต่อย่ากังวลไป ฉันจะอธิบายให้ฟัง
ทุกสิ่งที่ฉันเขียนจะขยายมุมมองของโมเดล
เรามีโมเดลมุมมองสองประเภท คือ โมเดลมุมมอง
Android หรือโมเดลมุมมอง และทั้งสองมาจากแพ็กเกจวงจรชีวิต
ทั้งโมเดลมุมมองและโมเดลมุมมอง Android เป็นส่วนประกอบที่จัดเตรียมโดยสถาปัตยกรรม Android
ซึ่งเป็นส่วนประกอบที่มีบทบาทในการจัดการและคงข้อมูลที่เกี่ยวข้องกับ UI ไว้ตลอดการเปลี่ยนแปลงการกำหนดค่า
อย่างไรก็ตาม พวกมันมีวัตถุประสงค์ที่แตกต่างกันเล็กน้อย และมีวงจรชีวิตที่แตกต่างกัน
ตัวอย่างเช่น โมเดลมุมมองปกติเป็นองค์ประกอบหนึ่งขององค์ประกอบสถาปัตยกรรมของ Android และเป็นส่วนหนึ่งของรูปแบบ
mVVM model view ViewModel
นี่คือคลาสพื้นฐานสำหรับโมเดลมุมมอง และไม่ได้ผูกกับเฟรมเวิร์กของ Android
นี่คือโมเดลมุมมอง
มันเป็นคลาสเชิงนามธรรม
มันถูกออกแบบมาเพื่อจัดเก็บและจัดการข้อมูลที่เกี่ยวข้องกับ UI และให้ชั้นนามธรรมระหว่างส่วนประกอบ
UI, กิจกรรม, และชิ้นส่วนย่อยกับแหล่งข้อมูลที่อยู่เบื้องหลัง
ตัวอย่างเช่น ฐานข้อมูล เครือข่าย บริการ หรือคลังข้อมูล
การแยกความกังวลนี้ช่วยให้รักษาสถาปัตยกรรมที่สะอาดและทดสอบได้ง่าย แต่โมเดลมุมมองไม่ทราบถึงแอปพลิเคชัน Android หรือบริบท
และไม่ควรใช้เพื่อเข้าถึงส่วนประกอบเฉพาะของ Android เช่น ระบบ,
บริการ, ทรัพยากร หรือความชอบ
มันทำให้การจัดการข้อมูลบริสุทธิ์และตรรกะการนำเสนอเป็นเรื่องง่ายมาก
ในขณะที่โมเดล View ของ Android
เป็นคลาสย่อยของโมเดล view ที่ตระหนักถึงบริบทของแอปพลิเคชัน Android
สิ่งนี้ช่วยให้คุณสามารถเข้าถึงส่วนประกอบเฉพาะของ Android เช่น บริการระบบ,
ทรัพยากร, และการตั้งค่า ทำให้เหมาะสมสำหรับสถานการณ์ที่คุณต้องการบริบททั่วทั้งแอปพลิเคชันหรือการเข้าถึงบริการระบบ
ในตัวอย่างนี้ ฉันจะไม่เข้าถึงบริบท ดังนั้นฉันจะลบ Android ออก
ฉันจะใช้โมเดลมุมมอง
ฉันไม่จำเป็นต้องเข้าถึงบริบท
โอเค ฉันจะเริ่มด้วยการสร้างคลังแบบทดสอบ
อินสแตนซ์รีโพสิตอรีเท่ากับรีโพสิตอรีแบบทดสอบใหม่
ที่เก็บข้อมูลนี้ใช้เพื่อโต้ตอบกับแหล่งข้อมูลตัวอย่างเช่น API ในแอปพลิเคชันนี้และดึงข้อมูล
จากนั้นฉันต้องสร้างข้อมูลสดของประเภทคำถาม
รายการคำถาม
ข้อมูลสด
ข้อมูลสดคือคลาสที่เก็บข้อมูลซึ่งสามารถสังเกตได้ และอนุญาตให้คุณสังเกตการเปลี่ยนแปลงในข้อมูลที่อยู่เบื้องหลัง
ในกรณีนี้ คาดว่าจะเก็บวัตถุคำถาม
ซึ่งบ่งชี้ว่าตั้งใจจะเก็บรายการคำถาม
จากนั้นฉันจะสร้างคอนสตรัคเตอร์คอนสตรัคเตอร์ว่างสำหรับโมเดลมุมมองแบบทดสอบ
และภายในนั้นฉันจะเริ่มต้นรายการคำถาม
ระบบคลังข้อมูลแบบเรียลไทม์ dot รับคำถามจาก API
วิธีนี้ใช้สำหรับดึงคำถามจาก API
มีแนวโน้มว่าจะส่งคืนวัตถุข้อมูลแบบเรียลไทม์ซึ่งประกอบด้วยวัตถุรายการคำถาม
ดังนั้นถ้าเราลองย้อนกลับไปดู คุณจะเห็นว่าจาก repository นั้น ผลลัพธ์ที่ส่งกลับมาเป็นข้อมูลแบบเรียลไทม์ของรายการคำถาม
จากนั้นฉันต้องสร้างเมธอดที่เรียกว่า get รายการคำถาม หรือ
รายการคำถาม รายการสด หรือฉันสามารถสร้างมันได้
มันคือเมธอดเก็ทเตอร์
สำหรับข้อมูลสดนี้ คุณสามารถคลิก Alt Plus Insert Getter และเลือกสิ่งนี้ หรือคุณสามารถเขียนมันได้
นี่คือเมธอดเก็ทเตอร์ที่อนุญาต
ส่วนประกอบภายนอก
ตัวอย่างส่วนประกอบ UI สำหรับเข้าถึงรายการคำถาม
ข้อมูลสดที่ส่งคืนรายการคำถาม
ข้อมูลสดในฐานะข้อมูลสดของประเภท
รายการคำถาม
ขอแสดงความยินดี เราได้สร้างโมเดลมุมมองเสร็จเรียบร้อยแล้ว