How to make bold text with Android Data Binding Library

An easy way

public class TextViewBindingAdapter {
    @BindingAdapter("isBold")
    public static void setBold(TextView view, boolean isBold) {
        if (isBold) {
            view.setTypeface(null, Typeface.BOLD);
        } else {
            view.setTypeface(null, Typeface.NORMAL);
        }
    }
}

XML:

    <TextView
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:isBold="@{item.bold}"/>

I ended up using the following code, it implements DataBinding.

public abstract class BindingAdapter {
    @android.databinding.BindingAdapter("android:typeface")
    public static void setTypeface(TextView v, String style) {
        switch (style) {
            case "bold":
                v.setTypeface(null, Typeface.BOLD);
                break;
            default:
                v.setTypeface(null, Typeface.NORMAL);
                break;
        }
    }
}

And the XML

<TextView
    android:text="@{bericht.titel}"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:layout_marginBottom="5dp"
    android:layout_marginTop="5dp"
    android:layout_toLeftOf="@+id/timestamp"
    android:textSize="18sp"
    android:textColor='@{bericht.isGelezen() ? 0xff313131 : 0xff0662ab}'
    android:typeface='@{bericht.isGelezen() ? "normal" : "bold"}' />

You can do this without creating an adapter.

Import Typeface to your XML

<data>
    <import type="android.graphics.Typeface" />
...
</data>

Use the attribute android:typeface with Typeface.defaultFromStyle:

android:typeface="@{Typeface.defaultFromStyle(message.isRead() ? Typeface.BOLD : Typeface.NORMAL)}"