쏭식
Ssongcode;
쏭식
전체 방문자
오늘
어제
  • 분류 전체보기 (106)
    • JAVA (21)
      • Basic (21)
    • Kotlin (14)
      • Basic (14)
    • Android (64)
      • Basic (24)
      • JETPACK (30)
      • Compose (8)
      • 파고들기 (2)
    • Project (4)
    • etc (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 리사이클러뷰
  • livedata
  • 코드업100제
  • 알고리즘
  • 자바
  • 변수
  • 코테
  • 자료구조
  • Kotlin
  • 코틀린
  • ViewModel
  • 코딩테스트
  • Android
  • 객체지향
  • AAC
  • 프로젝트회고
  • 상속
  • 메소드
  • compose
  • 코틀린코테
  • DataBinding
  • 배열
  • mvvm
  • 기초100제
  • workmanager
  • 백준
  • Adapter
  • Room
  • 컴포즈
  • Jetpack

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
쏭식

Ssongcode;

[JETPACK개론] View,DataBinding + Adapter
Android/JETPACK

[JETPACK개론] View,DataBinding + Adapter

2022. 8. 10. 23:59

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

 

저작자표시 (새창열림)

'Android > JETPACK' 카테고리의 다른 글

[JETPACK개론] Activity/Fragment 의 ViewModel 공유  (0) 2022.08.12
[JETPACK개론] ViewModel ?  (0) 2022.08.11
[JETPACK개론] DataBinding 과 data class  (0) 2022.07.26
[JETPACK개론] ViewBinding  (0) 2022.07.24
[JETPACK개론] 들어가며  (0) 2022.07.23
    'Android/JETPACK' 카테고리의 다른 글
    • [JETPACK개론] Activity/Fragment 의 ViewModel 공유
    • [JETPACK개론] ViewModel ?
    • [JETPACK개론] DataBinding 과 data class
    • [JETPACK개론] ViewBinding
    쏭식
    쏭식

    티스토리툴바