如何在 Kotlin 中使用密封类实现 ViewHolder

2024-03-29

我在这条推文中看到了一个有趣的 viewholder 实现https://twitter.com/AndroidDev/status/972502799496790018 https://twitter.com/AndroidDev/status/972502799496790018

override fun onBindViewHolder(holder: SealedAdapterViewHolder, position: Int) {
  return when (holder) {
    is HeaderHolder -> holder.displayHeader(items[position])
    is DetailsHolder -> holder.displayDetails(items[position])
  }
}

不幸的是我不知道如何实现这些持有者。而且我没有找到任何这个技巧的例子。

在我的视图持有者中,我必须扩展 RecyclerView.ViewHolder 并且我必须扩展密封类,以便我可以在“when 子句”中使用它。不允许多重继承。

那么这可能吗?如果可能的话,又是如何实现的呢?

P.S.

原作者是这样写的:

您还可以在 RecyclerView 适配器中使用密封类。他们是一个 非常适合 ViewHolders - 具有一组干净的类型可供调度 明确告知每个持有者。用作表达式时,编译器将 如果所有类型都不匹配,则会出错。


像这样的东西:

sealed class SealedAdapterViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

    class HeaderHolder(view: View) : SealedAdapterViewHolder(view)

    class DetailsHolder(view: View) : SealedAdapterViewHolder(view)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Kotlin 中使用密封类实现 ViewHolder 的相关文章

随机推荐