WEBVTT

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

2
00:00.860 --> 00:05.580

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

3
00:05.600 --> 00:11.700

ตอนนี้เรามาดูที่เลเยอร์แบบจำลองมุมมองในสถาปัตยกรรม
Mvvm Model View ViewModel กัน

4
00:11.720 --> 00:17.330

โมเดลมุมมองเป็นองค์ประกอบที่สำคัญซึ่งทำหน้าที่เป็นสะพานเชื่อมระหว่าง
UI

5
00:17.330 --> 00:19.040
ซึ่งเป็นมุมมอง และข้อมูลซึ่งเป็นโมเดล

6
00:19.040 --> 00:25.520

มันมีหน้าที่รับผิดชอบในการจัดการและเปิดเผยข้อมูลให้กับ
UI

7
00:25.520 --> 00:28.070

ในขณะที่แยกแยะตรรกะทางธุรกิจและปฏิสัมพันธ์กับแหล่งข้อมูลที่อยู่เบื้องหลังออกไป

8
00:28.070 --> 00:33.290
มาสร้างแพ็กเกจใหม่กันเถอะ
และฉันจะตั้งชื่อว่า view model

9
00:33.290 --> 00:40.220
และภายในแพ็กเกจนี้
ผมจะสร้างคลาสใหม่ชื่อว่า Main Activity
View Model

10
00:40.220 --> 00:47.320
View Model เปิดเผยข้อมูลให้กับส่วนประกอบ
UI
โดยใช้ข้อมูลแบบเรียลไทม์และกลไกการสังเกตอื่นๆ

11
00:47.330 --> 00:54.230

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

12
00:54.230 --> 01:00.390
ข้อมูลสดจะแจ้งให้ UI
ทราบเพื่อให้สามารถโต้ตอบและอัปเดตตามความเหมาะสม

13
01:00.390 --> 01:07.680
เพื่อบอก Android Studio
ว่าคลาสนี้จะทำหน้าที่เป็นวิวโมเดล
ฉันจะขยายมันจาก

14
01:07.710 --> 01:08.100
Android view model อีกครั้ง

15
01:08.100 --> 01:15.390
ทุกคนครับ

16
01:15.390 --> 01:17.040

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

17
01:17.040 --> 01:23.070
แต่เพื่อทบทวนอย่างรวดเร็ว
เรามีโมเดลมุมมองใน Android และโมเดลมุมมอง
Android

18
01:23.070 --> 01:26.130

ความแตกต่างระหว่างโมเดลมุมมองทั้งสองนี้คืออะไร?
โมเดลมุมมองของ Android

19
01:26.130 --> 01:32.340
และโมเดลมุมมอง (View model)

20
01:32.340 --> 01:39.030

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

21
01:39.030 --> 01:39.810
Mvvm
แต่มีวัตถุประสงค์ที่แตกต่างกันเล็กน้อยและมีกรณีการใช้งานที่แตกต่างกัน

22
01:39.810 --> 01:47.760
โมเดลมุมมองพื้นฐานนี้ไม่ได้เจาะจงสำหรับ
Android

23
01:47.760 --> 01:48.630

และไม่มีการอ้างอิงถึงแอปพลิเคชันหรือบริบทของ
Android

24
01:48.630 --> 01:55.170

ออกแบบมาเพื่อใช้ร่วมกับข้อมูลสดเพื่อเปิดเผยข้อมูลให้กับส่วนประกอบ
UI

25
01:55.170 --> 01:58.230

ตัวอย่างกิจกรรมและส่วนย่อยในลักษณะที่ตระหนักถึงวงจรชีวิต

26
01:58.230 --> 02:05.040
โดยปกติแล้ว อินสแตนซ์ของ ViewModel
จะถูกสร้างขึ้นโดยใช้

27
02:05.040 --> 02:06.360
ViewModel provider
และไม่จำเป็นต้องเข้าถึงคอมโพเนนต์เฉพาะของ
Android

28
02:06.360 --> 02:13.770
เราใช้ ViewModel
สำหรับเก็บและจัดการข้อมูลที่เกี่ยวข้องกับ

29
02:13.770 --> 02:16.770
UI เช่น
การเปลี่ยนแปลงการตั้งค่าและข้อมูลที่ควรคงอยู่เมื่อมีการหมุนหน้าจอ

30
02:16.770 --> 02:23.640
เหมาะสำหรับตรรกะที่ไม่เฉพาะเจาะจงกับ
Android เช่น
การแปลงข้อมูลและตรรกะการแสดงผล

31
02:23.640 --> 02:31.770
แต่เนื่องจากฉันกำลังใช้ Viewmodels
ในแอปพลิเคชัน Android
ที่เราจำเป็นต้องเข้าถึงคอมโพเนนต์เฉพาะของ
Android

