Макет: Есть ли способ реализовать что-то вроде интерфейса? - PullRequest
0 голосов
/ 08 января 2020

У меня есть два вида деятельности: A1 и A2.

Оба они реализуют два пользовательских представления: V1 и V2.

Макеты A1 и A2 оба включают V1 и V2, но макеты как правило, разные. Реализация V1 и V2 - единственное сходство.

Я хотел бы иметь базовый класс Activity ABase, где я реализую использование V1 и V2 для A1 и A2 во избежание дублирования кода.

Итак, в принципе это то, как концептуально должны выглядеть компоненты:

a_base_layout. xml:

<V1
    android:id="@+id/v1"/>
...
<V2
    android:id="@+id/v2"/>

ABaseActivity :

init {
    ...
    inflate(a_base_layout.xml)
    v1.setValue(value1)
    v2.setValue(value2)
    ....
}

a1_layout. xml:

<RootLayout 
        ...
        include="@layout/a_base_layout">
    <a_base_layout/v1
            android:layout_width="x1"
            android:layout_height="y1"
            ...some positioning and other things...>
    <a_base_layout/v2
            android:layout_width="x1"
            android:layout_height="y1"
            ...some positioning and other things...>

a2_layout. xml:

<RootLayout 
        ...
        include="@layout/a_base_layout">
    <a_base_layout/v1
            android:layout_width="x2"
            android:layout_height="y2"
            ...some positioning and other things, different from a1_layout...>
    <a_base_layout/v2
            android:layout_width="x1"
            android:layout_height="y1"
            ...some positioning and other things, different from a1_layout...>

Проблема только с тем, что A1 наследуется от ABaseActivity без учета разметки, заключается в том, что раздувание a1_layout перезапишет a_base_layout, что означает, что мне придется вручную добавить V1 и V2 в a1_layout, что победило бы всю цель.

Я понял, что мог бы просто создать нормальный интерфейс и иметь для него поля v1 и v2, но это похоже на для меня обходной путь, который не обязательно работает с автоматически интегрированными id-полями kotlins.

(e.g. `import kotlinx.android.synthetic.mypackage....*`)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...