Intereting Posts
Список файлов, сохраненных во внутреннем хранилище Программно проверьте Play Store для обновлений приложений. Не удалось удалить каталог в Android Studio Как реализовать приложение VOIP с использованием пакета android.net.rtp Почему моя клавиатура эмулятора Android в китайском режиме? Функция выполнения Android после нажатия «Enter» для EditText Язык ограниченного языка Android для проверки отсутствующих переводов Как сделать текстовую анимацию? Использование Ormlite в соединении с контентным провайдером Android Получить изображение Uri in onActivityResult после съемки? RxJava: Как сделать однократное повторное использование? Как создать API веб-сайта Автономный режим приложения Android, локальная синхронизация базы данных sqlite с удаленной базой данных Android: как суммировать все столбцы в базе данных SQLite и возвращать 1 единственную переменную Android: BaseAdapter и getLayoutInflater в отдельном файле класса

Лучший способ получить 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