如何在TextView中显示数组内所有Fruit对象的name属性?
解决TextView仅显示最后一个数组元素的问题
你当前的问题核心是:循环中每次直接赋值给textView.text,会覆盖之前的内容,最终只保留最后一次循环的结果。以下是几种实用的解决方法:
方法一:用joinToString快速拼接(推荐)
Kotlin集合自带的joinToString方法可以一键将所有元素的指定属性拼接成字符串,直接赋值给TextView即可:
data class Fruit(val name: String, val price: Int) val fruits = arrayOf( Fruit(name = "Apple", price = 2), Fruit(name = "Grape", price = 3), Fruit(name = "Banana", price = 4) ) // 用逗号+空格分隔,也可替换为换行符"\n"实现每行一个元素 textView.text = fruits.joinToString(separator = ", ") { it.name }
执行后TextView会显示:Apple, Grape, Banana
方法二:手动循环拼接字符串
如果需要自定义拼接逻辑(比如添加额外前缀/后缀),可以用StringBuilder逐步构建内容:
val nameBuilder = StringBuilder() for (fruit in fruits) { if (nameBuilder.isNotEmpty()) { nameBuilder.append(" | ") // 自定义分隔符 } nameBuilder.append(fruit.name) } textView.text = nameBuilder.toString()
方法三:使用TextView.append追加内容
直接调用append方法在原有内容后追加新元素,注意先清空TextView原有内容:
textView.text = "" // 清空初始内容 for (fruit in fruits) { textView.append(fruit.name) textView.append("\n") // 每个元素换行显示 }
内容的提问来源于stack exchange,提问作者Jannas
相关产品推荐
相关产品推荐

