ยินดีต้อนรับกลับมา
เราประสบความสำเร็จในการสร้างและเพิ่มการปรับปรุงใหม่ให้กับแอปพลิเคชันของเรา
ตอนนี้เรามาต่อที่ขั้นตอนถัดไป ซึ่งคือการแสดงข้อมูลในหน้า UI ของแอป
แอปนี้จะใช้โมเดลสถาปัตยกรรม Mvvm แบบ model view ViewModel
เราเสร็จสิ้นส่วนของแหล่งข้อมูลระยะไกลแล้ว
ตอนนี้เรามาที่ที่เก็บข้อมูลกัน ที่เก็บข้อมูลจะรวมอยู่ในส่วนของโมเดลหรือเลเยอร์
ภายในแพ็กเกจโมเดลนี้ ผมจะสร้างคลาส Java ใหม่ขึ้นมา และจะตั้งชื่อว่า movie repository
ใน Mvvm model View ViewModel Architectural
Pattern ใน Android repository เป็นรูปแบบการออกแบบที่ทำหน้าที่เป็นสะพานเชื่อมระหว่าง view
model ซึ่งเป็นชั้นการนำเสนอ กับแหล่งข้อมูล เช่น API เครือข่ายหรือฐานข้อมูลภายในเครื่อง
วัตถุประสงค์หลักของมันคือการแยกแยะรายละเอียดของแหล่งข้อมูลและให้ API ที่สะอาดสำหรับ
ViewModel ในการดึงและจัดการข้อมูล
ระบบเก็บข้อมูล (Repository) จะทำการสรุปข้อมูลจากแหล่งข้อมูลต่าง ๆ
ซึ่งอาจรวมถึงข้อมูลระยะไกลจากบริการเว็บ เช่น แอปพลิเคชันของเรา หรือข้อมูลท้องถิ่นจากฐานข้อมูลที่เราได้ทำไว้ในแอปก่อนหน้าโดยใช้ฐานข้อมูลห้อง
(room database) หรือกลไกการดึงข้อมูลอื่น ๆ
มันป้องกัน ViewModel จากความซับซ้อนของการโต้ตอบโดยตรงกับแหล่งข้อมูลเหล่านี้
ระบบจัดเก็บข้อมูลช่วยบังคับใช้หลักการแหล่งข้อมูลเดียว (Single Source
of Truth) ซึ่งหมายความว่าควรมีเพียงที่เดียวในแอปพลิเคชันของคุณที่รับผิดชอบในการจัดการและจัดเก็บข้อมูล
ซึ่งช่วยลดความเสี่ยงของความไม่สอดคล้องหรือข้อผิดพลาดที่อาจเกิดขึ้นจากการมีแหล่งข้อมูลหลายแหล่ง
ฉันต้องการดึงข้อมูลและจัดเก็บไว้ในรายการอาร์เรย์ของภาพยนตร์
ดังนั้นฉันจะเริ่มด้วยอาร์เรย์ส่วนตัว
รายชื่อนักแสดงภาพยนตร์
ฉันจะกด Enter เพื่อนำเข้าและจะตั้งชื่อว่า movies เท่ากับรายการอาร์เรย์ใหม่
และฉันจำเป็นต้องสร้างข้อมูลสดที่สามารถเปลี่ยนแปลงได้ เพราะฉันจะใช้ข้อมูลสดใน ViewModel
เพื่อดึงข้อมูลและแสดงผลใน UI
และข้อมูลสดที่เปลี่ยนแปลงได้นี้เป็นประเภทรายการของคลาสภาพยนตร์
ฉันจะเรียกมันว่าข้อมูลสดที่เปลี่ยนแปลงได้ซึ่งเทียบเท่ากับข้อมูลสดที่เปลี่ยนแปลงได้ใหม่
กรุณาอ้างอิงบทเรียนข้อมูลสดในส่วนก่อนหน้าเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับข้อมูลสด
ข้อมูลสดถูกใช้เพื่อเก็บรักษาและสังเกตการเปลี่ยนแปลงของข้อมูลในลักษณะที่ตระหนักถึงวงจรชีวิตภายในแอปพลิเคชัน
ใน Android ข้อมูลแบบเปลี่ยนแปลงได้ (Mutable live
data) เป็นการขยายของคลาสข้อมูลแบบสด (live data) และเพิ่มความสามารถในการแก้ไขหรือกำหนดข้อมูลที่บรรจุอยู่ภายใน
ดังนั้นสิ่งนี้จึงเรียกว่าข้อมูลสดที่เปลี่ยนแปลงได้
การไม่มีความสามารถในการแก้ไขข้อมูลที่เปลี่ยนแปลงได้ซึ่งทำงานอยู่ มีศักยภาพในการเพิ่มหรือแก้ไขข้อมูลที่บรรจุอยู่ภายใน
ข้อมูลสดที่เปลี่ยนแปลงได้ช่วยให้มั่นใจได้ว่าการเปลี่ยนแปลงข้อมูลจะสังเกตเห็นได้เฉพาะเมื่อคอมโพเนนต์อยู่ในสถานะที่ใช้งานอยู่หรือเริ่มต้นใหม่เท่านั้น ซึ่งช่วยป้องกันการรั่วไหลของหน่วยความจำและการอัปเดต
UI ที่ไม่จำเป็น
และต่างจากข้อมูลสดปกติที่อ่านได้เพียงครั้งเดียวเมื่อมีการตั้งค่า
ข้อมูลสดที่เปลี่ยนแปลงได้จะอนุญาตให้คุณแก้ไขข้อมูลที่เก็บไว้ผ่านวิธีการตั้งค่าค่าและค่าที่โพสต์
จากนั้นฉันจำเป็นต้องสร้างอินสแตนซ์แอปพลิเคชันส่วนตัวหรือแอปพลิเคชันบริบทเพื่อใช้มันในการรับบริบท เพราะฉันต้องส่งมันไปยังภาพยนตร์ยอดนิยมที่นี่ใน
API ของบริการ
และเพราะฉันจำเป็นต้องเข้าถึงทรัพยากรที่ฉันจะเพิ่มที่นี่ในภายหลัง
ไม่ต้องกังวล ฉันจะแสดงให้พวกคุณดูเอง
กด Alt พร้อม Enter เพื่อนำเข้าแอปพลิเคชัน
ตอนนี้ฉันต้องสร้างคอนสตรัคเตอร์ที่มีเพียงแอปพลิเคชันอีกครั้ง
ทุกคน ผมกำลังส่งต่อและสร้างคำสั่งแอปพลิเคชันนี้เพื่อเข้าถึงโฟลเดอร์ทรัพยากรในภายหลัง เพราะผมจะวาง API ของ string ไว้ที่นี่ภายในแท็ก
resources ในไฟล์ XML ของ string dot
อีกครั้ง ฉันจะสร้างเมธอดสาธารณะที่เรียกว่า Get Mutable
Live data และประเภทการคืนค่าควรเป็นข้อมูลสดที่แก้ไขได้
และนี่คือเมธอดเก็ทเตอร์สำหรับข้อมูลสดที่เปลี่ยนแปลงได้นี้
คุณสามารถสร้างมันได้โดยใช้ตัวรับและตัวตั้งหรือเหมือนกับรายการ move นี้
โอเค ดังนั้นวิธีนี้จะคืนค่านี้ และนี่คือเมธอด getter สำหรับสิ่งนี้
ฉันต้องการให้คุณตั้งใจอยู่กับฉันเพราะมันเป็นวิธีที่สำคัญมาก
ฉันจะเริ่มด้วยบริการ API สำหรับภาพยนตร์
บริการ API ของภาพยนตร์ที่เทียบเท่ากับอินสแตนซ์ retrofit dot get service
ในบริบทของการพัฒนาแอปพลิเคชัน Android และ retrofit คุณมักจะสร้างอินสแตนซ์ retrofit และใช้มันเพื่อสร้างอินสแตนซ์ของบริการ
อินสแตนซ์ของบริการเหล่านี้เป็นอินเทอร์เฟซที่กำหนดจุดสิ้นสุดของ API และวิธีการ Http ที่เกี่ยวข้อง
ได้แก่ get และ post
และในกรณีของเรา เราได้สร้างและกำหนดเมธอด get เพียงหนึ่งเมธอดเท่านั้น
จากนั้นคุณใช้ตัวอย่างของอินเทอร์เฟซบริการเพื่อทำการร้องขอ API
จากนั้นฉันจะเริ่มโดยการใช้คลาส call อีกครั้งและฉันต้องส่งผ่านผลลัพธ์
และเราได้พูดคุยเกี่ยวกับการโทรในวิดีโอคอลก่อนหน้านี้ ฉันเรียกมันว่าการโทรเท่ากับบริการ API ของภาพยนตร์ dot get
movies ที่นิยม alt plus enter เพื่อนำเข้าคลาสของการโทร
และที่นี่ฉันต้องการรับภาพยนตร์ยอดนิยม
ฉันต้องส่งสตริงที่มีคีย์ API
ดังนั้นสำหรับสิ่งนั้น ฉันจะสร้างสตริงที่นี่และจะตั้งชื่อว่า API underscore key และค่าของมัน
คีย์ API ของฉันที่ฉันเก็บไว้ในสมุดบันทึก
ฉันส่งผ่านวัตถุการสมัครที่นี่ในคอนสตรัคเตอร์เพื่อใช้และเข้าถึงไฟล์ dot
XML ของสตริงในโฟลเดอร์ทรัพยากร
ดังนั้นฉันจำเป็นต้องนำสิ่งนี้มา และฉันขอแนะนำให้เก็บสตริงทั้งหมดไว้ที่นี่ภายในไฟล์ Strings.xml
คุณสามารถข้ามและละเว้นการสมัครนี้ได้ และคุณสามารถกำหนด API ที่คุณสามารถใช้ได้ที่นี่เช่นนี้
นี่
ฉันจะเริ่มที่ application dot, จากนั้น get application context dot get string.
และที่นี่ฉันต้องพิมพ์ r dot string dot api alt
แล้วกด enter เพื่อนำเข้าคลาส r และคุณจะเห็นว่าฉันกำลังเข้าถึงไฟล์ทรัพยากร string
เนื่องจากฉันได้ใช้แอปพลิเคชันและได้รับแอปพลิเคชันอีกครั้ง
ทุกคน คุณสามารถลบแอปพลิเคชันนี้และส่งคีย์ API ได้โดยตรงที่นี่
แต่ฉันไม่ชอบแบบนี้