Android StringBuilder 与可编辑
Android StringBuilder vs Editable
试图理解this answer, I failed to understand the difference between StringBuilder
and Editable
。此图像(减去手绘红色圆圈)来自该答案。
他们都有append
、delete
、insert
和replace
文本的方法。我看到 StringBuilder
是一个实际的 class 而 Editable
是一个接口。但是我可以用 textView.getEditableText()
从 TextView
返回 Editable
,如果它是一个接口,这看起来很奇怪。幕后的具体实现是怎样的?我还看到 Editable
可以有跨度,而 StringBuilder
没有。
我想我已经接近理解其中的区别了,但我还需要更多的解释。我很惊讶我找不到这个问题已经被问过的地方,所以我现在问。
再次,具体来说:
StringBuilder
和Editable
有什么区别?
- 我什么时候应该使用一个而不是另一个?
What is the difference between StringBuilder and Editable?
Editable
可以包含 html
这样的标记。 StringBuilder
仅包含纯文本。
But I can get an Editable back from a TextView with
textView.getEditableText(), which seems strange if it is an interface.
What is the concrete implementation behind the scenes?
这并不奇怪。 return是一个Editable
,具体实现要看你怎么设置文本了。
is the object that I am getting back from TextView actually a
SpannableStringBuilder? And if so, why do I get an incompatible types
error if I write SpannableStringBuilder myString =
textView.getEditableText();
可能是也可能不是。你所知道的是,这是一个可编辑的。 SpannableStringBuilder
是 Editable
,但 Editable
不是 SpannableStringBuilder
,这就是为什么你不能分配 getEditableText
的 return 值到 SpannableStringBuilder
除非你向下投它。我
试图理解this answer, I failed to understand the difference between StringBuilder
and Editable
。此图像(减去手绘红色圆圈)来自该答案。
他们都有append
、delete
、insert
和replace
文本的方法。我看到 StringBuilder
是一个实际的 class 而 Editable
是一个接口。但是我可以用 textView.getEditableText()
从 TextView
返回 Editable
,如果它是一个接口,这看起来很奇怪。幕后的具体实现是怎样的?我还看到 Editable
可以有跨度,而 StringBuilder
没有。
我想我已经接近理解其中的区别了,但我还需要更多的解释。我很惊讶我找不到这个问题已经被问过的地方,所以我现在问。
再次,具体来说:
StringBuilder
和Editable
有什么区别?- 我什么时候应该使用一个而不是另一个?
What is the difference between StringBuilder and Editable?
Editable
可以包含 html
这样的标记。 StringBuilder
仅包含纯文本。
But I can get an Editable back from a TextView with textView.getEditableText(), which seems strange if it is an interface. What is the concrete implementation behind the scenes?
这并不奇怪。 return是一个Editable
,具体实现要看你怎么设置文本了。
is the object that I am getting back from TextView actually a SpannableStringBuilder? And if so, why do I get an incompatible types error if I write SpannableStringBuilder myString = textView.getEditableText();
可能是也可能不是。你所知道的是,这是一个可编辑的。 SpannableStringBuilder
是 Editable
,但 Editable
不是 SpannableStringBuilder
,这就是为什么你不能分配 getEditableText
的 return 值到 SpannableStringBuilder
除非你向下投它。我