Just learned DataBinding and find out that the powerful built-in toString() from Kotlin is not available:
<layout 
    xmlns:android="http://schemas.android.com/apk/res/android">
    <data>
        <variable
            name="student"
            type="com.example.databindingtest2.Student" />
    </data>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@{student.name}"
        android:textColor="@android:color/black"
        android:textSize="30sp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:text="@{student.age.toString()}"    //doesn't work, age is integer
        android:textColor="@android:color/black"
        android:textSize="30sp" />
</layout>
I know String.valueOf() will work, but it's not Kotlin way. Any help would be appreciated.
                        
There is no type in either Java or Kotlin named
integer. I am going to guess thatageis a KotlinInt.Data binding is implemented in Java, not Kotlin. Java/Kotlin interoperability, combined with the data binding compiler, appears to be converting the Kotlin
Intinto the Javaintprimitive type. Java primitives do not extendObjectand do not havetoString().Personally, I recommend not investing in data binding. Jetpack Compose will make data binding obsolete in a year or so.
If you still wish to use data binding, the simplest solution is
String.valueOf(). While you say "it's not Kotlin way", you are working with data-binding-generated Java, not Kotlin.If you still wish to use data binding, and you insist that you must use
toString()... try@{Integer.valueOf(student.age).toString()}.Integer.valueOf()will give you a JavaIntegerinstance boxing yourint, andIntegerhas atoString()method. This still has nothing really to do with Kotlin, but it would let you usetoString().