在代码中使用变量或在android中定义字符串资源

时间:2019-04-29 18:48:19

标签: android string

我为不同的TextView和 其中很多与以下相同:

<string name="total">total</string>
<string name="totalWithColon">total:</string>
<string name="date">date</string>
<string name="dateWithColon">date:</string>
.
.
.

有些地方是不需要的,而在某些地方需要使用Colon(:)

,但另一种方式是这样的: 定义一个eah主词,然后定义一个对冒号(:)的响应

<string name="total">total</string>
<string name="date">date</string>
.
.
.
<string name="colon">:</string>
.
.
.

但是这种方式需要调用getString,也许需要定义变量

val combinStr1 = getString(R.string.total) + getString(R.string.colon)
val combinStr1 = getString(R.string.date) + getString(R.string.colon)

或直接使用

myveiw.text = getString(R.string.date) + getString(R.string.colon)

我的问题是,哪种代码对性能更好?

2 个答案:

答案 0 :(得分:0)

由于您正在使用Kotlin,

您可以尝试创建Context类的扩展功能,例如:

fun Context.getStringWithColon(stringResId : String) : 
String = getString(stringResId) + " : "

然后在您的代码中,您将像这样简单地使用它:

myveiw.text = getStringWithColon(R.string.date)

答案 1 :(得分:0)

您不必在资源中存储一切,尤其是在:-等情况下。
我的意思是,不会用char符号无论如何都需要更改或不需要翻译。
除非绝对必要,否则除非如此。
科特林中,您可以像这样使用string interpolation

val combinStr1 = "${getString(R.string.total)}:"

简单易读。