如何使用 Kotlin 为 Android 中的自定义视图创建基类



我想为所有自定义视图创建一个基类。它可以是不同的类型,例如, 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)

(...)
 }

最新更新