如何改进 RecyclerView Adapter,这是一个好的实践吗?
我实现了一个 RecyclerView 适配器来显示新闻文章列表。我正在寻找有关如何改进此代码以及它是否遵循 Android 开发最佳实践的建议。这是适配器代码:
class NewsAdapter(): RecyclerView.Adapter<NewsAdapter.ArticleViewHolder>() {
private object NewsDiffUtil : DiffUtil.ItemCallback<Article>() {
override fun areItemsTheSame(oldItem: Article, newItem: Article): Boolean {
return oldItem.id == newItem.id
}
override fun areContentsTheSame(oldItem: Article, newItem: Article): Boolean {
return oldItem == newItem
}
}
val differ = AsyncListDiffer(this, NewsDiffUtil)
inner class ArticleViewHolder(val binding: ItemArticleBinding) :
RecyclerView.ViewHolder(binding.root)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ArticleViewHolder {
return ArticleViewHolder(
ItemArticleBinding.inflate(
LayoutInflater.from(parent.context), parent, false
)
)
}
override fun getItemCount(): Int {
return differ.currentList.size
}
override fun onBindViewHolder(holder: ArticleViewHolder, position: Int) {
val article = differ.currentList[position]
Glide.with(holder.itemView).load(article.urlToImage).into(holder.binding.ivArticleImage)
holder.binding.tvSource.text = article.title
holder.binding.tvTitle.text = article.title
holder.binding.tvDescription.text = article.description
holder.binding.tvPublishedAt.text = article.publishedAt
holder.itemView.setOnClickListener {
onItemClickListener?.let {
it(article)
}
}
}
private var onItemClickListener: ((Article) -> Unit)? = null
fun setOnClickListener(listener: (Article) -> Unit) {
onItemClickListener = listener
}
}