ยินดีต้อนรับกลับมา
ตอนนี้เรามาเริ่มกิจกรรมหลักกันเถอะ
และที่นี่ฉันจะสร้างวัตถุการผูกหลักของกิจกรรมที่เรียกว่า binding และวัตถุ
ViewModel ของแบบทดสอบและรายการคำถาม
ฉันตั้งชื่อว่า รายการคำถาม
จากนั้นฉันจะสร้างตัวแปรคงที่ชื่อ result และ total questions เพื่อเก็บผลลัพธ์ในตัวแปรเหล่านี้ โดยให้
static และ result มีค่าเท่ากับศูนย์ และ static ใน
total questions มีค่าเท่ากับศูนย์ และ I มีค่าเท่ากับศูนย์
ไปที่เมธอด Oncreate
เริ่มต้นตัวแปรเหล่านี้
ที่นี่ฉันกำลังใช้เครื่องมือการผูกข้อมูล
นี่คือการตั้งค่าการผูกข้อมูล
ผลลัพธ์เท่ากับศูนย์
นี่ฉันกำลังรีเซ็ตคะแนนและจำนวนคำถามทั้งหมดเป็นศูนย์
ตอนนี้เราต้องสร้างอินสแตนซ์ของโมเดลมุมมองแบบทดสอบ
ฉันจะเริ่มด้วยโมเดลมุมมองแบบทดสอบ
วัตถุเท่ากับผู้ให้บริการโมเดลมุมมองใหม่
และผ่านจุดนี้ไป
มุมมองแบบจำลองคืออะไร
นี่คือโมเดลมุมมองแบบควิซ
ดังนั้นที่นี่ฉันจำเป็นต้องระบุคลาสของโมเดลมุมมอง
นี่เป็นวิธีทั่วไปในการรับอินสแตนซ์ของวิวโมเดลในกิจกรรมหรือแฟรกเมนต์
มาแยกย่อยเพื่อทำความเข้าใจโมเดลมุมมองแบบทดสอบกัน
นี่คือตัวแปรที่เก็บอินสแตนซ์ของโมเดลมุมมองแบบทดสอบ, ผู้ให้บริการโมเดลมุมมองใหม่ และการส่งผ่านสิ่งนี้ซึ่งเป็นเจ้าของ
ซึ่งเป็นคลาสที่จัดเตรียมโดยส่วนประกอบสถาปัตยกรรมโมเดลมุมมองของ Android
ใช้เพื่อสร้างและจัดการอินสแตนซ์ของโมเดลมุมมอง
เมื่อคุณสร้างอินสแตนซ์ของผู้ให้บริการโมเดลมุมมอง คุณมักจะส่งกิจกรรมหรือแฟรกเมนต์เป็นพารามิเตอร์
และนี่จะหมายถึงกิจกรรมหรือแฟรกเมนต์ปัจจุบัน
และเนื่องจากเรากำลังทำงานกับกิจกรรมหลัก ดังนั้นสิ่งนี้จึงหมายถึงกิจกรรมหลัก
Get เรียกคืนอินสแตนซ์ของคลาสโมเดลมุมมองแบบทดสอบ
ผู้ให้บริการโมเดลมุมมองมีหน้าที่รับผิดชอบในการรับรองว่าคุณจะได้รับอินสแตนซ์โมเดลมุมมองเดียวกันที่เชื่อมโยงกับกิจกรรมหรือแฟรกเมนต์เดียวกันตลอดการเปลี่ยนแปลงการกำหนดค่า
ตัวอย่าง
การหมุนหน้าจอ
วัตถุประสงค์ของโค้ดนี้คือการสร้างหรือดึงอินสแตนซ์ของโมเดลมุมมองแบบทดสอบ
ซึ่งช่วยให้คุณสามารถทำงานกับข้อมูลที่เกี่ยวข้องกับฟีเจอร์แบบทดสอบของคุณได้อย่างตระหนักถึงวงจรชีวิต
ฉันต้องการให้คุณมีสมาธิในตอนนี้
เมื่อแอปเปิดขึ้น เราจำเป็นต้องแสดงคำถามแรกก่อน จากนั้นจึงโหลดคำถามอื่น ๆ
เมื่อผู้ใช้คลิกที่ปุ่มถัดไป
ดังนั้น สำหรับเรื่องนี้ เราจำเป็นต้องแสดงสองสิ่ง คือ คำถามแรก และคำถามต่อไป
ดังนั้นเพื่อจุดประสงค์นั้น ฉันจะสร้างเมธอดที่นี่เพื่อแสดงคำถามแรก
มันเรียกว่าการแสดงผล
คำถามแรก ผมจะเริ่มด้วยแบบทดสอบ view model dot get question list live data ผมเรียก
view model นี้ว่า และเรียก method นี้ว่า get question list live data
เพราะฉันจะสังเกตคำถามแรก
ในกรณีนี้ ฉันกำลังสังเกตข้อมูลสดจากโมเดลมุมมอง
และที่นี่ฉันจะใช้เมธอด dot observe
ฉันจะส่งสิ่งนี้เป็นพารามิเตอร์แรก ซึ่งเป็นเจ้าของและเจ้าของกิจกรรมนี้
และผู้สังเกตการณ์ใหม่ และฉันกำลังแทนที่เมธอดที่เปลี่ยนแปลงแล้ว
วิธีการสังเกตแบบจุดถูกใช้เพื่อสังเกตการเปลี่ยนแปลงในข้อมูลสด
ข้อโต้แย้งแรก
นี่แสดงถึงเจ้าของวงจรชีวิต ซึ่งโดยทั่วไปจะเป็นกิจกรรมหรือส่วนย่อย
และในกรณีนี้คือกิจกรรมหลัก
อาร์กิวเมนต์ที่สองคือผู้สังเกตการณ์ใหม่ที่กำหนดว่าจะทำอย่างไรเมื่อข้อมูลภายในข้อมูลสดเปลี่ยนแปลงโดยไม่เปลี่ยนแปลง
วิธีการ
วิธีนี้เป็นส่วนหนึ่งของอินเตอร์เฟซผู้สังเกตการณ์
มันถูกเรียกเมื่อข้อมูลภายในข้อมูลสดมีการเปลี่ยนแปลงในโค้ดนี้โดยเฉพาะ
โดยจะรับออบเจ็กต์รายการคำถามเป็นอาร์กิวเมนต์
เมื่อข้อมูลเปลี่ยนแปลง เราจำเป็นต้องดึงข้อมูลใหม่จากตัวแปรรายการคำถามนี้
ดังนั้นสิ่งแรกที่ฉันต้องทำคือกำหนดรายการคำถามที่ฉันสร้างไว้ที่นี่ให้เท่ากับคำถามที่ถูกส่งมาสำหรับข้อมูลที่อัปเดต
นี่คือข้อมูลที่อัปเดตใหม่
ดังนั้นฉันจำเป็นต้องอัปเดตคำถามในรายการด้วยข้อมูลใหม่เหล่านี้
จากนั้นฉันจะใช้การผูกข้อมูลเพื่ออัปเดตมุมมองข้อความที่สัมพันธ์กัน
และอีกอันสำหรับปุ่มตัวเลือกแบบวิทยุ
ดังนั้นสำหรับเรื่องนี้ ฉันจะใช้คำถามแบบจุดข้อความผูกมัด
นี่คือวิธีที่เราเข้าถึงมุมมองภายใน binding
คำถามในข้อความนี้อ้างถึงมุมมองข้อความนี้
คุณสามารถเห็นได้ว่านี่คือข้อความจุด ID
และที่นี่ฉันต้องดึงคำถามหมายเลขหนึ่งซึ่งอยู่ที่ดัชนีศูนย์
ดังนั้นนี่คือวิธีที่เราจะได้รับคำถามจากรายการคำถามจากรายการอาร์เรย์ รับคำถามได้เรียบร้อย
นี่คือคำถามแรก
ตอนนี้เราต้องตั้งค่าตัวเลือกทั้งสี่
ดังนั้นในลักษณะเดียวกัน ให้ผูกจุดวิทยุหนึ่งจุดตั้งค่าข้อความเป็นคำถาม
จุดที่ดัชนีศูนย์ จุดเลือกตัวเลือกหนึ่ง
และฉันจะทำเช่นเดียวกันกับปุ่มวิทยุอีกสามปุ่มที่เหลือ
บันทึกโปรเจกต์ไว้ก่อน แล้วผมจะเรียกคำถามแรกนี้ว่า "คำถามแรกเกี่ยวกับการแสดงผล" และจะรันแอปพลิเคชันให้
และฉันมีข้อผิดพลาดนี้
SDK ที่แนะนำสำหรับการคอมไพล์สูงสุดคือ 33
ดังนั้นฉันจะไปที่ manifest ที่นี่คือเป้าหมาย API
ฉันเปลี่ยนเป็น 34 ไปที่ Build.gradle เปลี่ยนเป็น 34 และ compile SDK เป็น 34
ซิงค์
ตอนนี้ให้รันอีกครั้ง และนี่คือแอปพลิเคชันของเรา
มันไม่ดึงคำถามแรก
ดังนั้นฉันจำเป็นต้องรันการสอบเพื่อตรวจสอบว่ามันทำงานได้ดี
ดังนั้นฉันจำเป็นต้องเริ่ม Apache MySQL
จากนั้นฉันต้องเพิ่มการอนุญาตอินเทอร์เน็ต
และฉันคิดว่าเราให้ที่อยู่ IP ผิด
ดังนั้นเราย้อนกลับไปที่คำถาม API หรือตัวอย่าง retrofit
ที่นี่ฉันจำเป็นต้องระบุที่อยู่ IP ที่ถูกต้อง
ในวิดีโอถัดไปเราจะเรียนรู้เกี่ยวกับกฎความปลอดภัยของเครือข่าย
เนื่องจากเรากำลังทำงานกับโฮสต์ท้องถิ่น