• 로그인 함 해보끄나?

  • Sarangnamu.net June 17, 2003
    Home Login Profile Study Open Project Q&A Google Code
    EditText imeOption="actionSearch" 에 databinding 하기
    Last Modify : 11 December, 2018(05:24)
    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}" 를 추가하면 문제 없이 잘 된다.

    Comment


    입력하3 1553296215



    Locations of visitors to this page