kotlin 如何在Android中为列表中的每个元素创建TextView?

ycggw6v2  于 2023-01-05  发布在  Kotlin
关注(0)|答案(1)|浏览(221)

我尝试在Android中为列表中的每个元素创建一个文本视图,如何为列表中的每个元素动态生成一个文本视图?
我尝试过使用for循环来遍历列表,并为每个元素创建一个新的textview,但是我在实现这个过程中遇到了麻烦,任何帮助都将非常感谢。

von4xj4u

von4xj4u1#

您通常会使用RecycleView来实现这一点,但在某些情况下,您将手动添加列表。
您可以简单地创建TextView并向其添加属性,重要的是要包括LayoutParams,以便可以呈现视图。

val food = listOf("apple", "pie", "banana", "cookie")
        val linearLayout = findViewById<LinearLayout>(R.id.myList)

        food.forEach {
            TextView(this).apply {
                layoutParams = LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)
                text = it
                linearLayout.addView(this)
            }
        }

请记住,LayoutParams需要是各自ViewGroup的嵌套类,因此如果父类是LinearLayout,则应该使用LinearLayout.LayoutParams
如果它不是TextView,而是您在自己的XML布局(res/layout/my_custom_row. xml)中定义的视图,则可以对其使用binding

MyCustomRowBinding.inflate(layoutInflater, containerLayout, true).apply {
     nameTextView.text = item.name
}

你不需要使用viewGroup.addView(),因为当最后一个参数是true时,inflater已经添加了视图。

相关问题