WEBVTT

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

2
00:01.070 --> 00:07.130
ในวิดีโอนี้เราจะดึงข้อมูลจาก Firebase
และแสดงผลใน recycler view
ของแอปพลิเคชันของเรา

3
00:07.130 --> 00:12.650

ดังนั้นที่นี่ฉันจำเป็นต้องอ้างอิงฐานข้อมูลและฐานข้อมูล
Firebase

4
00:12.650 --> 00:14.240

และนี่คือสิ่งที่เราได้เรียนรู้มาก่อนหน้านี้

5
00:14.240 --> 00:18.290
และในเมธอด Oncreate
เราจำเป็นต้องทำการเริ่มต้นวัตถุเหล่านี้

6
00:18.290 --> 00:23.540
ฐานข้อมูลเท่ากับฐานข้อมูล Firebase จุด get
อินสแตนซ์

7
00:23.540 --> 00:30.710
และที่นี่
ฐานข้อมูลอ้างอิงอ้างอิงเท่ากับฐานข้อมูลจุดรับอ้างอิง

8
00:30.710 --> 00:33.880
ที่นี่ฉันจำเป็นต้องระบุการอ้างอิงของโหนด

9
00:33.890 --> 00:36.530
ไปที่คอนโซลของ Firebase

10
00:36.530 --> 00:40.760
และนี่คือฐานข้อมูลแบบเรียลไทม์ของเรา
ฉันคลิกที่นี่ที่เครื่องหมายบวกนี้

11
00:40.760 --> 00:43.790
และฉันจะเพิ่มโหนดที่เรียกว่าผู้ใช้

12
00:43.790 --> 00:45.950
อย่าระบุค่าที่นี่

13
00:45.950 --> 00:50.390

เพียงคลิกเครื่องหมายบวกนี้เพื่อสร้างคู่คีย์-ค่าแบบซ้อน

14
00:50.390 --> 00:53.600
ที่นี่ฉันจะระบุหมายเลขผู้ใช้หนึ่ง

15
00:53.600 --> 00:55.880
อีกครั้งนะครับทุกคน อย่าระบุค่าใดๆ

16
00:55.880 --> 00:56.810
คลิกเครื่องหมายบวก

17
00:56.810 --> 01:01.160

และนี่คือคู่ค่าหลักที่ฉันจะกล่าวถึงสำหรับผู้ใช้ทุกคน

18
01:01.160 --> 01:02.750
กรุณารับฟัง

19
01:02.750 --> 01:07.340
ฉันกำลังดึงวัตถุที่กำหนดเองจากไฟร์เบส

20
01:07.340 --> 01:13.820
พวกมันควรตรงกับคลาสโมดัลของฉัน
มิฉะนั้นฉันจะต้องใช้ Json หรือ mochi

21
01:13.850 --> 01:18.830
นี่คือตัวแปลง Json
และใช้สำหรับการแปลงข้อมูลเป็นลำดับและการแปลงข้อมูลกลับ

22
01:18.830 --> 01:24.410

และผมได้พูดถึงสิ่งเหล่านี้ในส่วนก่อนหน้านี้แล้ว
โดยเฉพาะในส่วน Retrofit Plus mVVM

23
01:24.410 --> 01:32.720
แต่เพื่อให้ทุกอย่างง่ายและราบรื่น
ฉันจะคัดลอกฟิลด์และวางที่นี่

24
01:32.720 --> 01:36.800
ในคีย์นี้ ฉันระบุว่าชื่อแรกคือ แจ็ค

25
01:36.800 --> 01:40.610
กด Enter
แล้วคุณจะเห็นชื่อผู้ใช้ของผู้ใช้คนแรก

26
01:40.610 --> 01:43.280
หนึ่งในโหนดผู้ใช้คือแจ็ค

27
01:43.280 --> 01:47.420

และที่นี่ฉันต้องเพิ่มกุญแจที่สองซึ่งคือหมายเลขโทรศัพท์

