[JETPACK개론] View,DataBinding + Adapter
ViewBinding + Adapter
view(Acitivty, Fragment)뿐만 아니라 Adapter에서도 ViewBinding을 사용할 수 있다.
먼저, Adapter를 사용하는 리사이클러뷰를 준비하자!
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
class CustomViewAdapter (private val dataSet : ArrayList<String>) : RecyclerView.Adapter<CustomViewAdapter.ViewHolder>(){
class ViewHolder(binding : TextRowItemBinding) : RecyclerView.ViewHolder(binding.root){
val myText : TextView = binding.myText
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int):ViewHolder {
val view = TextRowItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.myText.text = dataSet[position]
}
override fun getItemCount(): Int {
return dataSet.size
}
}
ViewHolder라는 inner class에서 ViewBinding을 통해 리사이클러뷰의 아이템을 binding해주어, 해당 데이터를 text에 넣어준다.
array.add("a")
array.add("b")
array.add("c")
val customViewAdapter = CustomViewAdapter(array)
val rv = binding.rv
rv.adapter = customViewAdapter
rv.layoutManager = LinearLayoutManager(this)
리사이클러뷰에 해당 데이터들이 잘 들어간 것을 확인할 수 있다.
또한, View에서 ViewBinding, DataBinding 둘 다 사용했던 것처럼
Adapter에서도 DataBinding을 사용할 수 있다.
DataBinding + Adapter
Adapter에서 onCreateViewHolder부분에서 DataBinding으로 바꾸어주기만 하면 된다!!
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int):ViewHolder {
//val view = TextRowItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
val view = DataBindingUtil.inflate<TextRowItemBinding>(LayoutInflater.from(parent.context), R.layout.text_row_item, parent, false)
return ViewHolder(view)
}
리사이클러뷰를 생성하는 부분이 궁금하시다면 여기루!!
[Android] RecyclerView (2)
1. HomeFragment에 RecyclerView를 추가한다! 2. 리싸이클러뷰에 보일 아이템들의 뷰 레이아웃을 구성한다! -> item_album.xml 3. 아이템 뷰 객체들에 들어갈 데이터리스트 생성 -> Album 데이터 클래스 생성.
ssongcode.tistory.com
GitHub - SsongSik/JetPack_Android_Practice: Android practice using the Jetpack library
Android practice using the Jetpack library. Contribute to SsongSik/JetPack_Android_Practice development by creating an account on GitHub.
github.com