![](/img/trans.png)
[英]What is the difference between arrayadapter and recyclerview.adapter?
[英]what is the difference between extends Recyclerview.Adapter vs RecyclerView.Adapter<SubclassRecyclerViewAdapter.ViewHolder> in RecyclerView
我一直在网上阅读有关 Android 中的 RecyclerView 的信息。 作为初学者,我看到一些在线教程扩展了RecyclerView.Adapter<Subclass_RecyclerviewAdapter.ViewHolder>
和一些RecylerView.Adapter
。 实际上,它们之间有什么区别? 哪个更好?
如果我这样做:
class SimpleAdapter : RecyclerView.Adapter() { ... }
然后 Android Studio 说“class Adapther<VH: RecyclerView.ViewHolder!>
需要一个类型参数”。 在RecyclerView
的源代码中,您可以看到:
public class RecyclerView extends ViewGroup implements ScrollingView,
NestedScrollingChild2, NestedScrollingChild3 {
...
public abstract static class Adapter<VH extends ViewHolder> { ... }
...
}
这意味着您必须为Adapter
构造函数提供一个类型(类似于您不定义List
,而是定义List<String>
的方式)。
不过,这里有一点需要注意。 您可以将RecyclerView.ViewHolder
作为类型,或者您可以扩展此 class 并使用您的自定义ViewHolder
。 这允许您在ViewHolder
上定义自定义方法,例如:
inner class SimpleViewHolder(private val view: View) : RecyclerView.ViewHolder(view) {
fun bind(text: String) {
// Bind to the view
}
}
编辑:重要的是,您在适配器方法中收到您在构造函数中使用的类型,例如: override fun onBindViewHolder(holder: SimpleViewHolder, position: Int) {... }
,然后您可以在其中使用您的方法自定义视图持有人。
而且,您必须有一个自定义 VH,因为 RecyclerView.ViewHolder 是abstract 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.