databinding (4) 썸네일형 리스트형 Databinding 사용 시, 경우에 따라 View 바인딩 하는 방법 Databinding 라이브러리 사용 시, 사용되는 경우(Activity, Fragment, Adapter, CustomView...)에 따라 xml 레이아웃을 바인딩하는 방법에 차이가 있어서 간단히 정리해보았습니다. 모든 내용은, Android developers 래퍼런스의 Generated binding classes 가이드를 참고하였습니다. Activity override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val binding = DataBindingUtil.setContentView(this, layoutId) } Fragment, Adapter val binding = ListItemBin.. Two-way binding cannot resolve a setter for ... 해결 방법 문제 발생 Databinding 라이브러리를 사용하여, View -> ViewModel 로 데이터를 갱신하기 위해 InverseBinding를 했을 때 다음과 같은 에러가 발생하였다. Two-way binding cannot resolve a setter for ... 문제 해결 혹시 코틀린으로 개발을 하는 경우라면, 데이터 바인딩하려는 데이터 클래스의 해당 변수가 var로 선언되어있는지 확인해야 합니다. 만약, 해당 변수가 val로 선언되어있다면, var로 수정해야 합니다. val은 값 변경이 불가능하기 때문에, Inverse시 setter()를 할 수 없어 발생하는 에러이므로, 해당 변수를 var로 수정하신 후 다시 실행해보시면 정상적으로 양방향(Two-way) 바인딩이 되는 것을 확인하실 수 있습니.. Android DataBinding vs Kotlin Extensions 의 XML 레이아웃 접근, 어떤 방식이 더 좋을까? MVVM 아키텍처와 코틀린을 같이 하다 보니, XML 레이아웃 뷰 접근을(findViewById) 대체할 수 있는 방식이 서로 달라서, 과연 어떤 방식으로 하는 게 좋을까? 라는 궁금증이 생겼습니다. MVVM 아키텍처를 위해 DataBinding 을 사용하고 있고, 코틀린을 위해 Kotlin Extensions를 사용하고 있다면, XML 뷰에 접근하기 위해 각자마다의 findViewById 대체 방법이 존재합니다. 우선, XML에 아래와 같은 TextView가 있다고 가정하고, 각자의 접근 방식에 대해 알아보겠습니다. [ DataBinding ] binding.textviewTitle.text = "안드로이드" [ Kotlin Extensions ] textview_title.text = "안드로이드" .. 기존 레이아웃을 데이터바인딩 레이아웃으로, 한방에 자동 변환하기! 기존 레이아웃을 데이터 바인딩으로 변환하려면, 최상단 루트(Root)를 태그로 감싸야합니다. 또한, 네임 스페이스 정의 (xmlns:로 시작하는 속성 예) xmlns:android, xmlns:app...)도 루트로 이동해야 합니다. 수동으로, 잘라내기(복사)+붙여넣기 해도 그리 복잡한 작업은 아니지만, 여러 xml파일들을 일일이 작업한다면 상당히 번거로운 작업이 될 수 있습니다. 그래서, 안드로이드 스튜디오는 이런 작업을 자동으로 수행해주는 편리한 기능을 제공해줍니다! 방법 1. 변환하기 전의 기존 레이아웃 루트에 커서를 위치시키고 2. ⌥(option) + Enter 키 (Alt + Enter for Win/Linux) 입력 후, "Convert to data binding layout" 선택 3. .. 이전 1 다음