WEBVTT

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

2
00:01.010 --> 00:06.100
ในวิดีโอที่ผ่านมา
เราได้สร้างกิจกรรมการจัดวางเลย์เอาต์นี้
โดยเน้นที่ส่วนหลักและย้ายรายการในรายการ

3
00:06.110 --> 00:13.880
ในวิดีโอนี้
เราจะใช้ไลบรารีการผูกข้อมูลที่เราได้ดำเนินการในไฟล์
Build.gradle

4
00:13.880 --> 00:20.750
ของเรา
และเปิดใช้งานโดยใช้คุณสมบัติการสร้างการผูกข้อมูลเท่ากับ

5
00:20.750 --> 00:23.720
true
เพื่อเชื่อมโยงวิดเจ็ตเหล่านี้ในเลย์เอาต์กับตัวแปรข้อมูลที่สอดคล้องกันในกิจกรรมหลัก

6
00:23.720 --> 00:28.970
ฉันจะไม่สร้างตัวแปรใดๆ
ในเลย์เอาต์ของรายการภาพยนตร์

7
00:28.970 --> 00:32.270
ฉันจะสร้างตัวแปรข้อมูลใหม่

8
00:34.720 --> 00:37.150
และฉันจะตั้งชื่อมันว่าภาพยนตร์

9
00:37.150 --> 00:43.120

และชนิดของตัวแปรข้อมูลนี้คือคลาสภาพยนตร์ที่เราสร้างไว้ก่อนหน้านี้

10
00:43.120 --> 00:49.270
ดังนั้นในแอปภาพยนตร์นี้ ฉันเลือก modal
และเลือกคลาสภาพยนตร์นี้

11
00:49.270 --> 00:57.100
ไปเรียนวิชาภาพยนตร์กันอีกครั้ง
ในแพ็กเกจโมดัลของเรา มีหนึ่ง สอง สาม

12
00:57.130 --> 01:03.820
สี่ ห้า หก
หกตัวแปรที่เราสามารถเชื่อมโยงได้
ซึ่งฉันต้องการให้คุณให้ความสนใจกับฉัน

13
01:03.820 --> 01:05.770
ฉันต้องการแสดงรูปภาพที่นี่

14
01:05.770 --> 01:11.380
ฉันต้องการแสดงคะแนน
และฉันต้องการแสดงชื่อภาพยนตร์

15
01:11.380 --> 01:17.020
สำหรับเรื่องนั้น ฉันจะเริ่มจากข้อความก่อน
แล้วหลังจากนั้นจะย้อนกลับไปดูที่รูปภาพ

16
01:17.020 --> 01:18.370
ดังนั้นข้ามการดูภาพ

17
01:18.370 --> 01:26.440
ตอนนี้ ในมุมมองข้อความนี้
ฉันจะใช้ไวยากรณ์ของการผูกข้อมูลที่เชื่อมโยงกับข้อความเท่ากับ
at

18
01:26.440 --> 01:35.600
และไวยากรณ์ของการผูกข้อมูล movie dot
และฉันสามารถรับตัวแปรทั้งหมดเหล่านี้ได้

19
01:35.600 --> 01:40.850
เส้นทางโปสเตอร์ภาพรวม ID วันที่เผยแพร่
ชื่อ และคะแนนเฉลี่ยการโหวต

20
01:40.850 --> 01:48.140
ฉันจะใช้ชื่อเรื่อง
ดังนั้นนี่คือสำหรับชื่อเรื่อง
และมุมมองข้อความที่สองคือสำหรับคะแนน

21
01:48.140 --> 01:52.220
ดังนั้นสำหรับเรื่องนั้น
ฉันจะใช้ข้อความเหมือนเดิม

22
01:52.220 --> 01:56.750
และที่นี่ฉันจะใช้คะแนนเฉลี่ยจาก dot vote
ของภาพยนตร์

23
01:56.750 --> 01:58.940
แต่มีปัญหาอยู่ที่นี่

