오늘은 데이터 바인딩을 리사이클러뷰에 적용시켜보려고 한다.
우선 시작은 똑같다.
gradle-android안에 아래 내용을 추가해준다.
dataBinding{
enable = true
}
@Parcelize
data class MyItem(
val user_key: String, //유저키
val nickname: String, //닉네임
val r_date: String, //작성 일시
) : Parcelable
사용할 데이터를 데이터클래스를 사용해서 만들어준다.
나는 리사이클러뷰에 적용시키려고 하니 리사이클러뷰의 item을 만든 xml에서 사용해줄 예정이다. 먼저 최상단 레이아웃을 기본 layout으로 묶어준다.(option + enter로 쉽게 가능)
그 후 data안에 item변수를 만들어준다. 여기서 type은 미리 만들어둔 데이터 클래스의 위치를 넣어준다.
<data>
<variable
name="item"
type="com.woojin.pickshare.model.MyItem" />
</data>
그리고 그 아래에서 내가 사용할 부분에 넣어주면되는데 닉네임 부분으로 보자면 text부분에
android:text="@{item.nickname}"
이렇게 넣어주면된다. 이렇게 하면 해당위치에 알아서 데이터가 들어간다.!
api를 이용해서 데이터를 가져오고, 해당 데이터를 adapter안에서 다시 적용시켜주는 작업을 하지않고, xml에서 간단하게 할 수 있다!
기존 어뎁터의 ItemViewHolder에서
tvNickname.text = item.nickname
이렇게 모든 데이터를 하나하나 넣어줬어야했는데 이제는 아래처럼 두줄만 추가해주면 몇개의 데이터가 있더라도 전부다 사용 가능해진다. 여기서 binding.item에서의 item은 xml에서 만들어준 변수의 이름이다.
binding.item = item
binding.executePendingBindings()