WEBVTT

1
00:00.110 --> 00:00.920
ยินดีต้อนรับกลับมา

2
00:00.920 --> 00:04.270

เราได้ดำเนินการกับแหล่งข้อมูลระยะไกลและที่เก็บข้อมูลเสร็จเรียบร้อยแล้ว

3
00:04.280 --> 00:06.460
ดังนั้นเราจึงเสร็จสิ้นชั้นของแบบจำลอง

4
00:06.470 --> 00:08.570
ตอนนี้เรามาดูที่เลเยอร์ของโมเดลมุมมองกัน

5
00:08.600 --> 00:15.260

โมเดลมุมมองเป็นองค์ประกอบที่สำคัญซึ่งรับผิดชอบในการจัดการและจัดเตรียมข้อมูลให้กับ
UI

6
00:15.290 --> 00:17.930
หรือมุมมอง
โดยยังคงแยกความรับผิดชอบออกจากกัน

7
00:17.930 --> 00:24.770
เป็นส่วนหนึ่งขององค์ประกอบสถาปัตยกรรมของ
Android
และทำหน้าที่เป็นสะพานเชื่อมระหว่างแหล่งข้อมูล

8
00:24.770 --> 00:26.360
โมเดล และส่วนประกอบ UI

9
00:26.360 --> 00:26.960
วิว

10
00:26.960 --> 00:34.220

วัตถุประสงค์หลักของโมเดลมุมมองคือการจัดเก็บและจัดการข้อมูลที่เกี่ยวข้องกับ
UI
เพื่อให้แน่ใจว่าข้อมูลนี้ยังคงอยู่แม้จะมีการเปลี่ยนแปลงการกำหนดค่า
เช่น

11
00:34.220 --> 00:41.900
การหมุนอุปกรณ์ และทำให้ UI ยังคงตอบสนองได้

12
00:41.900 --> 00:46.580
เรามาไปที่ Android Studio
และเรียนรู้วิธีเพิ่มและสร้างวิวโมเดลกัน

13
00:46.580 --> 00:54.280
ฉันจะสร้างแพ็กเกจใหม่ ฉันจะตั้งชื่อว่า
View

14
00:54.290 --> 00:55.520
Model
และตรวจสอบให้แน่ใจว่าคุณตั้งชื่อแพ็กเกจของคุณด้วยตัวอักษรเล็กทั้งหมด

15
00:55.520 --> 01:03.230
จากนั้นภายในแพ็กเกจนี้ ฉันจะสร้างคลาส Java
ใหม่ และตั้งชื่อว่า Quiz View Model

16
01:03.230 --> 01:06.440
อีกครั้งนะครับทุกคน
ผมต้องการให้พวกคุณตั้งใจอยู่กับผม

17
01:06.440 --> 01:09.650
มีแนวคิดมากมาย มีรายละเอียดมากมาย

18
01:09.650 --> 01:15.170

กรุณาไปที่ส่วนของโมเดลมุมมองเพื่อศึกษาเพิ่มเติมเกี่ยวกับโมเดลมุมมอง

19
01:15.170 --> 01:17.000
แต่อย่ากังวลไป ฉันจะอธิบายให้ฟัง

20
01:17.000 --> 01:20.870
ทุกสิ่งที่ฉันเขียนจะขยายมุมมองของโมเดล

21
01:20.870 --> 01:29.240
เรามีโมเดลมุมมองสองประเภท คือ โมเดลมุมมอง

22
01:29.240 --> 01:31.130
Android หรือโมเดลมุมมอง
และทั้งสองมาจากแพ็กเกจวงจรชีวิต

23
01:31.130 --> 01:37.970
ทั้งโมเดลมุมมองและโมเดลมุมมอง Android
เป็นส่วนประกอบที่จัดเตรียมโดยสถาปัตยกรรม
Android

24
01:37.970 --> 01:44.840

ซึ่งเป็นส่วนประกอบที่มีบทบาทในการจัดการและคงข้อมูลที่เกี่ยวข้องกับ
UI ไว้ตลอดการเปลี่ยนแปลงการกำหนดค่า

25
01:44.840 --> 01:49.400
อย่างไรก็ตาม
พวกมันมีวัตถุประสงค์ที่แตกต่างกันเล็กน้อย
และมีวงจรชีวิตที่แตกต่างกัน

26
01:49.400 --> 01:56.450
ตัวอย่างเช่น
โมเดลมุมมองปกติเป็นองค์ประกอบหนึ่งขององค์ประกอบสถาปัตยกรรมของ
Android และเป็นส่วนหนึ่งของรูปแบบ

27
01:56.450 --> 01:59.240
mVVM model view ViewModel

28
01:59.240 --> 02:06.410
นี่คือคลาสพื้นฐานสำหรับโมเดลมุมมอง
และไม่ได้ผูกกับเฟรมเวิร์กของ Android

29
02:06.410 --> 02:07.730
นี่คือโมเดลมุมมอง

30
02:07.730 --> 02:09.080
มันเป็นคลาสเชิงนามธรรม

31
02:09.080 --> 02:14.990

มันถูกออกแบบมาเพื่อจัดเก็บและจัดการข้อมูลที่เกี่ยวข้องกับ
UI และให้ชั้นนามธรรมระหว่างส่วนประกอบ

32
02:14.990 --> 02:19.310
UI, กิจกรรม,
และชิ้นส่วนย่อยกับแหล่งข้อมูลที่อยู่เบื้องหลัง

33
02:19.310 --> 02:22.610
ตัวอย่างเช่น ฐานข้อมูล เครือข่าย บริการ
หรือคลังข้อมูล

34
02:22.610 --> 02:30.140

