-
RecyclerView ViewType 분기개발/Android 2022. 9. 12. 16:19
Data 클래스의 한 값을 기준으로 해서 서로 다른 레이아웃으로 분기하는 Adapter
class CrimeListAdapter(val crimes: List<Crime>) : RecyclerView.Adapter<ViewHolder>() { enum class ViewTypeEnum(val num: Int) { CRUCIAL(1), NORMAL(0) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val inflater = LayoutInflater.from(parent.context) val viewHolder: ViewHolder = when(viewType){ 0 -> { val binding = ListItemCrimeBinding.inflate(inflater, parent, false) CrimeHolder(binding) } else -> { val binding = ListItemCrucialCrimeBinding.inflate(inflater, parent, false) CrucialCrimeHolder(binding) } } return viewHolder } override fun getItemCount() = crimes.size override fun onBindViewHolder(holder: ViewHolder, position: Int) { val crime = crimes[position] if(holder is CrucialCrimeHolder){ holder.bind(crime) } else if(holder is CrimeHolder){ holder.bind(crime) } } override fun getItemViewType(position: Int): Int { return if (crimes[position].requiresPolice) ViewTypeEnum.CRUCIAL.num else ViewTypeEnum.NORMAL.num } }
'개발 > Android' 카테고리의 다른 글
Material Theme Color System (0) 2023.05.31 Android DateFormat (0) 2022.09.13 Fragment Container Testing (0) 2022.09.06 [Android] 프레그먼트 추가 및 삭제(뒤로가기 버튼) (0) 2021.10.27 [Android] 뒤에 있는 프레그먼트 이벤트 작동 안되게 하기 (0) 2021.10.27