You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用循环填充视图?TextView组件批量赋值代码实现疑问

这个想法很实用!不过在Android开发里,Java或者Kotlin都不支持直接通过tv_{i}这种字符串拼接变量名的方式来访问控件,但我们有几种更靠谱的方法来实现批量赋值:

方法一:将TextView存入集合后循环(推荐)

这种方法最直观也最安全,先把需要操作的TextView统一放进数组或列表,再通过循环遍历赋值:

Java 示例

import java.util.Arrays;
import java.util.List;
import android.widget.TextView;

// 初始化TextView列表
List<TextView> textViews = Arrays.asList(
    findViewById(R.id.tv_1),
    findViewById(R.id.tv_2),
    findViewById(R.id.tv_3)
);

// 循环赋值
for (int i = 0; i < textViews.size(); i++) {
    // 这里i从0开始,所以加1对应1、2、3
    textViews.get(i).setText(String.valueOf(i + 1));
}

Kotlin 示例

import android.widget.TextView

val textViews = listOf(
    findViewById<TextView>(R.id.tv_1),
    findViewById<TextView>(R.id.tv_2),
    findViewById<TextView>(R.id.tv_3)
)

// 使用forEachIndexed同时获取索引和控件
textViews.forEachIndexed { index, tv ->
    tv.text = "${index + 1}"
}

方法二:通过资源ID动态查找控件

如果你不想手动逐个添加控件到集合,可以利用Android资源ID的命名规则,通过getIdentifier()方法动态获取控件ID,再找到对应的TextView:

Java 示例

import android.widget.TextView;

for (int i = 1; i <= 3; i++) {
    // 动态拼接控件名,获取资源ID
    int resId = getResources().getIdentifier("tv_" + i, "id", getPackageName());
    TextView tv = findViewById(resId);
    
    // 一定要判空,避免控件不存在时出现空指针异常
    if (tv != null) {
        tv.setText(String.valueOf(i));
    }
}

Kotlin 示例

import android.widget.TextView

for (i in 1..3) {
    val resId = resources.getIdentifier("tv_$i", "id", packageName)
    val tv = findViewById<TextView>(resId)
    
    // Kotlin的安全调用运算符?.避免空指针
    tv?.text = "$i"
}

额外:使用ViewBinding的情况

如果你的项目已经用了ViewBinding(现在推荐的绑定方式),可以直接把Binding类里的控件放进集合再循环,这种方式完全避免空指针:

// 假设你的布局是activity_main.xml,对应的Binding类是ActivityMainBinding
val binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)

val textViews = listOf(binding.tv1, binding.tv2, binding.tv3)
textViews.forEachIndexed { index, tv ->
    tv.text = "${index + 1}"
}

小提示

  • 方法一的稳定性更高,不需要依赖控件的命名规则,也不用担心找不到控件的问题;
  • 方法二更适合控件数量特别多的场景,但要确保控件命名严格匹配,并且做好空指针防护;
  • ViewBinding是当前Android官方推荐的控件绑定方式,优先使用它能减少很多潜在问题。

内容的提问来源于stack exchange,提问作者Кирилл Емельянов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:28:42