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