การโหลดแบบ Lazy Loading และเพจจิ้งช่วยให้คุณรองรับรายการจำนวนมาก รวมถึงรายการที่ไม่มีที่สิ้นสุดในแอปได้ด้วยการโหลดและแสดงข้อมูลทีละส่วน เทคนิคนี้ช่วยให้คุณลดเวลาในการโหลดครั้งแรกและเพิ่มประสิทธิภาพการใช้งานหน่วยความจำ ซึ่งจะช่วยเพิ่มประสิทธิภาพได้
ผลลัพธ์
วิดีโอต่อไปนี้แสดงลักษณะการทำงานที่เกิดขึ้นเมื่อรายการขนาดใหญ่ดึงข้อมูลขณะที่ผู้ใช้เลื่อนดู
ความเข้ากันได้ของเวอร์ชัน
การติดตั้งใช้งานนี้กำหนดให้ตั้งค่า minSDK ของโปรเจ็กต์เป็นระดับ API 21 ขึ้นไป
ความสัมพันธ์
แสดงเนื้อหาแบบแบ่งหน้า
ด้วยไลบรารีเพจจิ้ง คุณสามารถโหลดและแสดงหน้าข้อมูลจากชุดข้อมูลขนาดใหญ่ที่ได้มาจากพื้นที่เก็บข้อมูลในเครื่องหรือผ่านเครือข่ายได้ ใช้โค้ดต่อไปนี้เพื่อแสดงรายการที่มีการแบ่งหน้าซึ่งแสดงแถบความคืบหน้าเพื่อระบุให้ผู้ใช้ทราบว่ากำลังดึงข้อมูลเพิ่มเติม
@Composable fun MessageList( modifier: Modifier, pager: Pager<Int, Message> ) { val lazyPagingItems = pager.flow.collectAsLazyPagingItems() LazyColumn { items( lazyPagingItems.itemCount, key = lazyPagingItems.itemKey { it.id } ) { index -> val message = lazyPagingItems[index] if (message != null) { MessageRow(message) } else { MessagePlaceholder() } } } @Composable fun MessagePlaceholder(modifier: Modifier) { Box( Modifier .fillMaxWidth() .height(48.dp) ) { CircularProgressIndicator() } } @Composable fun MessageRow( modifier: Modifier, message: Message ) { Card(modifier = Modifier.padding(8.dp)) { Column( modifier = Modifier.padding(8.dp), verticalArrangement = Arrangement.Center ) { Text(message.sender) Text(message.text) } } } }
ประเด็นสำคัญเกี่ยวกับโค้ด
LazyColumn: Composable นี้ใช้เพื่อแสดงรายการ (ข้อความ) จำนวนมากอย่างมีประสิทธิภาพ โดยจะแสดงผลเฉพาะรายการที่มองเห็นได้บนหน้าจอเท่านั้น จึงช่วยประหยัดทรัพยากรและหน่วยความจำ- ออบเจ็กต์
lazyPagingItemsจะจัดการการโหลดและการแสดงข้อมูลที่มีการแบ่งหน้าภายในLazyColumnอย่างมีประสิทธิภาพ โดยจะส่งLazyPagingItemsไปยังitemsใน ComposableLazyColumn MessageRow(message: Text)มีหน้าที่แสดงผลรายการข้อความแต่ละรายการ โดยอาจแสดงผู้ส่งและข้อความภายใน CardMessagePlaceholder()จะแสดงตัวยึดตำแหน่งภาพ (ภาพหมุนขณะโหลด) ขณะที่ดึงข้อมูลข้อความจริง ซึ่งจะช่วยปรับปรุงประสบการณ์ของผู้ใช้
คอลเล็กชันที่มีคู่มือนี้
คู่มือนี้เป็นส่วนหนึ่งของคอลเล็กชันคู่มือฉบับย่อที่คัดสรรมาแล้ว ซึ่งครอบคลุมเป้าหมายการพัฒนาสำหรับนักพัฒนาแอป Android ที่กว้างขึ้น ดังนี้
แสดงรายการหรือตารางกริด
แสดงองค์ประกอบแบบอินเทอร์แอกทีฟ