PullRequest
       4

0 голосов
/ 25 января 2020

Я пытаюсь повторно использовать макет с кнопками внутри других макетов, но я хочу, чтобы компоновка кнопок имела разные приемники при нажатии для каждого включенного макета. Есть идеи?

Первый макет

    <data>
        <variable
            name="model"
            type="com.example.calculator.viewmodel.CalculatorViewModel" />
    </data>
<include layout="@layout/buttons"
bind:var="@{model}" />

secondView

<data>
        <variable
            name="variable"
            type="com.example.calculator.viewmodel.CurrencieViewModel" />
    </data>

        <include
            layout="@layout/buttons"
            bind:currencies="@{variable}" />

включенный макет

<data>
        <variable
            name="var"
            type="com.example.calculator.viewmodel.CalculatorViewModel" />

        <variable
            name="currencies"
            type="com.example.calculator.viewmodel.CurrencieViewModel" />
    </data>
...
                         <Button
                android:id="@+id/btn_0"
                android:layout_width="97dp"
                android:layout_height="100dp"
                android:layout_row="4"
                android:layout_column="1"
                android:background="@color/white"
                android:text="0"
                android:textColor="@color/iconsColor"
                android:textSize="50dp"
                android:onClick="@{() -> depent the viewmodel different fuction"/>

1 Ответ

0 голосов
/ 25 января 2020

Лучше, если вы используете интерфейс для этого. Примерно так:

interface IncludedClickListener {
    void onClick();
}

и затем внутри вашего included_layout.xml:

<data>
    <variable
        name="clickHandler"
        type="somepackage.IncludedClickListener " />
</data>

<Button
    ...
    android:onClick="@{() -> clickHandler.onClick()"/>

, а затем измените CurrencieViewModel и CalculatorViewModel орудие IncludedClickListener. Затем используйте его как раньше:

<include 
    layout="@layout/buttons"
    bind:clickHandler="@{model}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...