24
01:58.940 --> 02:07.610

ทำไมฉันไม่สามารถใช้การผูกข้อมูลแบบค่าเฉลี่ยจุดของภาพยนตร์ในมุมมองข้อความได้
เนื่องจากไม่ยอมรับตัวแปรชนิด double

25
02:07.610 --> 02:15.140
ดังนั้นถ้าเราไปที่ภาพยนตร์
เราจะเห็นว่ามันเป็นประเภทการผูกข้อมูลแบบคู่ที่ยอมรับเฉพาะตัวแปรชนิดสตริงเท่านั้น

26
02:15.140 --> 02:20.480

และผมได้กล่าวถึงข้อสังเกตที่สำคัญมากนี้ในวิดีโอที่ผ่านมาเกี่ยวกับการผูกข้อมูล

27
02:20.480 --> 02:22.550
วิธีแก้ไขคืออะไร? ฉันไม่สามารถเปลี่ยนค่า
double นี้ได้เพราะมันเป็นประเภท

28
02:22.550 --> 02:30.260
double ในค่าเฉลี่ยการโหวตของคำตอบ Json

29
02:30.260 --> 02:41.390
ฉันจำเป็นต้องรวมสิ่งนี้ไว้ในเมธอด double
dot ไปยังสตริง และสิ่งนี้จะแปลงค่า double
ให้เป็นสตริง

30
02:41.390 --> 02:41.900
โอเค

31
02:41.900 --> 02:49.640
ดังนั้นฉันกำลังแปลงค่า double
เป็นสตริงเพื่อแสดงมันภายใน text view
โดยใช้การผูกข้อมูล

32
02:49.640 --> 02:51.440
นี่คือหมายเหตุที่สำคัญมาก

33
02:51.440 --> 02:53.210
คุณควรให้ความสนใจกับมัน

34
02:53.210 --> 03:02.000
ดังนั้น ก่อนที่ฉันจะไปยังมุมมองภาพ
ฉันจำเป็นต้องตั้งค่าชื่อและค่าเฉลี่ยคะแนนเสียงให้เป็นของ
Bindesboll

35
03:02.000 --> 03:12.800
ฉันจะเลื่อนขึ้นเพื่อให้คลาสนี้
คลาสภาพยนตร์ สามารถสืบทอดจากพื้นฐาน

36
03:12.800 --> 03:14.840
observable
และฉันกำลังนำเข้าสิ่งนี้จากไลบรารีการผูกข้อมูล

37
03:14.840 --> 03:22.220
เมื่อคุณขยายคลาสพื้นฐานที่สังเกตได้ (base
observable class)
ในคลาสโมดอลหรือคลาสข้อมูลของคุณ

38
03:22.220 --> 03:29.480
คุณกำลังเปิดใช้งานการผูกข้อมูลอัตโนมัติ
(automatic data binding)
และทำให้การผูกข้อมูลระหว่างวัตถุข้อมูลกับส่วนประกอบในไฟล์เลย์เอาต์ของแอปของคุณง่ายขึ้น

39
03:29.480 --> 03:36.980
ดังนั้น เพื่อบอก Android Studio ว่า text
view นี้เชื่อมโยงกับตัวแปร title

40
03:36.980 --> 03:46.370
นี้ สิ่งที่ฉันต้องทำคือทำการ implement
หรือ extend base observable และฉันต้องบอก

41
03:46.370 --> 03:48.980
Android Studio ว่าเมธอด get title
นี้เป็นเมธอดที่สามารถ bind ได้

42
03:48.980 --> 03:57.140
คำอธิบายประกอบเหล่านี้เพิ่มสัญญาณ Bindable
ให้กับ binding ข้อมูล
ซึ่งระบุว่าพร็อพเพอร์ตี้เหล่านี้สามารถผูกกับคอมโพเนนต์
UI ได้

43
03:57.150 --> 04:03.520

ดังนั้นนี่คือการรับชื่อเรื่องและการรับคะแนนเสียงเฉลี่ยก็จะสามารถผูกมัดได้เช่นกัน

