ปรับแต่งรายการแบบไดนามิก เป็นส่วนหนึ่งของ Android Jetpack
โดยคุณสามารถปรับแต่ง
RecyclerView
ให้ตรงกับความต้องการที่เฉพาะเจาะจงของคุณ ชั้นเรียนมาตรฐานที่อธิบายไว้ใน
สร้างรายการแบบไดนามิกด้วย
RecyclerView มีฟังก์ชันการทำงานทั้งหมดที่นักพัฒนาซอฟต์แวร์ส่วนใหญ่ต้องการ ใน
หลายกรณี คุณเพียงต้องออกแบบมุมมองสำหรับผู้ถือมุมมองแต่ละราย และเขียน
เพื่ออัปเดตมุมมองเหล่านั้นด้วยข้อมูลที่เหมาะสม แต่หากแอปมี
บางอย่าง คุณสามารถปรับเปลี่ยนลักษณะการทำงานมาตรฐานได้หลายวิธี
เอกสารนี้อธิบายการกำหนดค่าที่เป็นไปได้บางส่วน
แก้ไขเลย์เอาต์
RecyclerView
ใช้เครื่องมือจัดการเลย์เอาต์เพื่อวางตำแหน่งบุคคล
รายการบนหน้าจอ และพิจารณาว่าเมื่อใดที่ควรใช้การดูรายการที่ไม่อีกต่อไปแล้วซ้ำ
แสดงต่อผู้ใช้ หากต้องการใช้ซ้ำหรือรีไซเคิล - มุมมอง เลย์เอาต์
ผู้จัดการอาจขอให้อะแดปเตอร์แทนที่เนื้อหาของมุมมองด้วย
เอลิเมนต์ที่แตกต่างจากชุดข้อมูล การรีไซเคิลมุมมองด้วยวิธีนี้ช่วยปรับปรุง
โดยหลีกเลี่ยงการสร้างมุมมองหรือ
แพง
findViewById()
การค้นหา ไลบรารีการสนับสนุนของ Android ประกอบด้วยเครื่องมือจัดการเลย์เอาต์มาตรฐาน 3 รูปแบบ
มีตัวเลือกการปรับแต่งมากมายดังนี้
LinearLayoutManager
: จัดเรียงสินค้าในรายการแบบมิติเดียว การใช้RecyclerView
ที่มีLinearLayoutManager
ให้ เช่นListView
เลย์เอาต์GridLayoutManager
: จัดเรียงรายการในตารางกริด 2 มิติ เหมือนสี่เหลี่ยมจตุรัสบน ลายตารางหมากรุก การใช้RecyclerView
กับGridLayoutManager
มีฟังก์ชันการทำงาน เช่นGridView
เลย์เอาต์StaggeredGridLayoutManager
: จัดเรียงสินค้าเป็นตารางกริด 2 มิติ โดยให้แต่ละคอลัมน์ออฟเซ็ตเล็กน้อย จากแบบก่อนหน้านี้ เช่น ดาวบนธงชาติอเมริกา
ถ้าเครื่องมือจัดการการออกแบบเหล่านี้ไม่ตรงกับความต้องการของคุณ คุณสามารถสร้างการจัดการด้วยตนเองได้โดย
การขยาย
RecyclerView.LayoutManager
Abstract Class
เพิ่มภาพเคลื่อนไหวของรายการ
เมื่อใดก็ตามที่รายการมีการเปลี่ยนแปลง RecyclerView
จะใช้ภาพเคลื่อนไหว
เพื่อเปลี่ยนลักษณะที่ปรากฏ ผู้สร้างภาพเคลื่อนไหวนี้เป็นวัตถุที่ขยายนามธรรม
RecyclerView.ItemAnimator
โดยค่าเริ่มต้น RecyclerView
จะใช้
วันที่ DefaultItemAnimator
ในการมอบภาพเคลื่อนไหว หากต้องการจัดเตรียมภาพเคลื่อนไหวที่กำหนดเอง คุณจะทำสิ่งต่อไปนี้ได้
กำหนดออบเจ็กต์แอนิเมเตอร์ของคุณเองโดยการขยาย
RecyclerView.ItemAnimator
เปิดใช้การเลือกรายการย่อย
recyclerview-selection
ไลบรารีช่วยให้ผู้ใช้เลือกสิ่งต่างๆ ในรายการ RecyclerView
ได้โดยใช้การแตะ
หรืออินพุตด้วยเมาส์ ซึ่งช่วยให้คุณสามารถควบคุมการนำเสนอด้วยภาพของ
รายการที่เลือก คุณยังสามารถควบคุมนโยบายที่ควบคุมการเลือกต่างๆ ได้
ลักษณะการทํางาน เช่น รายการใดมีสิทธิ์เลือกและจํานวนสินค้าที่เลือกได้
ที่ได้รับเลือก
หากต้องการเพิ่มการสนับสนุนการเลือกไปยังอินสแตนซ์ RecyclerView
ให้ทำตาม
ขั้นตอนเหล่านี้:
- พิจารณาว่าจะใช้คีย์การเลือกประเภทใดแล้วสร้าง
ItemKeyProvider
มี 3 ประเภทหลักที่คุณสามารถใช้เพื่อระบุรายการที่เลือก:
Parcelable
และคลาสย่อย เช่น วันที่Uri
String
Long
ดูข้อมูลโดยละเอียดเกี่ยวกับประเภทคีย์การเลือกได้ที่
SelectionTracker.Builder
- ใช้งาน
ItemDetailsLookup
- อัปเดตรายการ
View
ออบเจ็กต์ในRecyclerView
เพื่อแสดงให้เห็นว่าผู้ใช้เลือก ให้ยกเลิกการเลือกไลบรารีการเลือกไม่มีการตกแต่งภาพเริ่มต้นสำหรับ รายการที่เลือก ระบุข้อมูลนี้เมื่อติดตั้งใช้งาน
onBindViewHolder()
เราขอแนะนำให้ใช้วิธีการต่อไปนี้- ในอีก
onBindViewHolder()
โทรsetActivated()
- ไม่ใช่setSelected()
- เปิด ออบเจ็กต์View
ที่มีtrue
หรือfalse
ขึ้นอยู่กับว่ารายการดังกล่าว ไว้ - อัปเดตการจัดรูปแบบของมุมมองเพื่อแสดงสถานะเปิดใช้งาน พ เราขอแนะนำให้ใช้ สถานะสี แสดงรายการทรัพยากรเพื่อกำหนดค่าการจัดรูปแบบ
- ในอีก
- ใช้
ActionMode
เพื่อมอบเครื่องมือให้แก่ผู้ใช้ในการดำเนินการกับสิ่งที่เลือก - ดำเนินการรองที่ตีความแล้ว
- ประกอบทุกอย่างด้วย
SelectionTracker.Builder
- รวมรายการที่เลือกไว้ใน กิจกรรม เกี่ยวกับวงจร
ItemDetailsLookup
อนุญาตให้เข้าถึงคลังส่วนที่เลือก
ข้อมูลเกี่ยวกับ RecyclerView
รายการโดย
MotionEvent
ซึ่งเป็นโรงงานสำหรับ
ItemDetails
อินสแตนซ์ที่สำรองข้อมูลหรือดึงข้อมูลจาก
RecyclerView.ViewHolder
อินสแตนซ์
ลงทะเบียน
SelectionTracker.SelectionObserver
เพื่อรับการแจ้งเตือนเมื่อมีการเปลี่ยนแปลงการเลือก เมื่อสร้างสิ่งที่เลือกเป็นครั้งแรก
เริ่ม ActionMode
เพื่อนำเสนอข้อมูลนี้แก่ผู้ใช้และระบุ
การดำเนินการเฉพาะการเลือก เช่น คุณสามารถเพิ่มปุ่มลบลงในส่วน
ActionMode
และเชื่อมต่อลูกศรย้อนกลับบนแถบเพื่อล้าง
รายการที่เลือก เมื่อรายการที่เลือกว่างเปล่า เมื่อผู้ใช้ล้างข้อมูล
การเลือกเป็นครั้งสุดท้าย - สิ้นสุดโหมดการทำงาน
ในตอนท้ายของไปป์ไลน์การประมวลผลเหตุการณ์ ไลบรารีอาจกำหนด
ผู้ใช้พยายามเปิดใช้งาน โดยการแตะที่รายการนั้น หรือ
การพยายามลากรายการหรือชุดของรายการที่เลือก แสดงความรู้สึกต่อสิ่งเหล่านี้
การแปลความหมายด้วยการลงทะเบียน Listener ที่เหมาะสม สำหรับข้อมูลเพิ่มเติม
ดูข้อมูลได้ที่
SelectionTracker.Builder
ตัวอย่างต่อไปนี้แสดงวิธีนำชิ้นส่วนเหล่านี้มารวมกัน
Kotlin
var tracker = SelectionTracker.Builder( "my-selection-id", recyclerView, StableIdKeyProvider(recyclerView), MyDetailsLookup(recyclerView), StorageStrategy.createLongStorage()) .withOnItemActivatedListener(myItemActivatedListener) .build()
Java
SelectionTracker tracker = new SelectionTracker.Builder<>( "my-selection-id", recyclerView, new StableIdKeyProvider(recyclerView), new MyDetailsLookup(recyclerView), StorageStrategy.createLongStorage()) .withOnItemActivatedListener(myItemActivatedListener) .build();
วิธีสร้าง
SelectionTracker
แอปของคุณต้องแสดง
วันที่ RecyclerView.Adapter
ที่คุณใช้เริ่มต้น RecyclerView
เพื่อ
SelectionTracker.Builder
ด้วยเหตุนี้ หลังจากที่คุณสร้าง
อินสแตนซ์ SelectionTracker
ให้แทรกลงใน
RecyclerView.Adapter
ไม่เช่นนั้น คุณจะไม่สามารถตรวจสอบ
สถานะที่เลือกจากเมธอด onBindViewHolder()
หากต้องการรักษาสถานะการเลือกไว้ในเหตุการณ์ในวงจรกิจกรรม แอปของคุณ
ต้องเรียกใช้แท็กติดตามการเลือก
onSaveInstanceState()
และ
วันที่ onRestoreInstanceState()
จากกิจกรรม
onSaveInstanceState()
และ
onRestoreInstanceState()
ตามลำดับ แอปของคุณยังต้องให้รหัสการเลือกที่ไม่ซ้ำไปยัง
เครื่องมือสร้าง SelectionTracker.Builder
ต้องใช้รหัสนี้เนื่องจาก
กิจกรรมหรือส่วนย่อยอาจมี
รายการที่แตกต่างกันและเลือกได้ได้มากกว่า 1 รายการ
ซึ่งทั้งหมดจะต้องคงอยู่ในสถานะที่บันทึกไว้
แหล่งข้อมูลเพิ่มเติม
โปรดดูข้อมูลอ้างอิงต่อไปนี้สำหรับข้อมูลเพิ่มเติม
- ดอกทานตะวัน
แอปเดโม ซึ่งใช้
RecyclerView
- ใช้ RecyclerView เพื่อแสดงรายการแบบเลื่อนได้ Codelab
- Android ความรู้พื้นฐานเกี่ยวกับ Kotlin: ข้อมูลพื้นฐานเกี่ยวกับ RecyclerView