web analytics

Android Code : Event and Calendar View 2 ไลบรารี่ปฏิทินเล็กๆ

cover

สวัสดีครับ บทความนี้ขอมาอัพเดทไลบรารี่ปฏิทินที่ผมเคยทำไว้ (แล้วใช้ไม่ค่อยได้) ให้มันดีขึ้นอีกนิด พอดีมีเพื่อนคนนึง เขาจะทำแอปี่มีปฏิทินคล้ายๆแบบนี้ เลยสนใจจะใช้ไลบรารี่ตัวนี้ในงานของเขา (คิดดีแล้วเหรอ) แต่ว่าอันเก่ามันใช้ยากและมีบัค เลยต้องมาอัพเดทแก้ไขนั่นเอง

การใช้งาน

ดาวน์โหลดไฟล์ .aar แล้วสร้าง module ใน Android studio project

calendarevent2
update 17 Jul 2017

วิธีการนำไฟล์ .aar มาใช้งาน สามารถอ่านได้จากบทความข้างล่างนี้

Android Tip : การนำไลบรารี่ ไฟล์ .aar มาใช้ใน Android studio

MyEventListView

คลาส MyEventListView เป็น ListView ที่เอาไว้แสดงรายการวันสำคัญ หรือ event ต่างๆ ซึ่งสามารถปรับสี ปรับธีมได้เล็กน้อย
เปลี่ยนชื่อจาก ListMyEventView

กำหนด ListMyEventView ใน xml

ตัวอย่างการใช้งาน และแสดงข้อมูลสมมุติ

กำหนดให้ แสดงสีประจำวันในแต่ละวัน

กำหนดธีม มีให้เลือก 2 อันคือ Dark , Light โดย default คือ Dark

3-1

กำหนดสีได้ดังนี้ หากอันไหนไม่ได้กำหนด ก็จะเป็นสีตามธีมที่เลือกไว้

5

OnEventSelectedListener

สามารถรู้ข้อมูลของแถวที่เลือกได้ โดยการ setOnEventSelectedListener

การนำข้อมูลจริงมาใช้งาน

ข้อมูลที่จะนำมาใช้จะเหมาะกับ JSON ที่มีลักษณะประมาณข้างล่างนี้ คือแยก event ตามเดือน (เหมือนเวอชันเดิม)

วาดรูปก็คงจะมีลักษณะประมาณนี้

8

เช่น ลองสร้างรายการของ event สำหรับ 1 เดือน โดยเดือนนี้มี 7 event

สร้าง EventMonth ขึ้นมา และกำหนดค่าเดือน และปี

และสร้าง ArrayList<Event> และสมมุติข้อมูล Event  7 อัน และกำหนดค่าต่างๆ เช่น title

แล้วก็มากำหนดค่า รายการของ event ให้ EventMonth อีกที

ทีนี้ก็ทำให้เป็น ArrayList<EventMonth> และนำมาใส่ใน EventListViewAdapter

9

จะเห็นว่า ถ้ามีข้อมูลรูปแบบคล้ายๆ JSON อย่างที่บอกไป หรือแยก event ตามเดือนมาก็จะสามารถทำ Model แล้วนำมาใช้ได้ง่ายๆเลย

CalendarFragment

คลาส CalendarFragment เป็น fragment ตามชื่อเลย เจ้าตัวนี้คือเอาไว้เปิด ปฏิทินขึ้นมา โดยจะใช้ข้อมูลลักษณะเดียวกันกับ MyEventListView

11

วิธีการใช้งาน

เตรียมข้อมูลของปฏิทิน ArrayList<EventMonth> ให้เรียบร้อย
จากนั้นสร้าง CalendarFragment

แล้วสร้าง CalendarFragemnt ขึ้นพร้อมกำหนดข้อมูลลงไป
currentMonth , currentYear คือ เดือนและปีที่ต้องการให้เป็นค่าเริ่มต้น

กำหนดสีต่างๆ ธีม พื้นหลัง โดยธีมมีให้เลือกคือ Dark , Light

12

กำหนด การ click เมื่อผู้ใช้กดวันที่บนปฏิทิน จะส่งค่าตัวแปร dayCalendar กลับมา
ซึ่งใน dayCalendar จะมีข้อมูลวันที่และรายการ event อีกที (ใน 1 วันอาจจะมีหลาย event ก็ได้)

สุดท้ายคือการเปิด ปฏิทินขึ้นมาโดยใช้คำสั่ง toggleCalendar
R.id.content_container คือ view ที่เอาไว้สำหรับให้ ปฏิทินไปแปะทับ

จากนั้นปฏิทินจะถูกเปิดขึ้นมา ตามที่กำหนดเอาไว้

10

การกำหนดจุดวงกลมบนปฏิทิน สามารถกำหนดได้ที่ตอนสร้างจาก คลาส Event

การกำหนดวงกลม ของวันนี้ ให้แตกต่าง

สามารถเรียกคำสั่ง show , close ได้เช่นกันในการแสดงปฏิทิน