[kotlin] 데이터바인딩을 이용한 폼 유효성 검사
폼 유효성 검사는 사용자가 입력한 데이터가 예상대로 유효한지 확인하는 중요한 작업입니다. 안전하고 정확한 데이터 저장을 위해 필수적입니다. Kotlin의 데이터바인딩 라이브러리를 사용하면 XML 레이아웃과 Kotlin 코드를 연결하여 폼 유효성 검사를 쉽게 수행할 수 있습니다. 이 글에서는 Kotlin을 사용하여 데이터바인딩을 통한 폼 유효성 검사를 알아보겠습니다.
1. 데이터바인딩 설정
먼저, build.gradle 파일에 데이터바인딩을 활용할 수 있도록 설정해야 합니다.
android {
...
buildFeatures {
dataBinding true
}
}
2. XML 레이아웃 설정
다음으로, XML 레이아웃 파일에서 데이터바인딩을 활용할 수 있도록 설정하고, 폼 입력 필드와 해당 필드에 대한 에러 메시지를 보여줄 수 있는 뷰를 준비합니다.
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="viewModel"
type="com.example.ViewModel" />
</data>
<LinearLayout
...
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
...
android:text="@={viewModel.username}" />
<TextView
...
android:error="@{viewModel.usernameError}" />
...
</LinearLayout>
</layout>
3. ViewModel 작성
다음으로, 해당 폼에 대한 유효성을 검사할 ViewModel을 작성합니다. ViewModel은 ObservableField와 ObservableBoolean을 이용하여 사용자 입력값과 유효성 여부를 추적합니다.
class ViewModel {
val username = ObservableField<String>("")
val usernameError = ObservableField<String>("")
fun validateUsername() {
val input = username.get()
if (input.isNullOrBlank()) {
usernameError.set("Username cannot be empty")
} else {
usernameError.set("")
}
}
val isFormValid = ObservableBoolean(false)
fun validateForm() {
isFormValid.set(usernameError.get().isNullOrBlank())
}
}
4. XML과 ViewModel 연결
마지막으로, XML 레이아웃과 ViewModel을 연결합니다. XML 파일에 정의된 뷰를 ViewModel과 연결하고, 입력값 변화에 따라 유효성 검사 메소드를 호출하도록 설정합니다.
class MainActivity : AppCompatActivity() {
lateinit var binding: ActivityMainBinding
private val viewModel = ViewModel()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
binding.viewModel = viewModel
binding.username.addTextChangedListener {
viewModel.username.set(it.toString())
viewModel.validateUsername()
viewModel.validateForm()
}
binding.isFormValidButton.isEnabled = viewModel.isFormValid.get()
}
}
이제 데이터바인딩을 통해 폼 유효성 검사를 구현하는 방법을 알게 되었습니다. 데이터바인딩은 코드를 더 간결하고 유지보수하기 쉽게 만들어주며, Kotlin과 함께 사용하면 더욱 효율적으로 폼 유효성 검사 기능을 구현할 수 있습니다.
참고:
- https://developer.android.com/topic/libraries/data-binding
- https://medium.com/androiddevelopers/android-data-binding-library-from-observable-fields-to-livedata-5f9d90b9ee7e