如何动态地从多个TextView中更改文本?

时间:2018-10-19 13:34:39

标签: android android-studio kotlin

我需要使用for循环设置布局中已经存在的一些textView的文本。例如。 TextView_01,TextView_02等。是否可以执行类似以下推测性代码的方法:

for(1 in 0..6){
       TextView_0(change value with i).text = something
}

3 个答案:

答案 0 :(得分:1)

这不是最好的处理方法,但它可能是最通用的,同时避免创建预定义的TextViews数组:

val base = "TextView_0"

for (i in 1 until 6) {
    val textView = findViewById(resources.getIdentifier("${base}i", "id", packageName)
    textView.text = something
}

由于您的语法错误,我对您的for循环进行了一些更改。我还用..替换了until,因为..的意思是 through 的右边界,这可能不是您想要的。如果确实需要6作为i的值,则将其改回..


如果所有TextView都位于XML的单个父项下,请给该父项提供一个ID,然后遍历其子项:

val parent = findViewById(R.id.tvParent)

for (i in 0 until parent.getChildCount()) {
    (container.getChildAt(i) as TextView).text = something
}

答案 1 :(得分:-1)

您可以使用父容器

    for (i in 0 until container.childCount) {
        (container.getChildAt(i) as TextView).text = something
    }

答案 2 :(得分:-1)

一种更好的方法是利用DataBinding和LiveData API,可以为TextViews的文本属性分配不同的变量或相同的变量。