[Android Dev] :: Spinner for Choose Something

วันใหม่แล้วสินะ...
เรื่องนี้เป็นเรื่องของ Spinner ครับ หน้าตาของ Spinner ก็ประมาณนี้

พอกดแล้วก็จะขึ้น Menu ให้เลือก
ซึ่งเมนูนั้น... ก็จะเก็บเป็น Array ครับ...

Let's Coding Begin


ในส่วนของ XML ก็ประมาณนี้ครับ
คำสั่งเกี่ยวกับ Spinner ไม่มีอะไรเป็นพิเศษเลยจริง ๆ ... เป็นคำสั่งพื้นฐานในการแสดง Object ทั้งหมด
และแน่นอน Spinner ของผมวางอยู่บน Relative Layout ตามถนัด ^^

จากโค้ดเมื่อกี้ จะได้หน้าตาประมาณนี้แหละครับ
ต่อมาในส่วนของ Java
import ของที่ต้องใช้เข้ามาทั้งหมดก่อน
เราจะเห็นได้ว่า... มีของเล่นใหม่นั่นคือ ArrayAdapter และ AdapterView
ซึ่งสองตัวนี้แหละครับ ที่จะช่วยเราจัดการข้อมูลใน Spinner


ต่อมาก็เป็นการประกาศตัวแปร และ Link กับ Interface เช่นเคย
จะเห็นได้ว่า บาสสร้าง String Array ขึ้นมาเก็บข้อมูลที่จะแสดงใน Spinner ทั้งหมดด้วย...
พอจะเดาออกไหมครับ ?? ว่าเราจะทำโปรแกรมอะไรกันนนน...

ต่อมาเราจะทำการ สร้าง ArrayAdapter ข้อมูลชนิด String (Type ขึ้นอยู่กับข้อมูลใน Array ของคุณ)
Method ในการสร้าง ArrayAdapter (บรรทัดที่ 32) รับ Parameter ทั้งหมด 3 ตัว นั่นคือ

ArrayAdapter<type> adapter_name = new ArrayAdapter<type>(this,layout,data)

ซึ่ง layout เป็นรูปแบบการแสดงผลเมื่อเรากดที่ Spinner ในที่นี้ใช้ android.R.layout.simple_spinner_item
(แต่มีให้เลือกหลายแบบนะ ลองเล่นได้ ^^)
ส่วน data ก็ใส่ Array Object ที่คุณประกาศขึ้นมาในตอนแรกแหละครับ ^^ ข้อมูลน่ะ

บรรทัดที่ 33 นั้น... เป็นการกำหนดให้มีการจำค่า ที่เราเลือกไว้ก่อนหน้านี้ ^^
โดยใช้ Method ที่ชื่อว่า setDropDownViewResource()

บรรทัดที่ 34 เป็นการใส่ Adapter ให้ Spinner ของเรา... โดยใช้ Method setAdapter(adapter)
บรรทัดที่ 35 เป็นการกำหนดค่า Listener ที่จะใช้ในการเลือกข้อมูลจาก Spinner โดยใช้คำสั่ง
                    setOnItemSelectedListener(methodName);


จากนั้นให้ออกมาสร้าง Inner Class ชื่อตามนี้เลย พิมพ์ไปเรื่อย ๆ ใช้ AutoComplete ช่วยขะได้แบบนี้
Inner Class นี้จะมี 2 Method หลัก ๆ ที่จำเป็นต้องเขียนคือ

 - onItemSelected
   เป็น Method ที่จะถูกเรียกเมื่อเรามีการเลือกข้อมูลใน Spinner
 - onNothingSelected
   เป็น Method ที่จะถูกเรียกเมื่อไม่มีการเลือกข้อมูลใด ๆ ใน Spinner


หลัก ๆ ที่เราต้องใช้คือ ตัว arg2 ซึ่งเป็นตัวเลข integer บ่งบอก index ของข้อมูลใน Spinner
ดังภาพบาสสั่ง setText ด้วย color[arg2] เราก็จะได้ค่า String ออกมา แล้วทำการ setText

และนำค่า color[arg2] ไปเช็คว่า String ที่ออกมานั้นเป็นชื่อของสีอะไร
และนำไป setBackGroundColor ของ layout

โปรแกรมที่ได้ก็จะประมาณนี้นะ
หน้าจอหลัก
เมื่อกดที่ Spinner ก็จะมี เมนู ขึ้นมาให้เลือกสีต่าง ๆ
เมื่อเลือกแล้ว TextView ก็จะเปลี่ยนข้อความตามสีที่เราเลือก
และพื้นหลังก็เป็น สี ตามที่เราเลือกด้วย ^^
เรียบร้อยนะครับ ^^ สงสัยอะไรก็ Comment ถามมาได้
ขอจบ Blog นี้เพียงเท่านี้แหละครับ...
ราตรีสวัสดิ์ พี่น้องชาวไทย ฮ่าฮ่า...

Popular posts from this blog

12 วิธี การบริการและดูแลลูกค้าในร้าน Starbucks

[Android Dev] การติดตั้ง Eclipse+AndroidSDK เพื่อพัฒนาโปรแกรมบน Android

5 TED Talk ที่จะช่วยให้คุณทำงานดีขึ้น