ตอนที่ 5 : ตรวจสอบสถานะของเมนู

ตอนนี้เราได้รายการเมนูที่เปิดอยู่ทั้งหมดมาแล้ว
เราเก็บมันเอาไว้ในรูปแบบ array ชนิด String

ถ้าเมนูชื่อเมนู ถูกส่งมา แสดงว่า “เปิด”
ถ้าไม่มีชื่อเมนู ส่งมา แสดงว่า “ปิด”

เรารู้อยู่แล้วว่าเมนูทั้งหมดมีรายการอะไรบ้าง
ตอนนี้เรามีข้อมูลในรูปแบบนี้

mystou-com-android-dm-5-1

แต่ความต้องการของเราอยากได้ข้อมูลแบบนี้

mystou-com-android-dm-5-2

เราอยากรู้ว่า แต่ละเมนู เป็น true หรือ false
ถ้าเป็น true คือ เปิด
ถ้าเป็น false คือ ปิด

เราลองคิดแก้ปัญหานี้ จากสิ่งที่เรามี….

ตอนนี้เรามี รายการเมนูทั้งหมด ก็เอามันเป็นเมนูตั้งต้น
แล้วนำรายการเมนูที่รับมาจาก API มาตรวจเช็ต
โดยการตรวจสอบ Sring ให้ตรงกัน

ถ้ามีข้อมูลส่งมา ก็กำหนดให้เมนูนั้นมีค่าเป็น true
ถ้าไม่มีข้อมูลส่งมา ก็กำหนดให้เมนูนั้นมีค่าเป็น false

คิดออกหรือยังคะว่าเราจะเอาอะไรมาเก็บ 2 ค่านี้
คือ 1 รายชื่อเมนู และ 2 สถานะของมัน

เราจะใช้ HashMap
โดยตำแหน่งของ String เราจะใส่ชื่อเมนู
ส่วนตรง Boolean เราจะใช้เก็บสถานะของเมนู

วางแผนเสร็จแล้ว ลงมือเขียนโปรแกรมกันค่ะ
สร้างคลาส ConstantsMenus.java ขึ้นมา
เก็บรายการเมนูทั้งหมดที่มีเอาไว้ ดังนี้

ต่อมาสร้างคลาส Menu.java ขึ้นมา
ใช้ในการจัดการต่าง ๆ เกี่ยวกับเมนู

สร้างเมธอด getMainMenu() ขึ้นมา
มีหน้าที่คือ คืนค่าเมนูทั้งหมดที่จะใช้เปรียบเทียบ

และสร้างเมนู checkStatus()
รับค่าเมนูที่รับมาจาก API นำมาเปรียบเทียบกับเมนูของเรา

ถ้า มีข้อมูล String ตรงกัน ให้เมนูนั้นมีค่า true
ถ้า ข้อมูลไม่ตรงกัน ให้เมนูนั้นมีค่าเป็น false
ส่วน key ของ HashMap ก็คือ ชื่อเมนู

ตามแผนที่วางเอาไว้ค่ะ เขียนโค้ดจริง ๆ จะได้ผลหรือไม่ค่อยว่ากันอีกที 🙂

จะได้โค้ดทั้งหมดดังนี้ค่ะ

มาที่ไฟล์ MainActivity.java
ลองเรียกใช้เมธอดที่เราสร้างขึ้นมา
ส่งค่ารายการเมนูที่รับมาจาก API ไปให้ตรวจสอบค่ะ

Toast ค่า HashMap ออกมาดูใช้ .size() นะคะ

จะได้โค้ดดังนี้

ลอง Run ดูผลลัพธ์ นะคะ

mystou-com-android-dm-5-3

ปรากฏว่าตอนนี้เรามี 14 เมนู คือรายการเมนูทั้งหมด รวม MySQL ด้วย
สิ่งที่เปลี่ยนไปคือ ตอนนี้เรารู้แล้วว่า แต่ละเมนู เป็น true หรือ false

ในตอนต่อไปเราจะทำการตรวจสอบว่า
ถ้าเมนูใดเป็น true หมายถึงเปิดอยู่ ก็ให้ add รูปภาพเมนูลงไป
เราก็จะได้เฉพาะภาพเมนูที่เปิดอยู่เท่านั้น

แล้วค่อยส่งข้อมูลนี้ไปให้ Adapter นำไปจัดการการแสดงผลต่อไป


เรื่องที่เกี่ยวข้อง : >> Dynamic Menu
ตอนที่ 1 : ภาพรวมของระบบ (Overview)
ตอนที่ 2 : ออกแบบหน้าจอ
ตอนที่ 3 : สร้าง Adapter
ตอนที่ 4 : จำลองข้อมูลที่จะได้รับจาก API
ตอนที่ 5 : ตรวจสอบสถานะของเมนู
ตอนที่ 6 : จัดการกับรูปภาพ
ตอนที่ 7 : ส่งข้อมูลให้ Adapter
ตอนที่ 8 : จัดการกับเหตุการณ์ เมื่อรูปภาพถูกสัมผัส
ตอนที่ 9 : สรุป Project Dynamic Menus


ธมนวรรณ มณีจันทร์

ธมนวรรณ มณีจันทร์

|:- เราเชื่อมั่นว่าการเสียสละและการแบ่งปันจะทำให้โลกใบนี้สวยงามมากขึ้น ทุกๆ จุดเริ่มต้นของการเรียนรู้ นำไปสู่การเรียนรู้ถัดไป เว็บไซต์แห่งนี้ขอเป็นส่วนหนึ่งของการแบ่งปันความรู้ที่ไม่มีที่สิ้นสุด มาร่วมกันผลักดันโลกของเราให้หมุนไปพร้อมกับพลังแห่งความรักด้วยกันนะคะ :) >>> |:- About Me! -:|