[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
โปรแกรมที่ได้ก็จะประมาณนี้นะ
เรียบร้อยนะครับ ^^ สงสัยอะไรก็ Comment ถามมาได้
ขอจบ Blog นี้เพียงเท่านี้แหละครับ...
ราตรีสวัสดิ์ พี่น้องชาวไทย ฮ่าฮ่า...
เรื่องนี้เป็นเรื่องของ Spinner ครับ หน้าตาของ Spinner ก็ประมาณนี้
พอกดแล้วก็จะขึ้น Menu ให้เลือก
ซึ่งเมนูนั้น... ก็จะเก็บเป็น Array ครับ...
Let's Coding Begin
ในส่วนของ XML ก็ประมาณนี้ครับ
คำสั่งเกี่ยวกับ Spinner ไม่มีอะไรเป็นพิเศษเลยจริง ๆ ... เป็นคำสั่งพื้นฐานในการแสดง Object ทั้งหมด
และแน่นอน Spinner ของผมวางอยู่บน Relative Layout ตามถนัด ^^
![]() |
จากโค้ดเมื่อกี้ จะได้หน้าตาประมาณนี้แหละครับ |
import ของที่ต้องใช้เข้ามาทั้งหมดก่อน
เราจะเห็นได้ว่า... มีของเล่นใหม่นั่นคือ ArrayAdapter และ AdapterView
ซึ่งสองตัวนี้แหละครับ ที่จะช่วยเราจัดการข้อมูลใน Spinner
จะเห็นได้ว่า บาสสร้าง 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 ก็จะเปลี่ยนข้อความตามสีที่เราเลือก และพื้นหลังก็เป็น สี ตามที่เราเลือกด้วย ^^ |
ขอจบ Blog นี้เพียงเท่านี้แหละครับ...
ราตรีสวัสดิ์ พี่น้องชาวไทย ฮ่าฮ่า...
ทำ spiiner บน dialog ไม่ขึ้นอ่ะ
ReplyDeleteทำตามขั้นตอนแล้วแปลกๆอ่ะครับ
ReplyDeleteตัวอักษรข้างบน Background color is ___ เปลี่ยนครับ
พอเลือก blue แล้ว background ข้างหลังก็เปลี่ยนเป็น blue ปกตินะครับ
แต่พอเลือกสีอื่นแล้วไม่เปลี่ยนเลย ลองเช็คหลายรอบแล้วก็ไม่ได้ ไม่ทราบว่าผมผิดตรงไหนครับ
นี่เป็นการเปลี่ยนสีโดยทำการเปรียบเทียบกับ String ที่เลือกเข้ามานะครับ
ReplyDeleteฉะนั้นตัวเล็กหรือตัวใหญ่มีความหมายนะครับ เช็คให้ดี ต้องเหมือนเป๊ะนะ
ถ้ายังไม่ได้อีก ลองเปลี่ยนจากใช้ == เป็นการใช้ .compareTo() เพื่อเปรียบเทียบ String นะครับ
onChoose ไม่มีการประกาศตัวแปรหรอคับ คือมัน errorอะคับ
ReplyDeleteก็มีนะครับ คือ onChoose ที่เขียนใน onCreate เป็นตัวอ้างถึงเฉยๆ
ReplyDeleteมันเป็นชื่อ method ของ adapterView ที่อยู่ด้านล่างครับ