Android的日期選擇元件DatePicker—SQLite延伸內容1

作者 | 2016-07-02

本篇文章是介紹Android的日期選擇元件DatePicker,範例則是延續這篇:

「Android高效入門—SQLite資料庫」

文章中的消費記錄查詢與新增,若之前已實作了該篇的內容,應該也完成了Atm專案中的消費記錄功能,若沒有,可以由Github中取得Atm專案進行本篇的練習,請參考書中的第0章 Git版本控制系統,由GitHub中取得Atm專案,資訊如下:

檔案庫(Repository): https://github.com/android66/Atm.git
版本名稱: SQLite-四欄客製化ListView與Singleton實作

在上一篇SQLite的內容中,新增消費記錄的使用者介面中使用一般的EditText元件讓使用者輸入消費日期,我想這樣的APP應該不會討人喜歡,應該使用更親民的日期選擇元件-「DatePicker」,如下圖:

A7312

接下來的內容要把原本的EditText元件改為DatePicker元件。

更換元件為DatePicker

請開啟AddActivity類別的版面版置檔「res/layout/activity_add.xml」,把之前輸入日期的EditText元件的「visibility」屬性值設定為「GONE」,如下圖:

A7303_n

再到左方元件選擇區找到「Date&Time」分類中的「DatePicker」元件,並放到所屬的位置上,如下圖:

A7306

將DatePicker元件放進去所屬位置後,它會占很大的位置,原因它的預設下方會多出個日曆顯示,如下圖:

A7307

只要更改兩個屬性,即可讓它小一點,日曆元件的屬性:

1. android:datePickerMode=”spinner”

設定日期選擇的模式為捲動式,預設值為「calendar」,所以一開始才會那麼占空間。

2. android:calendarViewShown=”false”

是否顯示日曆屬性值,設定為false後日曆就不會出現了。

完成設定的預覽圖如下:

A7313

在這裡有個要注意的事項,Android Studio在設定DatePicker的屬性時有個會跳離元件的bug,目前仍未修正。在設定一個屬性後,原本已選擇了的DatePicker元件會跳離,要再手動去點選它一次,且設定值有時會跑掉。所以,在實務上設定DatePicker元件時,常會直接去改layout的原始碼,以手動方式加入或設定這些屬性,就不會出問題了,如下:

取得日期並轉換格式

請開啟「java/com.tom.atm/AddActivity.java」,在findViews方法中加入取得DatePicker元件的程式碼,並將其提升為類別的屬性,如下:

接著在之前所設計的add方法中,註解之前取得cdate字串的程式碼,再呼叫DatePicker的getYear、getMonth與getDayOfMonth方法取得年、月、日,請注意取得的月值為0到11,因此要加1後再組合成字串,如下:

執行後,新增消費記錄的介面如下圖:

A7311

在本例,使用DatePicker可避免使用者輸入規格不符的字串造成程式錯誤,還能加強使用者介面,讓使用者能更方便選擇日期。

下一個延續內容將聊到由第三方所提供的日期選擇元件。

相關文章:

Category: Android 標籤:, ,

關於 Hank Tom

專長為程式語言、雲端服務開發,Linux系統管理, 任職:利拓科技 技術長,海林行動科技 技術總監 輔仁大學 兼任助理教授 ,為 Android高效入門>深度學習、CentOS 7建置、管理與伺服器架設實戰、Java網路程式設計、雲端網頁程式設計-Google App Engine應用實作 等書作者

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *