Установить значение «android: текст» из функции / метода - PullRequest
0 голосов
/ 28 июня 2018

Теоретически реализация мультикультуры хранится в удаленной БД.

В Android у нас есть следующее:

 <TextView
        android:id="@+id/loginlabel"
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="25sp"
        android:textStyle="bold"
        android:layout_marginTop="5dp"
        android:text="@string/login" />

И text использует значение свойства login из файла string.xml.

Теперь мой вопрос: в xml активности в свойстве android:text есть ли способ для меня вызвать функцию / метод (это может быть даже из статического класса)? Место, которое имеет некоторую бизнес-логику и все еще возвращает строку.

Я знаю, что могу легко использовать следующий тип кода в Java-файле активности:

TextView loginlabel = (TextView) findViewById(R.id.loginlabel);
loginlabel.setText( GetMyText(R.id.loginlabel) );

Но я стараюсь не писать это «миллион раз», поскольку у меня есть несколько действий и сотни значений в моем strings.xml.

Для получения дополнительной информации моя цель заключается в следующем:

  • При запуске приложения я читаю все string.xml и подключаюсь к своему удаленному серверу (на котором есть БД) и проверяю, вставлены ли все строки в эту БД.
  • Вставьте отсутствующие поля со значением этого свойства по умолчанию в string.xml.
  • Теперь в другой удаленной системе клиент может динамически создавать новые культуры и переводы этих свойств.
  • Возвращаясь к андроиду, я загружаю список текущих доступных нам культур, а также загружаю значения (переводы) из БД. Единственное, чего не хватает, это «внедрить» их в то место, где я использую значение «string».

1 Ответ

0 голосов
/ 28 июня 2018

Это работало для меня в прошлом.

public class MyTextView extends TextView {
    public MyTextView(Context context) {
        super(context);
    }

    public MyTextView(Context context, AttributeSet attrs) {
        super(context, attrs);

        setText(yourMethodWithBusinessLogic());
    }
}

Не забудьте заменить обычные текстовые просмотры на эти. Нажмите CTRL + SHFT + R для удобства.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...