在尝试理解this answer时,我无法理解StringBuilderEditable之间的区别。此图像(减去手绘的红色圆圈)来自该答案。

android - Android StringBuilder与可编辑-LMLPHP

它们都具有用于appenddeleteinsertreplace文本的方法。我看到StringBuilder是一个实际的类,而Editable是一个接口。但是我可以用EditableTextView找回textView.getEditableText(),如果它是一个接口,这似乎很奇怪。幕后的具体实现是什么?我还看到Editable可以有跨度,而StringBuilder没有。

我想我已经接近了解两者之间的区别,但是我可以使用更多的解释。令我惊讶的是,我找不到在哪里提出这个问题,所以我现在要提出。

同样,具体来说:


StringBuilderEditable有什么区别?
我什么时候应该使用另一种?

最佳答案

StringBuilder和Editable有什么区别?


Editable可以保存诸如html之类的标记。 StringBuilder仅包含纯文本。


  但是我可以从TextView中使用
  textView.getEditableText(),如果它是一个接口,这似乎很奇怪。
  幕后的具体实现是什么?


这并不奇怪。它返回一个Editable,具体实现取决于您如何设置文本。


  是我从TextView回来的对象,实际上是
  SpannableStringBuilder?如果是这样,为什么我会得到一个不兼容的类型
  如果我写SpannableStringBuilder myString =错误
  textView.getEditableText();


可能是,也可能不是。您所知道的是可编辑的。 SpannableStringBuilderEditable,但是Editable不是SpannableStringBuilder,这就是为什么除非向下转换,否则不能将getEditableText的返回值分配给SpannableStringBuilder的原因。一世

关于android - Android StringBuilder与可编辑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41933381/

10-10 16:13