为什么RecyclerView Adapter是通用类

时间:2018-08-14 10:34:30

标签: java android android-recyclerview

  

类签名是RecyclerView.Adapter <“ VH扩展   android.support.v7.widget.RecyclerView.ViewHolder“>。VH类型为   受RecyclerView.ViewHolder限制。

由于RecyclerView.ViewHolder是抽象类,因此RecyclerView.ViewHolder继承了VH的任何实例。

例如,onCreateViewHolder方法返回通用的VH类型对象,该对象在任何情况下均从RecyclerView.ViewHolder继承。那么,为什么不仅仅将RecyclerView.ViewHolder作为返回类型(而不是VH泛型类型)并使所有这些东西都没有泛型呢?

1 个答案:

答案 0 :(得分:1)

因为您希望RecyclerView.Adapter的子类仅处理特定的ViewHolder类型。

这就是为什么类签名允许您指定VH类型的原因。这样一来,您可以根据自己的需要对课程进行建模;方法onBindViewHolderonCreateViewHolder将被修改为仅处理您首选的ViewHolder子类型。

没有泛型,(上述方法将具有ViewHolder而不是泛型VH类型),则可以从SubViewHolder1返回onCreateViewHolder并尝试强制转换第一个onBindViewHolderSubViewHolder2的参数(您将得到ClassCastException)。不是说您会这样做,而是代码允许您这样做。那么,为什么不设置一些可以缓解您生活压力的约束条件呢?

利用泛型类型,您说的是:

  

这是我的Adapter的{​​{1}}。此RecyclerView仅处理此Adapter子类。没什么。