Как передать целочисленную переменную в файл xml моей операции? - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь создать индикатор выполнения в Android Studio, где максимальное значение выбирается динамически на основе данных в таблице, которая у меня есть. В классе я создаю глобальную переменную и устанавливаю ее как целое число.

Я хочу затем прочитать это в моем файле layout. xml, чтобы я мог динамически изменять индикаторы выполнения. Ie что-то вроде:

    <ProgressBar
    android:id="@+id/determinateBar"
    style="@android:style/Widget.ProgressBar.Horizontal"
    android:progress="67"
    android:max= // IntVariable here />

Как мне вытащить переменную из класса в этот файл?

Ответы [ 2 ]

1 голос
/ 18 июня 2020

У вас есть два разных способа достичь того, чего вы хотите. Во-первых, рекомендуется включить привязку данных в вашем проекте, добавив его в файл build.gradle на уровне приложения внутри тега android:

dataBinding {
       enabled = true
}

Затем вы должны добавить ведущего действия (содержащего нужную вам переменную) в макет действия XML следующим образом:

<data>

      <variable
           name="presenter"
           type="com.main.TheNameOfYourPresenter" />

</data>

Наконец, вы можете использовать значение хранится в вашем презентаторе в индикаторе выполнения следующим образом:

<ProgressBar
    android:id="@+id/determinateBar"
    style="@android:style/Widget.ProgressBar.Horizontal"
    android:progress="67"
    android:max="@{presenter.someIntStoredInThePresenter}"/>

Второй способ - изменить его программно, открыв индикатор выполнения внутри вашего класса активности и установив атрибут max по своему усмотрению:

progressBar.setMax(someInt);
1 голос
/ 18 июня 2020

Вы можете программно установить значение индикатора выполнения следующим образом:

В действии

ProgressBar progressBarView = findViewById(R.id.progressBar);
// later when you want to set the value
progressBar.setProgress(progressStatus)

или во фрагменте

View root = inflater.inflate(R.layout.fragment_example, container, false);
ProgressBar progressBarView = root.findViewById(R.id.progressBar);
// later when you want to set the value
progressBar.setProgress(progressStatus)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...