2

在试图理解这个答案StringBuilder时,我无法理解和之间的区别Editable。该图像(减去手绘的红色圆圈)来自该答案。

在此处输入图像描述

它们都具有appenddeleteinsertreplacetext 的方法。我看到这StringBuilder是一个实际的类,而Editable它是一个接口。但是我可以从with得到一个Editable返回,如果它是一个接口,这似乎很奇怪。幕后的具体实现是什么?我还看到它可以有跨度,而 a没有。TextViewtextView.getEditableText()EditableStringBuilder

我想我已经接近理解差异了,但我可以使用更多的解释。我很惊讶我找不到已经问过这个问题的地方,所以我现在问它。

再次,特别是:

  • StringBuilder和 和有什么不一样Editable
  • 我什么时候应该使用一个而不是另一个?
4

1 回答 1

1

StringBuilder 和 Editable 有什么区别?

Editable可以保存这样的标记htmlStringBuilder仅包含纯文本。

但是我可以使用 textView.getEditableText() 从 TextView 中获取可编辑的内容,如果它是一个界面,这似乎很奇怪。幕后的具体实现是什么?

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

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

可能是,也可能不是。你所知道的是这是一个可编辑的。ASpannableStringBuilder是 a Editable,但 anEditable不是 a SpannableStringBuilder,这就是为什么您不能将 a 的返回值分配getEditableText给 a SpannableStringBuilder,除非您向下转换它。一世

于 2017-01-30T10:41:47.320 回答