Лучший способ получить SpannableString из SpannableStringBuilder

Я работаю в wiki-подобном парсере, который создает промежутки для набора маркеров разметки. Он работает, но внутри токена-итератора мне часто нужно преобразовать частичные результаты в SpannableStringBuilder в SpannableString . Это называется довольно часто, поэтому я использую наиболее эффективное решение для этого и избегаю создания дополнительных объектов.

На данный момент я использую;

 SpannableStringBuilder stuff=complex_routine_that_builds_it(); SpannableString result=SpannableString.valueOf(stuff); 

Однако этот вызов valueOf внутренне создает тип SpannableString с нуля, делая toString и цикл, чтобы скопировать назначенные spans .

Как SpannableStringBuilder названия SpannableStringBuilder , я думаю, что, возможно, есть более быстрый способ получить SpannableString от строителя. Это правда?

Solutions Collecting From Web of "Лучший способ получить SpannableString из SpannableStringBuilder"

Нет необходимости конвертировать SpannableStringBuilder в SpannableString когда вы можете использовать его напрямую, как в TextView :

 SpannableStringBuilder stuff = complex_routine_that_builds_it(); textView.setText(stuff); 

Как уже указывал вопрос, вы можете сделать преобразование, если вам абсолютно необходимо

 SpannableStringBuilder stuff = complex_routine_that_builds_it(); SpannableString result = SpannableString.valueOf(stuff); 

Но вы должны подумать, почему вам нужно было бы сделать это преобразование? Просто используйте оригинальный SpannableStringBuilder .

SpannableString vs SpannableStringBuilder

Разница между этими двумя аналогична разнице между String и StringBuilder . String неизменна, но вы можете изменить текст в StringBuilder .

Точно так же текст в SpannableString является неизменным, а текст в SpannableStringBuilder является изменяемым. Важно отметить, однако, что это относится только к тексту. Пролеты на обоих из них (даже SpannableString ) могут быть изменены.

Связанный

  • Android Spanned, SpannedString, Spannable, SpannableString и CharSequence