Skip to content

Instantly share code, notes, and snippets.

@gastsail
Last active June 27, 2020 14:01
Show Gist options
  • Save gastsail/666b5e4275f55a789d4fc39ed3901b1a to your computer and use it in GitHub Desktop.
Save gastsail/666b5e4275f55a789d4fc39ed3901b1a to your computer and use it in GitHub Desktop.
class DogBreedAdapter(
val context: Context,
) : RecyclerView.Adapter<BaseViewHolder<*>>() {
private var dogBreedList = mutableListOf<Breed>()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder<*> {
return DogBreedViewHolder(
LayoutInflater.from(context).inflate(R.layout.breeds_row, parent, false)
)
}
override fun getItemCount(): Int {
return dogBreedList.size
}
override fun onBindViewHolder(holder: BaseViewHolder<*>, position: Int) {
when (holder) {
is DogBreedViewHolder -> holder.bind(
dogBreedList[position],
position
)
else -> throw IllegalArgumentException("No viewholder to show this data, did you forgot to add it to the onBindViewHolder?")
}
}
fun setBreeds(dogBreedList: MutableList<Breed>) {
this.dogBreedList = dogBreedList
notifyDataSetChanged()
}
inner class DogBreedViewHolder(itemView: View) : BaseViewHolder<Breed>(itemView) {
override fun bind(item: Breed, position: Int) {
itemView.breed_name.text = item.name
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment