본문 바로가기

데이터바인딩

데이터 바인딩 표현식 실제 사용하면서 겪은 사례 모음집 -삼항연산자 문자열을 비교하고싶을때 여기서 equals 함수 안쓰고 ==쓰면 이미지 뷰같은거에서는 안먹힘 그냥 다 false로 되어서 GONE처리됨 근데또 view에서는 먹힘 이상함 그니까 그냥 equals 함수쓰자 여기서 또 신박한 방법 type로 지정해서 문자열을 넣어줄수있다. 문자열 을 타입으로 받아서 쓰기!! class HomeMyStatusMode { companion object{ const val REST = "REST" const val DONE = "DONE" const val NONE = "NONE" } } 이렇게 companion object 만들고 xml 에서는 이렇게 type 으로 가져온다 다음 equals에 넣어놓은것처럼 변수처럼 사용하면 문자열이 들어간다. 결론 문자열을 사용할.. 더보기
DataBinding의 BindingAdapter BindingAdapter는 우리가 기존에 DataBinding을 통해서 변수의 데이터를 직접 뷰에다 선언적으로 붙여주는것을 할때 직접 정의하지는 않았지만 androidx.databinding.adatpers 에 정의되어있는 어댑터들을 통해 textView 같은 View의 text속성에 변수를 선언 해줄수있었다. 이런식으로 이미 정의되어있는 어댑터들도 있지만 모든 부분이 다 정의 되어있지 않기에 우리가 원하는 부분의 Adapter가 정의되어있지 않은 경우 직접 커스텀해서 사용해야한다. ex)이미지뷰의 src 같은속성 혹은 뷰의 visibility같은것들을 조정하기 위하여 이런경우에 직접 BindingAdapter를 통해서 조작하여주는데 코드단에서 조작해줄수있는 부분을 미리미리 작성하는 느낌으로 타겟이되는.. 더보기
databinding의 Two-way Binding 안드로이드의 Two-way Binding을 살펴볼것이다. 우선 Two-way Binding 이 무엇인가? 개념적으로 보면 여태까지 적용시킨 데이터 바인딩은 코틀린 파일에있는 변수들을 직접 xml에 가져다 붙여서 변수의 내용을 xml에 표시하는것이였다. 그렇다면xml 파일에서 즉 사용자가 view에서(ex. edittext) 같은거에서 작성하는것을 변수로 받아오는것을 databinding으로 할수 없는것인가? 이 부분이 Two-way Binding이다. 즉 사용자가 xml에 입력한데이터 들을 변수와 연결시켜놓으면 그 변수에 저절로 들어가게 만드는것이다. 물론 실시간으로 하려면 livedata를 곁들인 그런형태가 되어야 하지만 어쩃든 그렇다. 그래서 이것의 쓰임새를 생각해보면 MVVM에서 뷰와 뷰모델을 느슨.. 더보기
리사이클러 뷰에 databinding적용해보기 사실 3주차 과제정리에 쭉해놨고 실제로 적용도 했다 하지만 빡갈통인 날 믿을수없어 나중에 찾아헤멜것을 걱정해서 다시 한번 정리한다. 두괄식으로 결론부터 말하자면 data를 적용하는 xml은 각 리사이클러 뷰의item xml파일에 를 넣어주고 각각 viewholder에서 데이터를 각각 받아온것들을 집어넣어주는 형태이다 viewholder에서는 각각 xml들을 갖고있을테니까 ㅎㅎ 그래서 실제로해본것을 정리했다 dataBinding을 리사이클러 뷰에 적용하기 리펙토링을 해보자 1. 당연히 gradle추가해주고 android { ... dataBinding { enabled = true } } 2.리사이클러의 아이템뷰 의 xml을 으로 감싼다. 아이템을 감쌌다. 3.data variable 추가 layout안에.. 더보기
Kotlin Android Extensions,Viewbinding,databinding 기존에 안드로이드를 처음 배웠을때 공부했었던 프로젝트들을 복습하려고 열어본결과 이렇게 Kotlin Android Extensions이 deprecated 되었다며 대체 할거로 viewbinding이나 databinding을 이용하라고 한다. 그래서 Kotlin Android Extensions은 왜 팽당했는가, Viewbinding,databinding 은 무엇이며 어떻게 사용해야 하는가를 알아 보려한다. 우선 이것들이 뭣 때문에 하는지 알아보자 xml 파일의 뷰들을 java파일에서 이벤트 처리를 위해 사용하려면 메모리에 올라와있어야 하는데 그래서 액티비티의 onCreate() 에서 setContentView()를 통해 인플레이션을 한다. 인플레이션이란 xml 레이아웃 파일 안에 들어있는 뷰 태그들을 이.. 더보기