ภาพรวมไลบรารีการแบ่งหน้า เป็นส่วนหนึ่งของ Android Jetpack
ไลบรารีการแบ่งหน้าช่วยให้คุณโหลดและแสดงหน้าข้อมูลจากชุดข้อมูลที่ใหญ่ขึ้นจากพื้นที่เก็บข้อมูลในเครื่องหรือผ่านเครือข่าย แนวทางนี้ช่วยให้แอปใช้ทั้งแบนด์วิดท์เครือข่ายและทรัพยากรของระบบได้อย่างมีประสิทธิภาพมากขึ้น คอมโพเนนต์ของไลบรารี Paging ออกแบบมาให้เข้ากับสถาปัตยกรรมแอป Android ที่แนะนำ ผสานรวมกับคอมโพเนนต์ Jetpack อื่นๆ ได้อย่างราบรื่น และให้การสนับสนุน Kotlin ได้อย่างยอดเยี่ยม
ประโยชน์ของการใช้ไลบรารีการแบ่งหน้า
คลังการแบ่งหน้ามีฟีเจอร์ต่อไปนี้
- การแคชในหน่วยความจําสําหรับข้อมูลที่แบ่งหน้า วิธีนี้ช่วยให้แอปใช้ทรัพยากรของระบบได้อย่างมีประสิทธิภาพขณะทำงานกับข้อมูลที่แบ่งหน้า
- การกรองข้อมูลคำขอที่ซ้ำกันในตัว ซึ่งช่วยให้มั่นใจได้ว่าแอปของคุณใช้แบนด์วิดท์ของเครือข่ายและทรัพยากรของระบบอย่างมีประสิทธิภาพ
- อะแดปเตอร์
RecyclerView
ที่กําหนดค่าได้ซึ่งจะขอข้อมูลโดยอัตโนมัติเมื่อผู้ใช้เลื่อนไปยังส่วนท้ายของข้อมูลที่โหลด - การรองรับโคโริวทีนและโฟลว์ของ Kotlin ระดับพรีเมียม รวมถึง
LiveData
และ RxJava - การรองรับการจัดการข้อผิดพลาดในตัว รวมถึงความสามารถในการรีเฟรชและลองอีกครั้ง
แสดงความคิดเห็น
ความคิดเห็นของคุณช่วยปรับปรุง Jetpack ได้ โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมีแนวคิดในการปรับปรุงคลังนี้ โปรดตรวจสอบปัญหาที่มีอยู่ของคลังนี้ก่อนสร้างคลังใหม่ คุณสามารถเพิ่มการโหวตให้กับปัญหาที่มีอยู่ได้โดยคลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมเกี่ยวกับการส่งความคิดเห็นได้ในเอกสารประกอบของเครื่องมือติดตามปัญหา
ตั้งค่า
หากต้องการนําเข้าคอมโพเนนต์การแบ่งหน้าลงในแอป Android ให้เพิ่มข้อกําหนดต่อไปนี้ลงในไฟล์ build.gradle
ของแอป
ดึงดูด
dependencies { def paging_version = "3.3.2" implementation "androidx.paging:paging-runtime:$paging_version" // alternatively - without Android dependencies for tests testImplementation "androidx.paging:paging-common:$paging_version" // optional - RxJava2 support implementation "androidx.paging:paging-rxjava2:$paging_version" // optional - RxJava3 support implementation "androidx.paging:paging-rxjava3:$paging_version" // optional - Guava ListenableFuture support implementation "androidx.paging:paging-guava:$paging_version" // optional - Jetpack Compose integration implementation "androidx.paging:paging-compose:3.3.2" }
Kotlin
dependencies { val paging_version = "3.3.2" implementation("androidx.paging:paging-runtime:$paging_version") // alternatively - without Android dependencies for tests testImplementation("androidx.paging:paging-common:$paging_version") // optional - RxJava2 support implementation("androidx.paging:paging-rxjava2:$paging_version") // optional - RxJava3 support implementation("androidx.paging:paging-rxjava3:$paging_version") // optional - Guava ListenableFuture support implementation("androidx.paging:paging-guava:$paging_version") // optional - Jetpack Compose integration implementation("androidx.paging:paging-compose:3.3.2") }
สถาปัตยกรรมของไลบรารี
คอมโพเนนต์ของไลบรารีการแบ่งหน้าจะทํางานใน 3 เลเยอร์ของแอป ดังนี้
- เลเยอร์ที่เก็บ
- เลเยอร์
ViewModel
- ชั้น UI
ส่วนนี้จะอธิบายคอมโพเนนต์ของไลบรารีการแบ่งหน้าเว็บที่ทำงานในแต่ละเลเยอร์ และวิธีที่คอมโพเนนต์เหล่านี้ทํางานร่วมกันเพื่อโหลดและแสดงข้อมูลที่แบ่งหน้า
เลเยอร์ที่เก็บ
คอมโพเนนต์ไลบรารีการแบ่งหน้าหลักในเลเยอร์พื้นที่เก็บข้อมูลคือ PagingSource
ออบเจ็กต์ PagingSource
แต่ละรายการจะกำหนดแหล่งที่มาของข้อมูลและวิธีเรียกข้อมูลจากแหล่งที่มานั้น ออบเจ็กต์ PagingSource
สามารถโหลดข้อมูลจากแหล่งที่มาแหล่งเดียวได้ ซึ่งรวมถึงแหล่งที่มาของเครือข่ายและฐานข้อมูลในเครื่อง
คอมโพเนนต์ไลบรารีการแบ่งหน้าอีกรายการที่คุณอาจใช้คือ RemoteMediator
ออบเจ็กต์ RemoteMediator
จะจัดการการแบ่งหน้าจากแหล่งข้อมูลแบบเลเยอร์ เช่น แหล่งข้อมูลเครือข่ายที่มีแคชฐานข้อมูลในเครื่อง
เลเยอร์ ViewModel
คอมโพเนนต์ Pager
มี API สาธารณะสำหรับสร้างอินสแตนซ์ของ PagingData
ที่แสดงในสตรีมแบบรีแอ็กทีฟ โดยอิงตามออบเจ็กต์ PagingSource
และออบเจ็กต์การกําหนดค่า PagingConfig
คอมโพเนนต์ที่เชื่อมต่อเลเยอร์ ViewModel
กับ UI คือ PagingData
ออบเจ็กต์ PagingData
คือคอนเทนเนอร์สำหรับภาพรวมของข้อมูลที่แบ่งหน้า โดยจะค้นหาออบเจ็กต์ PagingSource
และจัดเก็บผลลัพธ์
เลเยอร์ UI
คอมโพเนนต์ไลบรารีการแบ่งหน้าหลักในเลเยอร์ UI คือ PagingDataAdapter
ซึ่งเป็นอะแดปเตอร์ RecyclerView
ที่จัดการข้อมูลแบบแบ่งหน้า
หรือจะใช้คอมโพเนนต์ AsyncPagingDataDiffer
ที่ให้มาเพื่อสร้างอะแดปเตอร์ที่กำหนดเองของคุณเองก็ได้
แหล่งข้อมูลเพิ่มเติม
ดูข้อมูลเพิ่มเติมเกี่ยวกับไลบรารีการแบ่งหน้าได้ที่แหล่งข้อมูลเพิ่มเติมต่อไปนี้
Codelabs
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- โหลดและแสดงข้อมูลที่แบ่งหน้า
- ย้ายข้อมูลไปยังการแบ่งหน้า 3
- หน้าเว็บจากเครือข่ายและฐานข้อมูล