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

时间:2017-09-12 15:40:13

标签: android kotlin

我有一个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) - 不编译

2 个答案:

答案 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