44
04:03.590 --> 04:10.880
เมื่อใดก็ตามที่คุณต้องการผูกคุณสมบัติใดๆ
ของคอมโพเนนต์ UI ในเลย์เอาต์

45
04:10.880 --> 04:16.190

คุณควรขยายคลาสพื้นฐานที่สังเกตได้และเพิ่มคำอธิบายประกอบ
add Bindable ให้กับคุณสมบัติดังกล่าว

46
04:16.190 --> 04:22.910

โดยการขยายฐานที่สังเกตได้และใช้การผูกข้อมูล
คุณสามารถสร้างกลไกการผูกข้อมูลที่แข็งแกร่งและมีประสิทธิภาพซึ่งทำให้การซิงโครไนซ์ของวัตถุข้อมูลของคุณกับ

47
04:22.910 --> 04:29.660
UI ของคุณเป็นไปโดยอัตโนมัติ

48
04:29.660 --> 04:34.790

ลดปริมาณโค้ดที่ต้องทำซ้ำซึ่งจำเป็นสำหรับการจัดการการอัปเดตเหล่านี้ด้วยตนเอง

49
04:34.790 --> 04:42.770

และสิ่งสุดท้ายที่คุณต้องกล่าวถึงคือคุณสมบัติการแจ้งเตือนที่เปลี่ยนแปลงในทุกเมธอดการตั้งค่า

50
04:42.770 --> 04:49.340
ดังนั้นทุกครั้งที่คุณใช้การผูกข้อมูล
คุณควรขยายคลาสพื้นฐานที่เป็น observable
และเพิ่ม bindable สำหรับ getter

51
04:49.340 --> 04:53.540
และเพิ่มคุณสมบัติ notify property changed
ให้กับ setter

52
04:53.540 --> 05:04.220
ดังนั้นให้แจ้งวิธีการเปลี่ยนแปลงคุณสมบัติ
และที่นี่ฉันจะระบุชื่อ VR dot
และสำหรับค่าเฉลี่ยการโหวต
ฉันจำเป็นต้องระบุหรือใช้

53
05:04.220 --> 05:13.550
notify property changed VR dot

54
05:13.550 --> 05:20.180
vote average
การแจ้งการเปลี่ยนแปลงคุณสมบัติเป็นวิธีการที่จัดเตรียมโดยคลาส
observable พื้นฐาน

55
05:20.180 --> 05:28.340
ซึ่งใช้ร่วมกับไลบรารี Android data binding
เพื่อแจ้งให้กรอบการผูกข้อมูลทราบว่ามีการเปลี่ยนแปลงคุณสมบัติในวัตถุข้อมูล

56
05:28.340 --> 05:29.840
และ BR ย่อมาจาก Binding Resources

57
05:29.840 --> 05:34.250

นี่คือคลาสที่ถูกสร้างขึ้นโดยอัตโนมัติโดยไลบรารีการผูกข้อมูลของ
Android

58
05:34.280 --> 05:42.830

และมันประกอบด้วยค่าคงที่จำนวนเต็มซึ่งแสดงถึงนิพจน์การผูกที่ใช้ในไฟล์เลย์เอาต์ของคุณ

59
05:42.830 --> 05:48.830

ชื่อเรื่องและคะแนนเฉลี่ยการโหวตหมายถึงทรัพย์สินที่คุณต้องการแจ้งให้ทราบ

60
05:48.870 --> 05:50.510
การผูกข้อมูลเกี่ยวกับ

61
05:50.510 --> 05:58.610
ดังนั้น องค์ประกอบ UI
ที่ผูกกับคุณสมบัตินี้จะอัปเดตโดยอัตโนมัติเพื่อสะท้อนค่าใหม่

62
05:58.610 --> 06:04.460

ดังนั้นนี่คือวิธีที่เราใช้การผูกข้อมูลในคลาสข้อมูลภาพยนตร์


