List กับ ArrayCollection

ช่วงนี้กำลังแก้ Checkbox อย่างจริงๆจังๆ แล้วก็เจอปัญหาตามมามากมาย เริ่มจาก Checkbox ไม่เปลี่ยนหลังจากเลือกไปแล้วเพราะว่า method updateDisplayList ของ renderer ยังไม่ถูกเรียกเมื่อเราคลิกที่ List วิธีที่จะทำให้มันเรียกก็ต้องเซท array กลับไปอีกที แต่ปัญหาใหญ่ที่สุดที่เจอแล้วก็นั่งแก้กับ @iporsut อยู่ซะนานเลยคือเรื่อง List กับ ArrayCollection
เรื่องเกิดขึ้นเมื่อตัวข้อมูลที่ใช้อยู่มันดันใช้ข้ามประเภทของ ListBase คือ List กับ DataGrid แล้วทีนี้ DataGrid มันสามารถสั่งเรียงข้อมูลได้โดยกดที่หัวแถว สิ่งที่มันทำคือสร้างวัตถุ Sort แล้วยัดเข้าไปที่ ArrayCollection แล้วสั่ง refresh ซะซึ่งข้อมูลที่ออกมาทั้ง List และ DataGrid ก็ดูเรียงสวยงามดี แต่ว่า List ผมกับ method click ที่ใช้สำหรับแสดง Checkbox ด้วยจะใช้ไม่ได้อีกเลย ตอนแรกก็งงว่าทำไม ลองไล่ดูแล้วก็พบว่า array ที่ผมใช้รับ item ที่ถูกเลือก มันกลายเป็น array เปล่าไป(@iporsut debug แล้วรายงานมาอีกทีด้วย ^^) นั่งแก้อยู่นานจนผมจนปัญญาหละ แล้ว @iporsut ก็บอกว่าให้เปลี่ยนเป็น selectedIndice ดูปรากฏว่าหาย - -” คือ DataGrid ทำงานได้ถูกต้องแล้วเหลือ List จนในที่สุด ก็ได้รับคำแนะนำมาอีกทีว่า เนื่องจาก array ของ selectedIndices มันหายก็ copy มันใหม่ซะเลย คราวนี้ทำงานได้สวยงาม
ถ้าใครยังงงๆ ว่าผมทำอะไรก็ลองดูตัวอย่างด้านล่างเลยละกัน แล้วก็ โค้ด



Comments

  1. iporsut June 18th

    Comment Arrow

    อืม ก็แก้ปัญหาไปพอผ่าน แต่ก็ยังสงสัยอยู่ดีทำไมมันต้องขโมย
    Array ไปด้วยตอน กำหนด selectedItems กับ selectedIndics
    เดี๋ยวว่างๆแกะดูใหม่


  2. llun June 19th

    Comment Arrow

    @iporsut ไม่เป็นไรๆ เดี๊ยวผมขุดต่อ ฮะๆ component นี้ยังต้องเขียนต่ออีกยาว T T” นี่เพิ่มมาแค่ View เดียวเอง ยังเหลืออีกสอง


Add Yours

  • Author Avatar

    YOU


Comment Arrow



About Author

llun

Apple addict programmer