32
02:31.770 --> 02:34.920
ฉันจะใช้ Android view model ที่นี่

33
02:34.920 --> 02:41.430
Android View model เป็นคลาสย่อยของ view
model ที่ตระหนักถึงบริบทของแอปพลิเคชัน
Android

34
02:41.430 --> 02:48.900

มันถูกออกแบบมาสำหรับกรณีที่โมเดลมุมมองจำเป็นต้องเข้าถึงคอมโพเนนต์เฉพาะของ
Android

35
02:48.900 --> 02:56.820
เช่น
การตั้งค่าทรัพยากรหรือบริบทของแอปพลิเคชัน

36
02:56.820 --> 02:58.950

และเหตุผลที่ฉันใช้มันที่นี่คือฉันจะส่งอินสแตนซ์ของแอปพลิเคชันไปยังรีโพสิตอรี

37
02:58.950 --> 03:07.350

ดังนั้นหากเรากลับไปที่ที่เก็บข้อมูลและที่นี่คือน้ำหนักของที่เก็บข้อมูลจากเราเพื่อส่งผ่านอินสแตนซ์ของแอปพลิเคชัน

38
03:07.350 --> 03:12.390
ดังนั้น
เพื่อที่จะส่งผ่านอินสแตนซ์ของแอปพลิเคชัน
ฉันจะใช้ Android view model

39
03:12.390 --> 03:18.120
ดังนั้น Android view model
จึงเหมาะเมื่อคุณต้องการทำงานเฉพาะของ

40
03:18.120 --> 03:23.160
Android ด้วย view model เช่น

41
03:23.160 --> 03:24.660
การเข้าถึงทรัพยากร การทำงานกับการตั้งค่า
การดำเนินการฐานข้อมูลที่ต้องการวัตถุ
context

42
03:24.660 --> 03:28.890
ฉันจะสร้างอินสแตนซ์จากคลังภาพยนตร์

43
03:28.890 --> 03:33.510
ฉันจะตั้งชื่อว่า repository
และที่นี่ฉันจะสร้างคอนสตรัคเตอร์

44
03:33.510 --> 03:40.740
เมื่อมีคลังข้อมูลนี้แล้ว
ฉันจะลบคลังข้อมูลภาพยนตร์นี้ออกจากพารามิเตอร์ของคอนสตรัคเตอร์

45
03:40.740 --> 03:44.370
และที่นี่ฉันต้องส่งคลังภาพยนตร์ใหม่

46
03:44.370 --> 03:52.650

ฉันกำลังเข้าถึงแอปพลิเคชันเพื่อให้คุณสามารถดูในคอนสตรัคเตอร์ของคลาสวิวโมเดลกิจกรรมหลักได้

47
03:52.650 --> 03:53.280


48
03:53.280 --> 04:00.690
มีแอปพลิเคชันถูกแทรกไว้ที่นี่

49
04:00.690 --> 04:01.410

และฉันจะใช้มันเพื่อส่งผ่านและสร้างอินสแตนซ์ของคลังภาพยนตร์

50
04:01.410 --> 04:06.180
นี่คือจุดประสงค์ของการใช้ Android view
model ซึ่งเป็นอินสแตนซ์ของแอปพลิเคชันนี้

51
04:06.180 --> 04:09.740
จากนั้นฉันจะดำเนินการติดตั้งข้อมูลสด

52
04:09.750 --> 04:19.140
ฉันจะสร้างเมธอดหนึ่งขึ้นมา
เพื่อดึงข้อมูลภาพยนตร์ทั้งหมด

53
04:19.140 --> 04:21.240

และประเภทข้อมูลที่เมธอดนี้จะส่งคืนจะเป็นรายการภาพยนตร์ที่รวมอยู่ในข้อมูลสด

54
04:21.240 --> 04:31.860
ข้อมูลสดของรายการภาพยนตร์ Alt+ Enter

55
04:31.860 --> 04:33.870
เพื่อนำเข้าคลาสของรายการและส่งคืน
ที่นี่ฉันจะเรียกใช้ตัวแปรของรีโพสิตอรี

56
04:33.870 --> 04:43.950
ดังนั้น Repository dot Get

57
04:43.950 --> 04:44.790

จะดึงข้อมูลแบบเปลี่ยนแปลงได้และข้อมูลแบบเปลี่ยนแปลงได้ของ
Repository
นี้จะอยู่ในรูปแบบรายการภาพยนตร์ที่คุณสามารถดูได้

58
04:44.790 --> 04:48.240
ฉันกำลังเรียกใช้เมธอดนี้ในวิวโมเดล


