La mejor manera de obtener una SpannableString de un SpannableStringBuilder

Estoy trabajando en un analizador wiki-like que crea espacios para un conjunto de fichas de marcado. Está funcionando, pero dentro del iterador de token frecuentemente necesito convertir los resultados parciales en un SpannableStringBuilder a un SpannableString . Esto se llama con bastante frecuencia, por lo que estoy después de la solución más eficiente para hacerlo, y evitar la creación de objetos adicionales.

En este momento estoy usando;

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

Sin embargo, esta llamada de valueOf crea internamente un tipo de SpannableString desde cero, haciendo un toString y un loop para copiar SpannableString asignados.

Como el nombre de SpannableStringBuilder sugiere, creo que quizás hay una manera más rápida de obtener SpannableString del constructor. ¿Es verdad?

No hay necesidad de convertir SpannableStringBuilder a SpannableString cuando se puede utilizar directamente, como en un TextView :

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

Como la pregunta ya mostró, usted podría hacer la conversión si usted tenía absolutamente a por

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

Pero usted debe considerar por qué incluso tendría que hacer esa conversión? Simplemente utilice el SpannableStringBuilder original.

SpannableString vs SpannableStringBuilder

La diferencia entre estos dos es similar a la diferencia entre String y StringBuilder . Una String es inmutable, pero puede cambiar el texto en StringBuilder .

Del mismo modo, el texto en un SpannableString es inmutable mientras que el texto en un SpannableStringBuilder es cambiable. Es importante notar, sin embargo, que esto sólo se aplica al texto. Los tramos de ambos (incluso SpannableString ) se pueden cambiar.

Relacionado

  • Extensión de Spanned, SpannedString, Spannable, SpannableString y CharSequence de Android
  • Alinear 2 textos, 1 normal, 1 opuesto
  • TextView fromHtml enlaces rotos en Lollipop
  • SpannableString no funciona cuando se utiliza el tema de AppCompat
  • Android Development: Cómo reemplazar parte de un EditText con un Spannable
  • Establecer arrastrar audiencia en SpannableString
  • Cómo cambiar dinámicamente el tamaño del texto en Android
  • Texto de estilo del parámetro en método getString (int resId, Object ... formatArgs)
  • Combinación de Spannable con String.format ()
  • Establecer una fuente y un color diferentes a parte de un TextView
  • Cadena spannable para Android con espaciado de líneas
  • Cómo agregar la línea ondulada roja debajo del texto en el TextView de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.