28
01:47.420 --> 01:48.770
คัดลอกแล้ววาง

29
01:48.770 --> 01:53.450
ค่าจะเป็น 123456789

30
01:53.450 --> 01:54.380
กด Enter

31
01:54.380 --> 01:59.030

คุณสามารถเห็นผู้ใช้หนึ่งมีสองฟิลด์คือหมายเลขโทรศัพท์และชื่อผู้ใช้

32
01:59.030 --> 02:01.580
อีกครั้งครับ ผมจะกดเครื่องหมายบวกนี้

33
02:01.580 --> 02:04.250
คัดลอกผู้ใช้กลุ่มและวางที่นี่

34
02:04.250 --> 02:07.130
และเพื่อนๆ นี่คือผู้ใช้คนแรก

35
02:07.130 --> 02:08.870
ฉันจะสร้างผู้ใช้ใหม่

36
02:08.870 --> 02:11.690
ดังนั้นฉันจะไปที่โหนดผู้ใช้

37
02:11.690 --> 02:15.050
ผู้ใช้หมายเลขสอง กรุณาอย่ากดเพิ่ม

38
02:15.050 --> 02:17.990

กดเครื่องหมายบวกเพื่อสร้างสิ่งของที่ซ้อนกัน

39
02:18.020 --> 02:27.380
อีกครั้งครับ
คุณควรระบุคีย์ให้เหมือนกันทุกประการสำหรับผู้ใช้ทุกคนเพื่อให้ได้คีย์ที่ถูกต้องเมื่อดึงข้อมูลในแอปพลิเคชัน

40
02:27.380 --> 02:30.230
Android

41
02:30.230 --> 02:37.670
ดังนั้นอีกครั้งนะครับทุกคน สำหรับทุกไอเท็ม

42
02:37.670 --> 02:39.860

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

43
02:39.860 --> 02:42.830
ชื่อผู้ใช้หมายเลขสองคือ อาลี

44
02:42.920 --> 02:48.920
ฉันคลิกเพิ่ม
และที่นี่ในหมายเลขผู้ใช้ที่สอง
ฉันจะสร้างหมายเลขโทรศัพท์

45
02:48.950 --> 02:52.790
ค่าจะเป็น 88776655

46
02:52.790 --> 02:53.300
เข้า

47
02:53.300 --> 02:58.160
และกลุ่มผู้ใช้ครับ
มันต้องใช้ตัวพิมพ์ใหญ่น้อยตัว

48
02:58.190 --> 03:00.680
นี่มาจากกลุ่มทำงาน

49
03:00.680 --> 03:03.380
งานผู้ใช้ ฉันจะเพิ่มผู้ใช้ใหม่

50
03:14.910 --> 03:22.650
ฐานข้อมูลของเราประกอบด้วยโหนดหนึ่งชื่อว่า
users และภายในโหนดนี้มีโหนดย่อยสามโหนดคือ
user one, user

51
03:22.650 --> 03:25.420
two และ user three รวมถึงคู่คีย์-ค่า

52
03:25.440 --> 03:27.680
คู่ค่าสำคัญสามคู่สำหรับผู้ใช้แต่ละราย

53
03:27.690 --> 03:29.670
กรุณาทุกคนให้ความสนใจ

54
03:29.670 --> 03:38.190
กุญแจเหล่านี้ต้องตรงกับผู้ใช้ทุกคน
และโหนดทุกโหนดเพื่อให้สามารถดึงข้อมูลได้ถูกต้องใน
Android Studio

55
03:38.190 --> 03:45.600
ตอนนี้เรามาเริ่มกิจกรรมหลักกัน
และที่นี่ฉันต้องระบุโหนดผู้ใช้
และกรุณาให้ความสนใจ

56
03:45.600 --> 03:46.620
ต้องคำนึงถึงตัวพิมพ์เล็กและใหญ่

