iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 2
0

Discount

Discount

使用者使用流程

使用者輸入金額 -> 移動SeekBar -> 顯示打折金額與打折後價格

實作過程

首先,我們在 MainActivity 宣告兩個區域變數,分別代表使用者輸入的值與使用者移動 Progress Bar 的比例。

取得 User 輸入的值

我們要先取得 User 所輸入的值,所以我在 MainActivity 下寫了一個 function

private fun userInput() {

        priceEditText.setOnEditorActionListener { textView, actionId, keyEvent ->

            if (actionId == EditorInfo.IME_ACTION_DONE) {
                value = priceEditText.text.toString().toFloatOrNull() ?: 0f
                priceEditText.setText("$$value")
            }
            false
        }
    }

我們透過 setOnEditorActionListener 所傳的參數 actionId 來判斷使用者是否按下了確定按鈕。
如果想知道更多關於 EditorInfo 參數可以看這邊

我們在設定 value 的部份我們可以看到我是使用了一個 toFloatOrNull
這 function 代表我們將這個字串轉成 Float 型態,但如果字串中並不包含數值型態的值,他會回傳 null
但我們並不想要讓 null 值有機會被傳送出來,我們就使用了 elvis if (?:)
這表示如果 elvis if 左側的條件是等於 null 的話會回傳右側的值

舉例來說,如果使用者在 EditText 裡輸入了 "lester" 這個字串,經過判斷後 Kotlin 會傳送 null 出來
但經過 elvis if 判斷後會最終會傳出 0f

按下確定按鈕後我們就可以將值存在區域變數方便其他地方使用,並將它顯示在 EditText 上,特別注意我們在這邊加入了 $ 號。
這個 Listener 需要回傳一個 Boolean 值,回傳 false 代表當使用者按下確定後收回鍵盤。

這個功能我們也可以透過 Editor.addTextChangedListener 來實作

今天就先這樣,我們明天見囉~~


上一篇
Day1 Kotlin 實作 TapCounter
下一篇
Day3_Discount_2 移動 ProgressBar 囉
系列文
發現新大陸-Android Kotlin 開發之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言