EditText 에서 done 또는 search 버튼을 선택하면 databinding 을 하려고 하는데 제대로된 글이 일단 없다.
혹시나해서 google code 에 data binding 쪽 소스를 찾아봤는데
https://android.googlesource.com/platform/frameworks/data-binding/+/master/extensions/baseAdapters/src/main/java/android/databinding/adapters
@BindingMethods 이 선언은 되어 있지만 동작 불가..
그래서 일단 binding adapter 를 만들어 봤고 동작 확인은 했다.
EditText 에 리스너는 내가 직접 등록 하고 callback 만 전달 하는 형태로 하기로 설계하고
코드를 아래와 같이 작성하였고
object EditTextBindingAdapter {
@JvmStatic
@BindingAdapter("bindEditorAction")
fun bindEditorAction(view: TextView, callback: (String) -> Boolean) {
view.setOnEditorActionListener { _, id, _ ->
when (id) {
EditorInfo.IME_ACTION_DONE,
EditorInfo.IME_ACTION_SEARCH -> {
callback(view.text.toString())
}
else -> false
}
}
}
}
인자는 callback: (String) -> Boolean 형태로 고차함수로 받고
view model 은 val editorAction = ObservableField<(String?) -> Boolean>() 이렇게 선언한 뒤
아래와 같이 초기화 하면 set 내 고차 함수로 callback 이 전달 되게 된다.
editorAction.set {
// TODO
true
}
마지막으로 xml 에 app:bindEditorAction="@{model.editorAction}" 를 추가하면
문제 없이 잘 된다.
혹시나해서 google code 에 data binding 쪽 소스를 찾아봤는데
https://android.googlesource.com/platform/frameworks/data-binding/+/master/extensions/baseAdapters/src/main/java/android/databinding/adapters
@BindingMethods 이 선언은 되어 있지만 동작 불가..
그래서 일단 binding adapter 를 만들어 봤고 동작 확인은 했다.
EditText 에 리스너는 내가 직접 등록 하고 callback 만 전달 하는 형태로 하기로 설계하고
코드를 아래와 같이 작성하였고
object EditTextBindingAdapter {
@JvmStatic
@BindingAdapter("bindEditorAction")
fun bindEditorAction(view: TextView, callback: (String) -> Boolean) {
view.setOnEditorActionListener { _, id, _ ->
when (id) {
EditorInfo.IME_ACTION_DONE,
EditorInfo.IME_ACTION_SEARCH -> {
callback(view.text.toString())
}
else -> false
}
}
}
}
인자는 callback: (String) -> Boolean 형태로 고차함수로 받고
view model 은 val editorAction = ObservableField<(String?) -> Boolean>() 이렇게 선언한 뒤
아래와 같이 초기화 하면 set 내 고차 함수로 callback 이 전달 되게 된다.
editorAction.set {
// TODO
true
}
마지막으로 xml 에 app:bindEditorAction="@{model.editorAction}" 를 추가하면
문제 없이 잘 된다.
'Android' 카테고리의 다른 글
dagger + retrofiit + baseurl 이 다수일때 (0) | 2018.12.11 |
---|---|
kotlin + dagger2 + shared preferences (0) | 2018.12.11 |
간만에 어이 없는 삽질.. (0) | 2018.10.30 |
간만에 어이 없는 삽질.. (0) | 2018.10.29 |
github blog (0) | 2018.10.25 |