Android 的 Kotlin - Kotlin 编程

Kotlin for Android - Kotlin programming

我是一个学习 Kotlin 的 bigginer android 我开始在我的学习之旅中创建一个小应用程序,我的问题是:

1- 如果我使用以下方法创建图像数组并调用它:

var Images = intArrayOf(R.drawable.PHGLHB_356,R.drawable.PHGLFY145,R.drawable.basket10,R.drawable.basket2,R.drawable.basket3)

var index_image = 0

当我想创建一个字符串列表时,我该怎么做才能做同样的事情?

var Textes = ArrayList(R.string.text1,R.string.text2,R.string.text3,R.string.text4,R.string.text5)

var index_text = 0

2-我还有以下功能来设置图像源(下面是我尝试的代码):

fun ChangeImage(view: View){
    var image_view = findViewById(R.id.image_view) as ImageView
    image_view.setImageResource(Images[index_image])
    index_image++

    if (index_image == Images.size){

        index_image = 0
    }
}

3-如何获取文本(下面是我尝试的代码):

fun ChangeText(view: TextView) {
        var text_view = findViewById(R.id.text_view) as TextView
        text_view.setText(Textes[index_text])
        index_text++

        if (index_text == Textes.size) {

            index_text = 0
        }
}

感谢你们宝贵的帮助!

这个数组:

var Images = intArrayOf(R.drawable.PHGLHB_356, R.drawable.PHGLFY145,R.drawable.basket10,R.drawable.basket2,R.drawable.basket3)

不是图像数组,而是与可绘制对象的 id 对应的整数数组。
同样这个数组列表(如果它被正确初始化):

var Textes = ArrayList(R.string.text1,R.string.text2,R.string.text3,R.string.text4,R.string.text5)

不是一个字符串数组列表,而是一个整数数组,对应于资源中存储的字符串的id。
所以你可以使用 intArrayOf 而不是 ArrayList 就像其他数组一样,因为这种方式更像 Kotlin:

var Textes = intArrayOf(R.string.text1,R.string.text2,R.string.text3,R.string.text4,R.string.text5)

你的两个函数在语法上都是正确的,尽管最好像这样编写 findViewById() 方法:

var image_view = findViewById<ImageView>(R.id.image_view)

var text_view = findViewById<TextView>(R.id.text_view)

此外,如果您在导入中有这样一行,您甚至不需要使用 findViewById()

import kotlinx.android.synthetic.main.activity_main.*

如果您这样做,那么您可以访问 image_viewtext_view 而无需使用 findViewById().

找到它们