การแยกความกังวลนี้ช่วยให้รักษาสถาปัตยกรรมที่สะอาดและทดสอบได้ง่าย
แต่โมเดลมุมมองไม่ทราบถึงแอปพลิเคชัน
Android หรือบริบท

35
02:30.140 --> 02:37.520

และไม่ควรใช้เพื่อเข้าถึงส่วนประกอบเฉพาะของ
Android เช่น ระบบ,

36
02:37.520 --> 02:40.970
บริการ, ทรัพยากร หรือความชอบ

37
02:40.970 --> 02:47.270

มันทำให้การจัดการข้อมูลบริสุทธิ์และตรรกะการนำเสนอเป็นเรื่องง่ายมาก

38
02:47.270 --> 02:55.700
ในขณะที่โมเดล View ของ Android

39
02:55.700 --> 02:56.450
เป็นคลาสย่อยของโมเดล view
ที่ตระหนักถึงบริบทของแอปพลิเคชัน Android

40
02:56.450 --> 03:04.430

สิ่งนี้ช่วยให้คุณสามารถเข้าถึงส่วนประกอบเฉพาะของ
Android เช่น บริการระบบ,

41
03:04.430 --> 03:11.480
ทรัพยากร, และการตั้งค่า
ทำให้เหมาะสมสำหรับสถานการณ์ที่คุณต้องการบริบททั่วทั้งแอปพลิเคชันหรือการเข้าถึงบริการระบบ

42
03:11.480 --> 03:17.500
ในตัวอย่างนี้ ฉันจะไม่เข้าถึงบริบท
ดังนั้นฉันจะลบ Android ออก

43
03:17.510 --> 03:18.950
ฉันจะใช้โมเดลมุมมอง

44
03:18.950 --> 03:21.620
ฉันไม่จำเป็นต้องเข้าถึงบริบท

45
03:21.620 --> 03:26.450
โอเค ฉันจะเริ่มด้วยการสร้างคลังแบบทดสอบ

46
03:26.450 --> 03:31.340

อินสแตนซ์รีโพสิตอรีเท่ากับรีโพสิตอรีแบบทดสอบใหม่

47
03:31.340 --> 03:38.360

ที่เก็บข้อมูลนี้ใช้เพื่อโต้ตอบกับแหล่งข้อมูลตัวอย่างเช่น
API ในแอปพลิเคชันนี้และดึงข้อมูล

48
03:38.390 --> 03:43.820
จากนั้นฉันต้องสร้างข้อมูลสดของประเภทคำถาม

49
03:43.820 --> 03:45.350
รายการคำถาม

50
03:45.350 --> 03:46.280
ข้อมูลสด

51
03:46.310 --> 03:55.070

ข้อมูลสดคือคลาสที่เก็บข้อมูลซึ่งสามารถสังเกตได้
และอนุญาตให้คุณสังเกตการเปลี่ยนแปลงในข้อมูลที่อยู่เบื้องหลัง

52
03:55.070 --> 04:03.500
ในกรณีนี้ คาดว่าจะเก็บวัตถุคำถาม

53
04:03.500 --> 04:05.600
ซึ่งบ่งชี้ว่าตั้งใจจะเก็บรายการคำถาม

54
04:05.600 --> 04:13.520

จากนั้นฉันจะสร้างคอนสตรัคเตอร์คอนสตรัคเตอร์ว่างสำหรับโมเดลมุมมองแบบทดสอบ

55
04:13.520 --> 04:14.780
และภายในนั้นฉันจะเริ่มต้นรายการคำถาม

56
04:14.780 --> 04:18.710
ระบบคลังข้อมูลแบบเรียลไทม์ dot รับคำถามจาก
API

57
04:18.740 --> 04:23.930
วิธีนี้ใช้สำหรับดึงคำถามจาก API

58
04:23.960 --> 04:30.680

มีแนวโน้มว่าจะส่งคืนวัตถุข้อมูลแบบเรียลไทม์ซึ่งประกอบด้วยวัตถุรายการคำถาม

59
04:30.680 --> 04:37.970
ดังนั้นถ้าเราลองย้อนกลับไปดู
คุณจะเห็นว่าจาก repository นั้น
ผลลัพธ์ที่ส่งกลับมาเป็นข้อมูลแบบเรียลไทม์ของรายการคำถาม

60
04:37.970 --> 04:48.950
จากนั้นฉันต้องสร้างเมธอดที่เรียกว่า get
รายการคำถาม หรือ

61
04:48.950 --> 04:49.220
รายการคำถาม รายการสด
หรือฉันสามารถสร้างมันได้

62
04:49.220 --> 04:50.420
มันคือเมธอดเก็ทเตอร์

63
04:50.420 --> 04:57.770
สำหรับข้อมูลสดนี้ คุณสามารถคลิก Alt Plus
Insert Getter และเลือกสิ่งนี้
หรือคุณสามารถเขียนมันได้

64
04:57.770 --> 04:59.720
นี่คือเมธอดเก็ทเตอร์ที่อนุญาต

65
05:00.240 --> 05:01.680
ส่วนประกอบภายนอก

66
05:01.710 --> 05:05.830
ตัวอย่างส่วนประกอบ UI
สำหรับเข้าถึงรายการคำถาม

67
05:05.850 --> 05:08.940
ข้อมูลสดที่ส่งคืนรายการคำถาม

68
05:08.940 --> 05:12.030
ข้อมูลสดในฐานะข้อมูลสดของประเภท

69
05:12.030 --> 05:13.760
รายการคำถาม

70
05:13.770 --> 05:17.250
ขอแสดงความยินดี
เราได้สร้างโมเดลมุมมองเสร็จเรียบร้อยแล้ว


