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?
Заранее спасибо.