[英]How to create base class for custom views in Android using Kotlin?
我想為我的所有自定義視圖創建一個基類。 它可以是不同的類型,例如RelativeLayout
或NavigationView
。
所以我用泛型創建了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
的子類的通用,這樣我才能實現它,並且仍然可以在我的基類中override
像onAttachedToWindow
這樣的方法?
嘗試像這樣聲明你的類:
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.