Android передает переменную enum из одного xml во включенный xml-файл, который впоследствии отправляет его в код

Я пытаюсь повторно использовать XML-файл, который я включил в свой main_layout.xml. В коде моей деятельности я проверяю переменную positionType и в зависимости от этой переменной запускаю разные коды.

PositionType.java

public enum PositionType {
    play_top, grow_top, love_top
}

main_layout.xml

<layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools">


    <data>
        <import type="com.xxx.models.PositionType"/>
        <variable name="positionType"  type="com.xxx.models.PositionType"/>
    </data>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        >

            <include
                android:id="@+id/circle_view_play_top"
                app:positionType="${PositionType.play_top}"
                layout="@layout/include_circle"
                />

[...]

include_circle.xml

<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>
        <variable name="positionTypeStr" type="com.xxx.models.PositionType"/>
    </data>

    <merge>
        <com.xxx.components.DeformedCircleView
            app:positionTypeStr="@{positionTypeStr}"
            android:clickable="true"
            android:layout_width="@dimen/home_small_circle_view"
            android:layout_height="@dimen/home_small_circle_view"/>
    </merge>

</layout>

DeformedCircleView.xml

[...]

protected PositionType positionType;

public DeformedCircleView(Context context, AttributeSet attrs) {
    super(context, attrs);
    //I should receive here the PositionType.play_top (not sure how!) or in the setter
}

public PositionType getPositionType() {
    return this.positionType;
}

public void setPositionType(PositionType positionType) { 
    //I should receive here the PositionType.play_top or in the constructor
    this.positionType = positionType;
}



[...]

Проблема в том, что я никогда не получаю в своем конструкторе DeformedCircleView или setPositionType setter значение PositionType.play_top (которое я отправляю из main_layout.xml). Что я делаю не так?

Кстати, у вас есть идея, как передать другие параметры из main_layout.xml в include_circle.xml, такие как @id и ресурс layout_with / height?

Заранее спасибо.

0 ответов

Другие вопросы по тегам