以编程方式使用变量使imageView可见/不可见

我有一个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) – > works cellName.setVisibility(View.INVISIBLE) – 不编译

你可以通过使用Resources.getIdentifier()生成一个视图id(又名R.id常量Resources.getIdentifier()

你的代码示例(假设你在一个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。 希望你能适应它。

你最好的办法可能是把所有的ImageViews都放到一个映射中,其中“cellName”的值是关键。 然后从地图上检索每个ImageView