我一直在在线阅读有关Android中的RecyclerView的信息。作为一个初学者,我看到一些在线教程扩展了RecyclerView.Adapter<Subclass_RecyclerviewAdapter.ViewHolder>
,而另一些则仅扩展了RecylerView.Adapter
。实际上,它们之间有什么区别?哪个更好?
答案 0 :(得分:1)
如果我这样做:
class SimpleAdapter : RecyclerView.Adapter() { ... }
然后Android Studio说“类Adapther<VH: RecyclerView.ViewHolder!>
应该有一个类型参数”。在RecyclerView
的源代码中,您可以看到:
public class RecyclerView extends ViewGroup implements ScrollingView,
NestedScrollingChild2, NestedScrollingChild3 {
...
public abstract static class Adapter<VH extends ViewHolder> { ... }
...
}
这意味着您必须为Adapter
构造函数提供 type (类似于您不定义List
而是为List<String>
例如)。
不过,这里有一点要注意。您可以将RecyclerView.ViewHolder
作为类型,也可以扩展此类并使用自定义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是抽象。