Как создать базовый класс для пользовательских представлений в Android с помощью Kotlin? - PullRequest
0 голосов
/ 10 апреля 2019

Я хочу создать базовый класс для всех моих пользовательских представлений. Это может быть другой тип, например, 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?

1 Ответ

0 голосов
/ 10 апреля 2019

Попробуйте объявить свой класс следующим образом:

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)



(...)
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...