gpt4 book ai didi

android - 从 SpannableStringBuilder 获取 SpannableString 的最佳方法

转载 作者:行者123 更新时间:2023-12-03 03:25:14 24 4
gpt4 key购买 nike

我正在一个类似 wiki 的解析器中工作,它为一组标记 token 创建跨度。它正在工作,但在 token 迭代器内,我经常需要将 SpannableStringBuilder 上的部分结果转换为 SpannableString。这被频繁调用,因此我正在寻找最有效的解决方案,并避免创建额外的对象。

目前我正在使用;

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

然而,这个 valueOf 调用在内部从头开始构建一个 SpannableString 类型,执行 toString 和一个循环来复制分配的 span .

正如 SpannableStringBuilder 名称所暗示的那样,我认为也许有一种更快的方法可以从构建器获取 SpannableString 。这是真的吗?

最佳答案

当您可以像在 TextView 中一样直接使用 SpannableString 时,无需将 SpannableStringBuilder 转换为 SpannableString:

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

正如问题已经表明的那样,如果绝对必要,您可以进行转换

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

但是您应该考虑为什么您甚至需要进行这种转换?只需使用原始的SpannableStringBuilder即可。

SpannableStringSpannableStringBuilder

这两者之间的区别类似于StringStringBuilder之间的区别。 String 是不可变的,但您可以更改 StringBuilder 中的文本。

同样,SpannableString 中的文本是不可变的,而 SpannableStringBuilder 中的文本是可变的。但值得注意的是,这仅适用于文本。它们的跨度(甚至是 SpannableString)都可以更改。

相关

关于android - 从 SpannableStringBuilder 获取 SpannableString 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23180107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com