使用者輸入金額 -> 移動SeekBar -> 顯示打折金額與打折後價格
首先,我們在 MainActivity 宣告兩個區域變數,分別代表使用者輸入的值與使用者移動 Progress Bar 的比例。
我們要先取得 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 來實作
今天就先這樣,我們明天見囉~~