繁体   English   中英

扩展 Recyclerview.Adapter 与 RecyclerView.Adapter 有什么区别<subclassrecyclerviewadapter.viewholder>在回收站视图中</subclassrecyclerviewadapter.viewholder>

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM