Android - обновление TextView в макете, включенном несколько раз в основной макет - PullRequest
0 голосов
/ 15 апреля 2019

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

Таким образом, сценарий заключается в том, что я вызываю API и получаю 3 значения и использую viewModelя пытаюсь обновить, но это не отражается во включенном макете

1.Основной XML

  <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:orientation="vertical">

                    <include
                        android:id="@+id/goalAcieved"
                        layout="@layout/item_goals_status"
                        bind:statusname="@{@string/status_achieved}"
                        bind:count="@{viewModel.stateAchievedObsInt}"/>

                    <include
                        android:id="@+id/goalNotStarted"
                        layout="@layout/item_goals_status"
                        bind:statusname="@{@string/status_not_started}"
                        bind:count="@{viewModel.stateNotStartedObsInt}" />

                </LinearLayout>

2.Включить XML

<layout xmlns:android="http://schemas.android.com/apk/res/android">

<data>

    <variable
        name="count"
        type="androidx.databinding.ObservableInt"/>
</data>

 <TextView
        android:id="@+id/count"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:padding="@dimen/margin_15"
        android:text="@{String.valueOf(count)}"
        android:textAppearance="@style/style_14sp_tab_black"
        android:textStyle="bold" />

3.Просмотреть фрагмент кода модели

for (goal in t.goals!!) {
                                    //increments the goal count
                                    if (goal.status!! == 0) {
                                        stateNotStartedObsInt.set(stateNotStartedObsInt.get()+1)
                                    }else if(goal.status!! == 1){
                                        stateAchievedObsInt.set(stateAchievedObsInt.get()+1)
                                    }else if(goal.status!! == 2){
                                        stateNotApplicableObsInt.set(stateNotApplicableObsInt.get()+1)
                                    }
                                }

Поэтому, когда я обновляю ObservableInt, он не отражается во включенном текстовом представлении xml

...