簡體   English   中英

如何使用Kotlin在Android中為自定義視圖創建基類?

[英]How to create base class for custom views in Android using Kotlin?

我想為我的所有自定義視圖創建一個基類。 它可以是不同的類型,例如RelativeLayoutNavigationView

所以我用泛型創建了abstract class ,它實現了連接它們的最深層的這些視圖View 這就是我所擁有的:

abstract class MyCustomView<VS : ViewState, V : View<VS>, P : Presenter<VS, V, *>>(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0,
defStyleRes: Int = 0
) : View(context, attrs, defStyleAttr, defStyleRes) { ... }

但問題是,現在我只能從View繼承了。 我怎樣才能構建一些必須是View的子類的通用,這樣我才能實現它,並且仍然可以在我的基類中overrideonAttachedToWindow這樣的方法?

嘗試像這樣聲明你的類:

abstract class MyCustomView<VS : ViewState, V : View<VS>, P : Presenter<VS, V, *>>() : View{ 

 constructor(context: Context) : super(context)
    constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
    constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes)



(...)
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM