Posts

Showing posts with the label sorting

[iOS Dev] NSSortDescriptor

Image
Sorting หรือการเรียงลำดับ เนื้อหาสำคัญในวิชา Computer Science 101 (ประเทศไทยเหมือนะจะเรียนในวิชา Data Structure) แต่ในความเป็นจริงแล้ว เมื่อไหร่กันที่คุณต้องการรู้ว่า "เราจะเขียน Quicksort ยังไง ?" เมื่อเราสร้าง Apps การเรียงลำดับคืออะไรบางอย่างที่คุณจะต้องคิดว่ามันจะเร็ว เป็นฟังก์ชั่นที่ใช้ง่ายและชัดเจน และเมื่อมันมีให้ใช้ คุณจะรู้สึกถึงในถึงความยากลำบากในหาสิ่งที่ง่ายกว่า NSSortDescriptor ใน Foundation Framework NSSortDescriptor เป็น Object ใน Objective-C ที่จะสร้างขึ้นด้วยตัวแปร (parameters) ดังนี้ key : สำหรับ Collection ที่จะทำการเรียงลำดับ key คือค่าจะนำมาพิจารณาในการเรียงลำดับวัตถุแต่ละตัวใน Collection ascending : มีค่าเป็น Boolean ที่จะกำหนดว่าจะให้ Collection เรียงลำดับแบบไหน จากน้อยไปมาก (YES) หรือมากไปน้อย (NO) และยังมีตัวแปรตัวที่ 3 ซึ่งจะเป็นส่งไปเป็นฟังก์ชั่นที่ไว้ใช้เปรียบเทียบค่าที่ N และค่าอื่นๆ ในขณะที่ทำการเรียงลำดับ โดยค่าเริ่มต้นจะทำการเปรียบเทียบความเท่ากัน (equality) ของวัตถุนั้นๆ ซึ่งจะส่งไปในรูปแบบของ Objective-C's Selector (SEL) ...

[Android Dev] แสดงข้อมูลในรูปแบบ List ด้วย ListView

Image
ห่างหายจากการเขียน Android Development ไปนานพอควรเลยครับ .. เนื่องจากไม่ได้ลง Android ไว้ในเครื่องใหม่เลย แล้วก็ไม่มีงานอะไรที่ต้องใช้ด้วย ก็ขอซะหน่อยแล้ว วันนี้เราจะมา Represent Data กันในรูปแบบของ List โดยใช้ ListView บน Android ซึ่งไม่ยากเลยครับ ... ซึ่งเมื่อทำได้แล้ว ก็จะได้ผลลัพธ์ประมาณนี้ ซึ่ง ListView ที่เห็นจะรองรับข้อมูลจำนวนเท่าไรก็ได้ ... เพราะ ListView สามารถ Scroll ได้อยู่แล้ว ... Code ในส่วนของ UI ก็มีแค่นี้ครับ ... แค่ใส่ ListView วางลงไปบน Layout ของเรา... ในส่วนของ Java Code ส่วนแรกก็จะเป็นการประกาศตัวแปร ListView แล้วเชื่อมกับตัว UI จากนั้นก็ Init Data ของข้อมูลขึ้นมา ในที่นี่ผมเล่นกับชื่อของระบบปฏิบัติการต่างๆ จากนั้นก็ทำการสร้าง ArrayAdapter จาก String Array ที่ได้สร้างขึ้นมา ซึ่ง ArrayAdapter จะทำการดัดแปลงโครงสร้างข้อมูลปกติเพื่อให้ใช้กับ UI ต่างๆ ของ Android ได้ ใน Spinner ก็ใช้นะครับ :) แล้วก็กำหนด Adapter ให้กับ ListView ด้วย ArrayAdapter ที่สร้างขึ้นมา ผมใส่เทคนิคการ Sort ArrayAdapter ไว้ให้ด้วยนะครับ เผื่อใครต้องการนำไปใช้งาน :) ...