ลิสต์ด้วย LazyColumn
แสดงลิสต์ที่เลื่อนได้อย่างมีประสิทธิภาพ
ลิสต์ด้วย LazyColumn เป็นบทเรียน Android Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Android Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Android Academy มีบทเรียนทั้งหมด 4 บทเรียน
ทำไมไม่ใช้ Column อย่างเดียว
Column จะประกอบองค์ประกอบลูกทั้งหมดในครั้งเดียว สำหรับรายการยาวหรือรายการที่เลื่อนดูได้ วิธีนี้สิ้นเปลืองหน่วยความจำและทำให้ส่วนติดต่อผู้ใช้ช้าลง คุณจึงต้องใช้รายการที่สร้างเฉพาะองค์ประกอบที่มองเห็นได้
พบกับ LazyColumn
LazyColumn คือรายการแนวตั้งที่เลื่อนได้ โดยจะประกอบเฉพาะรายการที่อยู่บนหน้าจอในขณะนั้น คล้ายกับ RecyclerView รุ่นเก่า แต่เรียบง่ายกว่ามาก
LazyColumn {
items(messages) { msg ->
Text(text = msg)
}
}ฟังก์ชัน items()
ภายใน lambda ของ LazyColumn ให้เรียก items(list) และกำหนด composable สำหรับแต่ละองค์ประกอบ Compose จะเรียกใช้แบบประหยัดเมื่อผู้ใช้เลื่อนรายการ
LazyColumn {
items(users) { user ->
Text(text = user.name)
}
}ไม่ใช่ลูปทั่วไป
อย่าใช้ลูป for ปกติภายใน LazyColumn เพราะจะทำให้สูญเสียคุณสมบัติการสร้างแบบประหยัด ให้ใช้ items() (หรือ itemsIndexed()) เสมอ เพื่อให้ Compose สร้างรายการเมื่อจำเป็น
องค์ประกอบส่วนหัวเพียงรายการเดียว
ใช้ item { } (เอกพจน์) เพื่อเพิ่มองค์ประกอบคงที่หนึ่งรายการ เช่น ส่วนหัว ก่อนรายการที่สร้างด้วยลูป
LazyColumn {
item { Text("Header") }
items(data) { Text(it) }
}itemsIndexed
เมื่อจำเป็นต้องทราบตำแหน่ง ให้ใช้ itemsIndexed เพื่อรับทั้งดัชนีและองค์ประกอบ
LazyColumn {
itemsIndexed(data) { index, value ->
Text(text = "$index: $value")
}
}คีย์เพื่อความเสถียร
กำหนด key ที่คงที่ให้แต่ละรายการ เพื่อให้ Compose ติดตามรายการได้ถูกต้องเมื่อรายการมีการเปลี่ยนแปลง ซึ่งช่วยเพิ่มประสิทธิภาพและทำให้ภาพเคลื่อนไหวทำงานดีขึ้น
items(users, key = { it.id }) { user ->
Text(user.name)
}การเว้นระยะรายการ
LazyColumn รับ verticalArrangement และ contentPadding เพื่อเว้นระยะรายการและเพิ่มระยะขอบให้ขอบของรายการ
LazyColumn(
verticalArrangement = Arrangement.spacedBy(8.dp),
contentPadding = PaddingValues(16.dp)
) {
items(data) { Text(it) }
}LazyRow
นอกจากนี้ยังมี LazyRow สำหรับรายการแนวนอนที่เลื่อนได้ โดยใช้ API เดียวกันแต่เปลี่ยนทิศทาง เหมาะสำหรับแถบเลื่อนการ์ด
LazyRow {
items(images) { img ->
Image(painter = img, contentDescription = null)
}
}การเลื่อนในตัว
ไม่ต้องเพิ่ม modifier สำหรับการเลื่อนให้กับ LazyColumn เพราะมันเลื่อนได้โดยอัตโนมัติ การเพิ่ม verticalScroll จะทำให้เกิดข้อขัดแย้งและแอปขัดข้อง รายการแบบ Lazy จัดการการเลื่อนด้วยตัวเอง
นำทุกอย่างมารวมกัน
รายการที่มีส่วนหัว คีย์ และการเว้นระยะ
@Composable
fun MessageList(messages: List<Message>) {
LazyColumn(
verticalArrangement = Arrangement.spacedBy(8.dp)
) {
item { Text("Inbox") }
items(messages, key = { it.id }) { msg ->
Text(text = msg.text)
}
}
}ตรวจสอบความเข้าใจอย่างรวดเร็ว
ข้อได้เปรียบหลักของ LazyColumn เหนือ Column ที่เลื่อนได้คืออะไร
สรุปทบทวน
LazyColumn:
- สร้างเฉพาะรายการที่มองเห็นได้ จึงมีประสิทธิภาพสำหรับรายการยาว
- ใช้
items()/itemsIndexed()แทนลูปfor - เพิ่ม
keyเพื่อความเสถียร และใช้item { }สำหรับส่วนหัว - เลื่อนได้โดยอัตโนมัติ ไม่ต้องใช้ modifier สำหรับการเลื่อน ส่วน
LazyRowคือรูปแบบแนวนอน
เรียนรู้ Kotlin ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 36
- บทเรียน
- 152
คำถามที่พบบ่อย
บทเรียน “ลิสต์ด้วย LazyColumn” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ลิสต์ด้วย LazyColumn” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Android Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Android Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ลิสต์ด้วย LazyColumn”
แสดงลิสต์ที่เลื่อนได้อย่างมีประสิทธิภาพ คุณปฏิบัติ Android Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Android Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Android Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “ลิสต์ด้วย LazyColumn” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Android Academy นี้ได้ไหม
ได้ บทเรียน Android Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Column, Row และ Box
- ระบบ Modifier
- การจัดแนวและการจัดวาง
- ลิสต์ด้วย LazyColumn