57
03:46.620 --> 03:53.610
และที่นี่ฉันจะเลื่อนลง
และก่อนที่จะแจ้งเตือนว่าชุดข้อมูลมีการเปลี่ยนแปลง
ฉันจำเป็นต้องดึงข้อมูลจาก

58
03:53.610 --> 03:54.750
Firebase เข้าสู่ RecyclerView

59
03:54.750 --> 03:56.250
ดังนั้นกรุณาให้ความสนใจ

60
03:56.250 --> 04:00.510

ฉันจะใช้การอ้างอิงฐานข้อมูลพร้อมเพิ่มมูลค่า

61
04:00.510 --> 04:02.760
ค่าใหม่ของตัวฟังเหตุการณ์

62
04:02.760 --> 04:03.780
ผู้ฟังเหตุการณ์

63
04:03.780 --> 04:04.560
เพิ่มคุณค่า

64
04:04.560 --> 04:11.730

ผู้ฟังเหตุการณ์คือเมธอดที่ใช้ในการแนบผู้ฟังเหตุการณ์เข้ากับตำแหน่งเฉพาะในฐานข้อมูล

65
04:11.730 --> 04:16.920

ผู้ฟังเหตุการณ์นี้จะตรวจสอบการเปลี่ยนแปลงที่อ้างอิงฐานข้อมูลที่ระบุไว้

66
04:16.920 --> 04:24.120
ในกรณีนี้
มันอยู่ที่โหนดของผู้ใช้และอนุญาตให้คุณตอบสนองต่อการเปลี่ยนแปลงเหล่านั้นได้แบบเรียลไทม์

67
04:24.120 --> 04:31.140

นี่คือกลไกพื้นฐานสำหรับการสร้างแอปพลิเคชันแบบเรียลไทม์ด้วย
Firebase

68
04:31.140 --> 04:33.180

และเพื่อรับฟังการเปลี่ยนแปลงที่เกิดขึ้นในตำแหน่งที่ระบุ

69
04:33.180 --> 04:40.590

คุณเรียกใช้เมธอดผู้ฟังเหตุการณ์เพิ่มค่าในอ้างอิงฐานข้อมูลและส่งผ่านอินสแตนซ์ของผู้ฟังเหตุการณ์ค่า

70
04:40.590 --> 04:41.400


71
04:41.430 --> 04:48.690

ผู้ฟังเหตุการณ์ค่าเป็นอินเทอร์เฟซที่มีเมธอด
callback

72
04:48.720 --> 04:49.860

สองตัวหลักสำหรับการเปลี่ยนแปลงข้อมูลและการยกเลิกการเปลี่ยนแปลงข้อมูล

73
04:49.860 --> 04:55.590

วิธีนี้จะถูกเรียกใช้เมื่อข้อมูลที่ตำแหน่งที่ระบุมีการเปลี่ยนแปลง

74
04:55.590 --> 04:56.130
ข้อมูล

75
04:56.130 --> 05:02.070
พารามิเตอร์ Snapshot
ประกอบด้วยภาพรวมของข้อมูล ณ
ตำแหน่งที่เกิดการยกเลิก

76
05:02.070 --> 05:03.600
นี่คือวิธีการที่เรียกว่า

77
05:03.600 --> 05:09.930

หากเกิดข้อผิดพลาดขณะพยายามอ่านข้อมูลจากฐานข้อมูล

78
05:09.930 --> 05:11.130

และคุณสามารถใช้วิธีนี้เพื่อจัดการกับข้อผิดพลาดของฐานข้อมูลได้

79
05:11.130 --> 05:15.270

เราสนใจในวิธีการเมื่อมีการเปลี่ยนแปลงข้อมูล

80
05:15.270 --> 05:21.870

ที่นี่เราจำเป็นต้องดึงข้อมูลและรับรายการผู้ใช้ในฐานข้อมูล

