본문 바로가기
개발 공부 기록하기/- Android

Android Kotlin EditText 콤마 붙히기 (feat. Extension)

by soulduse 2021. 9. 5.
반응형

EditText에서 숫자를 입력하면, 콤마가 나오게 하고 싶을때가 있다.

Kotlin Extension을 활용하여 간단하게 만들어 보았다.

 

사용법

EditText에 내가 만든 함수만 사용하도록 하면 끝!

 

 

의존성 추가

androidx.core 라이브러리를 사용하면 EditText에 변경된 내용만 바로 가져오는 Extension 코드가 있는데 이를 활용하였다.

app 단위에 Gradle 에 다음과 같은 의존성을 추가해주도록 하자

implementation 'androidx.core:core-ktx:1.6.0'

 

코드

fun EditText.initComma(
    listener: ((originNumber: Double) -> Unit)? = null,
) {
    var amount = ""
    this.doOnTextChanged { text, _, _, _ ->
        if (text.isNullOrBlank() || amount == text.toString()) return@doOnTextChanged
        val removeCommaNumberString = text.toString().replace(",", "")
        amount = removeCommaNumberString.toComma()
        listener?.invoke(removeCommaNumberString.toDouble())
        this.setText(amount)
        Selection.setSelection(this.text, amount.length)
    }
}

 

참고

androidx.core 라이브러리 내부에는 다양한 유용한 Extension 함수들이 많으니 내부를 물고, 뜯고 맛봐도 좋은 경험이 된다.

package androidx.core.widget

public inline fun TextView.doOnTextChanged(
    crossinline action: (
        text: CharSequence?,
        start: Int,
        before: Int,
        count: Int
    ) -> Unit
): TextWatcher = addTextChangedListener(onTextChanged = action)

 

 

 

 

 

 

반응형