簡體   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