我需要使用for循环设置布局中已经存在的一些textView的文本。例如。 TextView_01,TextView_02等。是否可以执行类似以下推测性代码的方法:
for(1 in 0..6){
TextView_0(change value with i).text = something
}
答案 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的文本属性分配不同的变量或相同的变量。