class
SavedListAdapter(
private
val clickListener: NewsClickListener) :
ListAdapter<SavedArticle, RecyclerView.ViewHolder>(diffUtil) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return
when (viewType) {
VIEW_TYPE_CATEGORY -> SavedCategoryViewHolder.from(parent)
else
-> SavedItemViewHolder.from(parent)
}
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
when (holder) {
is SavedCategoryViewHolder -> holder.bind(getItem(position) as SavedCategory)
is SavedItemViewHolder -> holder.bind(getItem(position) as TopHeadlineList, clickListener)
}
}
override fun getItemViewType(position: Int): Int {
return
when (getItem(position)) {
is SavedCategory -> VIEW_TYPE_CATEGORY
is TopHeadlineList -> VIEW_TYPE_ITEM
}
}
class
SavedCategoryViewHolder(
private
val binding: ItemCategoryBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(savedCategory: SavedCategory) {
binding.savedCategory = savedCategory
}
companion object {
fun from(parent: ViewGroup): SavedCategoryViewHolder {
return
SavedCategoryViewHolder(
ItemCategoryBinding.inflate(
LayoutInflater.from(parent.context),
parent,
false
)
)
}
}
}
class
SavedItemViewHolder(
private
val binding: ItemSavedListBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(news: TopHeadlineList, clickListener: NewsClickListener) {
binding.topHeadlineList = news
binding.newsClickListener = clickListener
<span style=
"color:#000000"
><span style=
"background-color:#FFFF00"
>binding.rvSavedList.apply {
adapter = SavedItemAdapter(clickListener).apply {
submitList(news.newsList)
}
}</span></span>
}
companion object {
fun from(parent: ViewGroup): SavedItemViewHolder {
return
SavedItemViewHolder(
ItemSavedListBinding.inflate(
LayoutInflater.from(parent.context),
parent,
false
)
)
}
}
}
companion object {
private
const
val VIEW_TYPE_CATEGORY =
0
private
const
val VIEW_TYPE_ITEM =
1
}