我有一个Kotlin函数,在显式调用imageView时可以正常工作。但是当一个变量' cellName'使用代码将无法编译。
我的目标是以编程方式生成imageView名称,然后设置/取消设置其可见性。有人可以告诉我哪里出错了。
TIA
fun game(view: View) {
var col = 1
var row = 0
var cellName = ""
object : CountDownTimer(10000, 1000){
override fun onFinish() {
Toast.makeText(applicationContext, "Time's Up", Toast.LENGTH_LONG).show()
textView9.text = "Time: 0"
}
override fun onTick(p0: Long) {
textView9.text = "Time: "+ p0 /1000
// Hide current position
cellName = "imageView"+row+col
imageView01.setVisibility(View.INVISIBLE)
// Get next random position
// Show new Position
}
}.start()
}
所以: imageView01.setVisibility(View.INVISIBLE) - >作品 cellName.setVisibility(View.INVISIBLE) - 不编译
答案 0 :(得分:0)
您可以使用Resources.getIdentifier()
生成视图ID(也称为R.id
常量)。
代码的示例(假设您在Activity
内运行)可能是:
int row = 0;
int col = 1;
String name = "imageView" + row + col;
int id = getResources().getIdentifier(name, "id", getPackageName());
ImageView imageView = findViewById(id);
imageView.setVisibility(View.INVISIBLE);
很抱歉这是Java,而不是Kotlin。希望你能适应它。
答案 1 :(得分:0)
您最好的选择可能是将所有问题ImageViews
放入地图中,其中“cellName”的值是关键。然后从地图中检索每个ImageView
。