Flow Binding 깃허브 링크
FlowBinding 문서
def flowbinding_version = "1.2.0"
// 플랫폼 바인딩
implementation "io.github.reactivecircus.flowbinding:flowbinding-android:${flowbinding_version}"
// android X 바인딩
implementation "io.github.reactivecircus.flowbinding:flowbinding-activity:${flowbinding_version}"
implementation "io.github.reactivecircus.flowbinding:flowbinding-appcompat:${flowbinding_version}"
implementation "io.github.reactivecircus.flowbinding:flowbinding-core:${flowbinding_version}"
implementation "io.github.reactivecircus.flowbinding:flowbinding-drawerlayout:${flowbinding_version}"
implementation "io.github.reactivecircus.flowbinding:flowbinding-lifecycle:${flowbinding_version}"
implementation "io.github.reactivecircus.flowbinding:flowbinding-navigation:${flowbinding_version}"
implementation "io.github.reactivecircus.flowbinding:flowbinding-preference:${flowbinding_version}"
implementation "io.github.reactivecircus.flowbinding:flowbinding-recyclerview:${flowbinding_version}"
implementation "io.github.reactivecircus.flowbinding:flowbinding-swiperefreshlayout:${flowbinding_version}"
implementation "io.github.reactivecircus.flowbinding:flowbinding-viewpager:${flowbinding_version}"
implementation "io.github.reactivecircus.flowbinding:flowbinding-viewpager2:${flowbinding_version}"
// material componetn binding
implementation "io.github.reactivecircus.flowbinding:flowbinding-material:${flowbinding_version}"
with(binding){
// 버튼 처리
btnEnroll
.click()
.onEach{
// 버튼 클릭되었을때
}
.dedounce(500L) // 클릭이 실행되고 0.5초딜레이
.launchIn(lifecycleScope)
// 텍스트 처리
etMypageKg
.textChanges()
.onEach { text ->
// 텍스트 처리
}
.launchIn(lifecycleScope)
}
private fun subscribeUI() {
merge(
binding.loginButton.clicks().map { Action.WelcomeAction.SelectLogin },
binding.homeButton.clicks().map { Action.WelcomeAction.SelectHome },
binding.registerButton.clicks().map { Action.WelcomeAction.SelectRegister }
)
.onEach { viewModel.actions.offer(it) }
.launchIn(lifecycleScope)
}