Пользовательский просмотр текста и setText - PullRequest
0 голосов
/ 04 марта 2020

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

Например, если мой xml равен: -

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_margin="@dimen/margin_raptor_medium"
android:text="someText"/>

затем Я хотел бы взять someText; примените к нему мою функцию преобразования и снова установите текст. в основном это будет мой строковый идентификатор, для которого я получу перевод из своей функции.

РЕДАКТИРОВАТЬ: - так что в моем классе пользовательского представления я переопределяю установленный текстовый метод следующим образом: -

@Inject
StringRepository stringRepository
@Override
public void setText(CharSequence text, BufferType type) {
    System.out.println("In SetTExt Method");
    // modify text here
    System.out.println("The text that is set here is:" + text);
    String modifiedText = StringRepository.getString((String)text);
    super.setText(modifiedText, type);
}

Теперь метод getString дает исключение нулевого указателя, поскольку карта, к которой он обращается, не обновляется.

Я обновляю эту карту во время входа в систему.

1 Ответ

0 голосов
/ 04 марта 2020

Сначала расширьте класс TextView, а затем переопределите метод setText(), где вы сможете выполнить все преобразования. Вот так.

Это должно выглядеть примерно так:

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

    public YouTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public YouTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public void setText(CharSequence text, BufferType type) {
        // modify text here
        super.setText(modifiedText, type);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...