บทความ

กำลังแสดงโพสต์จาก มกราคม, 2016

การใช้ CheckBox ใน listView ด้วย CustomAdapter ของ Android

รูปภาพ
เมื่อคราวที่แล้ว พูดถึงเรื่องการสร้าง checkbox ใน listView ด้วย customAdapter ของ Android แต่ยังไม่ได้พูดถึงการใช้งาน checkbox ที่สร้างขึ้น

Android สร้าง ListView เพื่อการประหยัดทรัพยากร โดยจะไม่ทำการแปลง xml ไฟล์ ให้เป็น java object ในทุกครั้งที่มีการ scroll หน้าจอของ listview โดยการใช้ inflater เพราะเป็นกระบวนการที่ต้องนำเอา view ที่มีทั้งหมดใน xml มาเปลี่ยนให้เป็น object เช่น ถ้า list มีทั้งหมด 30 รายการ แต่ละรายการประกอบด้วย textView imageView และ checkBox ก็ต้องทำการแปลงให้เป็น java object ทั้งหมด ซึ่งอาจจะไม่จำเป็น เพราะรายการที่อยู่นอกหน้าจออาจจะไม่ได้ถูกใช้งานก็ได้

วิธีการประหยัดของ android คือการนำเอา list item ที่ถูก scroll ออกไปนอกหน้าจอ กลับมาใช้ใหม่ ซึ่ง Android เรียกว่า เป็นการ Recycle โดยกระบวนการทั้งหมด จะถูกกระทำใน getView()

วิธีการนี้ ทำให้เราต้องจัดการกับ checkbox ที่มีอยู่ใน listview เนื่องจากมีการนำกลับมาใช้ใหม่ ทำให้ตำแหน่งของ checkbox ที่ถูกเลือก เปลี่ยนตำแหน่งไปเป็นแบบสุ่ม เป็นผลให้ เมื่อคลิกที่ checkBox และทำการ scroll จะพบว่า มีการเลือก checkBox ตัวอื่นด้วย ท…