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_view
和 text_view
而无需使用 findViewById()
.
找到它们
我是一个学习 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_view
和 text_view
而无需使用 findViewById()
.