81
05:21.870 --> 05:27.090
ดังนั้นสำหรับกรณีนี้
ผมจะใช้ตัวแปรข้อมูลแบบ snapshot ของ for
each loop

82
05:27.090 --> 05:29.730
และที่นี่ฉันเรียกมันว่าวัตถุภาพรวมข้อมูล

83
05:29.730 --> 05:37.020
และเพื่อดึงข้อมูลจากที่นี่
เราจำเป็นต้องใช้ snapshot dot get children

84
05:37.020 --> 05:38.400
นี่คือ for

85
05:38.400 --> 05:46.530
แต่ละลูปมักใช้ในฐานข้อมูลแบบเรียลไทม์ของ
Firebase

86
05:46.560 --> 05:48.600

เพื่อวนซ้ำผ่านโหนดลูกหรือเด็กของสแนปช็อตเฉพาะ

87
05:48.600 --> 05:56.730
สแนปช็อตในฐานข้อมูลแบบเรียลไทม์ของ
Firebase
แสดงถึงจุดเฉพาะในฐานข้อมูลที่ตำแหน่งหนึ่ง
ณ เวลาใดเวลาหนึ่ง

88
05:56.730 --> 06:04.140

มันประกอบด้วยข้อมูลและโครงสร้างของฐานข้อมูล
ณ ตำแหน่งนั้น ๆ
ในเวลาที่สแนปช็อตถูกสร้างขึ้น

89
06:04.140 --> 06:13.380
เมธอด Get children
ถูกใช้และเรียกใช้บนอ็อบเจ็กต์

90
06:13.380 --> 06:22.440
Data Snapshot
และจะส่งคืนอินเทอร์เฟซที่สามารถวนซ้ำได้ซึ่งประกอบด้วยโหนดลูกโดยตรงทั้งหมดของสแนปช็อตนั้น
และในโค้ดของคุณที่นี่

91
06:22.440 --> 06:25.050
วงวน for
จะวนซ้ำผ่านโหนดลูกเหล่านี้ทีละโหนด

92
06:25.050 --> 06:34.080
สำหรับแต่ละโหนดลูก
ตัวแปรข้อมูลสแนปช็อตจะแสดงถึงโหนดลูกปัจจุบันภายในรอบการวนลูป

93
06:34.080 --> 06:42.810

จากนั้นฉันต้องแสดงและรับรายการจากออบเจ็กต์ข้อมูลสแนปช็อตที่เราสร้างขึ้นที่นี่และที่นี่

94
06:42.810 --> 06:50.280
ฉันต้องเริ่มต้นด้วยการสร้างอ็อบเจ็กต์ user
user เท่ากับ snapshot ข้อมูล dot get
value.

95
06:50.280 --> 06:53.670
และประเภทของค่าที่เราได้รับคืออะไร?

96
06:53.670 --> 06:56.010
มันเป็นประเภทคลาสผู้ใช้

97
06:56.010 --> 06:59.970
ดังนั้นที่นี่ฉันจำเป็นต้องระบุ user dot
class

98
06:59.970 --> 07:08.760

โปรดตรวจสอบให้แน่ใจว่าคุณได้รวมคอนสตรัคเตอร์ที่ไม่มีอาร์กิวเมนต์ไว้ในคลาสโมเดลของคุณ
เพื่อที่จะใช้มันกับ Firebase

99
07:08.760 --> 07:11.220
list users

100
07:11.220 --> 07:15.690

เพิ่มผู้ใช้รายนี้สำหรับผู้ใช้ทุกคนภายในสแนปช็อต

101
07:15.690 --> 07:20.010

ไปเพิ่มมันลงในรายการอาร์เรย์ผู้ใช้ในกิจกรรมหลักของเรา

102
07:20.010 --> 07:24.090

จากนั้นฉันจำเป็นต้องใช้ชุดข้อมูลการแจ้งเตือนนี้

103
07:24.090 --> 07:29.340

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


