Я делаю привязку данных с пользовательским компонентом и сталкиваюсь с трудностями, пытаясь связать строку со значением в моем xml.
Вот компонент xml в xml. Проблема заключалась в замене строки progressText динамических переменных. Я получаю
Не могу найти сеттер длякоторый принимает тип параметра 'java.lang.String'
ошибка при попытке скомпилировать xml.
<com.mycompany.CircleProgressBar
xmlns:cpb="http://schemas.android.com/apk/res-auto"
android:id="@+id/progressWheel"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_centerInParent="true"
android:layout_margin="10dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
cpb:progress="@{viewmodel.progress}"
cpb:progressColor="@color/colorPrimary"
cpb:backgroundColor="@color/gray"
cpb:backgroundWidth="10"
cpb:textSize="10sp"
cpb:differenceInTextSizeInLines="10"
cpb:roundedCorners="true"
cpb:progressText="@{@string/work_package_percent_complete(viewmodel.progress)}"
cpb:spaceBetweenLines="5"
cpb:maxValue="100"
cpb:progressTextColor="@color/colorPrimary" />
Вот как я объявляю переменную, используемую в моем CircleProgressBar:
@BindingAdapter("progressText")
fun setTextView(view: CircleProgressBar, value: String) {
if (this::ta.isInitialized) {
this.text = ta.getString(R.styleable.CircleProgressBar_progressText) as String
} else {
this.text = value
}
view.invalidate()
}
Когда я пытаюсь выполнить оператор импорта для String в верхней части моего XML-файла, яполучение дубликата String уже объявлено. Если я просто вставляю прямой текст без замены строки, все работает нормально.