Как привязать данные к настройке Android - PullRequest
0 голосов
/ 30 апреля 2019

Я хочу иметь собственный макет SwitchPreference и передать ему параметр «title», подобный следующему:

<SwitchPreference
            android:key="@string/key"
            app:passedTitle="@{@string/title}"
            android:layout="@layout/custom_layout"
            android:defaultValue=5 />

таким образом, я могу использовать один и тот же макет для разных SwitchPreferences, но изменить отображаемый заголовок.

Я знаю, что могу нормально связать данные следующим образом:

<include
        layout="@layout/custom_layout"
        app:passedTitle="@{@string/title}"

в сочетании с пользовательским макетом, например:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools" >

    <data>
    <variable
        name="passedTitle"
        type="String"/>
    </data>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            style="@style/SettingsSubHeader"
            android:text="@{passedTitle}" />

        <!-- Must have this id or else won't save value! -->
        <Switch
            android:id="@android:id/checkbox"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"/>

    </RelativeLayout>

</layout>

Однако я не могу получить значение passedTitle для передачи в пользовательское представление, если я просто устанавливаю их, используя параметр andriod:layout в SwitchPreference (поскольку я не могу использовать <include>).

Есть ли у вас какие-либо идеи о том, как я могу передать значение своему пользовательскому макету при использовании предпочтения?

...