Мой XML-код ниже
<data>
<import type="android.view.View"/>
<import type="com.example.data.api.Status" />
<variable
name="resource"
type="com.example.data.api.Resource" />
</data>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:padding="@dimen/dp8"
android:visibility="@{resource.data == null ? View.GONE : View.VISIBLE}" //This line throwing error
>
<ProgressBar
android:visibility="@{resource.status == Status.LOADING ? View.GONE : View.VISIBLE}"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progress_bar"
android:layout_margin="8dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/error_msg"
android:text="@{resource.message ?? @string/unknown_error}"
android:visibility="@{resource.status == Status.ERROR ? View.GONE : View.VISIBLE}"/>
</LinearLayout>
</layout>
, используя этот код, я получил ошибку ниже
error: illegal start of expression ? resourceData = null;
Если я удалю строку ниже, то все работает нормально.
android:visibility="@{resource.data == null ? View.GONE : View.VISIBLE}"
Класс ресурса обрабатывает данные API, которые принимают параметр универсального типа, и он может быть нулевым в любое время. Класс ресурса приведен ниже:
data class Resource<out T>(val status: Status, val data: T?, val message: String?) {
companion object {
fun <T> success(data: T?): Resource<T> {
return Resource(Status.SUCCESS, data, null)
}
fun <T> error(msg: String, data: T?): Resource<T> {
return Resource(Status.ERROR, data, msg)
}
fun <T> loading(data: T?): Resource<T> {
return Resource(Status.LOADING, data, null)
}
}
}
Пожалуйста, помогите мне узнать, почему возникла эта ошибка. Что-то не так?