1. Dependency 추가

  • xml에서 Recyclerview 다운로드

 

 

2. 아이템 레이아웃 추가

  • layout → New Resource File → Layout Resource File 아이템레이아웃 추가
  • 아이템 레이아웃 작성 -> height를 wrap_content로 설정

 

 

3. Adapter 작성

  • ViewHolder 클래스 : 아이템 레이아웃의 정보들을 가지고 있음
  • onCreateViewHolder() : 뷰 홀더를 만드는 부분
  • onBindViewHolder() : 뷰 홀더를 이용하여 데이터를 표시
  • getItemCount() : 데이터 개수
class EvalinfoAdapter : RecyclerView.Adapter<EvalinfoAdapter.EvalinfoViewHolder>(){
    private var eItems: List<ServList> = ArrayList<ServList>()

    inner class EvalinfoViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        var evalinfoTextView : TextView = itemView.findViewById(R.id.result_item_evalInfo_tv)
        // 혹은
        // val binding = ItemSearchBinding.bind(itemView)
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): EvalinfoViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.item_result, parent, false)
        return EvalinfoViewHolder(view)
        
        // 혹은
        // val view = LayoutInflater.from(parent.context).inflate(R.layout.item_calendar, parent, false)
        // return CalendarViewHolder(view)
    }

    override fun onBindViewHolder(holder: EvalinfoViewHolder, position: Int) {
        val serv : ServList = eItems[position]
        holder.evalinfoTextView.text= serv.evalInfo
        
        //혹은
        // holder.binding.ServList = eItems[position]
    }

    override fun getItemCount(): Int = eItems.size

    fun updateItems(items: List<ServList>) {
        eItems = items
        notifyDataSetChanged()//UI갱신
    }

}

 

 

4. Activity 작성

binding.recyclerView.layoutManager= LinearLayoutManager(container?.context,
    RecyclerView.VERTICAL,
    false
)

val adapter = StroceAdapter()
binding.recyclerView.adapter = adapter

adapter.updateItems(items)

 

클릭 이벤트

https://yunaaaas.tistory.com/57

'기술적용' 카테고리의 다른 글

바텀네비게이션 구현  (0) 2022.03.19
키보드 컨트롤  (0) 2022.03.18
Fragment 데이터 전달  (0) 2022.03.17
LiveData 구현  (0) 2022.03.16
ViewModel 적용  (0) 2022.03.15

+ Recent posts