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)
클릭 이벤트
'기술적용' 카테고리의 다른 글
바텀네비게이션 구현 (0) | 2022.03.19 |
---|---|
키보드 컨트롤 (0) | 2022.03.18 |
Fragment 데이터 전달 (0) | 2022.03.17 |
LiveData 구현 (0) | 2022.03.16 |
ViewModel 적용 (0) | 2022.03.15 |