Есть ли способ изменить ресурс imageView с помощью оператора if / when? - PullRequest
0 голосов
/ 25 октября 2019

Я хочу создать такую ​​программу: image

Я перепробовал кучу вещей, но не знаю, что добавить в скобки операторов if / when.

var y = getResources (). GetIdentifier ("menu", "drawable", getPackageName ())

    var y1 = getResources().getIdentifier("door1", "drawable", getPackageName())
    var y2 = getResources().getIdentifier("door_inside", "drawable", getPackageName())
    var y3 = getResources().getIdentifier("door_back", "drawable", getPackageName())
    buttonYes.setOnClickListener {
        when (y) {
        y -> imageView.setImageResource(R.drawable.door1)
        }
        if (y1 = true) {
        imageView.setImageResource(R.drawable.door_inside)
        }
        /*
        when (y2) {
            y2 -> imageView.setImageResource(R.drawable.door_inside2)
        }
        when (y3) {
            y3 -> imageView.setImageResource(R.drawable.door_back2)
        }

         */
    }

    var n = getResources().getIdentifier("menu", "drawable", getPackageName())
    var n1 = getResources().getIdentifier("door1", "drawable", getPackageName())
    var n2 = getResources().getIdentifier("door_back", "drawable", getPackageName())
    var n3 = getResources().getIdentifier("door_inside", "drawable", getPackageName())
    buttonNo.setOnClickListener {
            if (imageView.resources = n) {
            finishAffinity();
            }
            if (drawable=n1) {
               imageView.setImageResource(R.drawable.door_back)
            }
        /*
            when(n2) {
                n2 -> imageView.setImageResource(R.drawable.door_back2_1)
            }
            when(n3) {
                n3 -> imageView.setImageResource(R.drawable.door_inside2_1)
            }

         */
        }
}

}

Ответы [ 2 ]

0 голосов
/ 25 октября 2019

Похоже, было бы чище построить карту рисованных объектов и использовать ее.

import your.package.name.R.drawable.*
//...

data class Choice(val choice1: Int, val choice2: Int)

val choicesMap = mapOf(
     door1 to Choice(door_inside, door_back),
     door_inside to Choice(door_further_inside, door1),
     //etc.
 )

Затем сохранить текущий Drawable при его применении и использовать его для выбора.

var currentImageDrawable = R.drawable.door1

//...

buttonYes.setOnClickListener {
  currentImageDrawable = choicesMap[currentImageDrawable].choice1
  imageView.setImageResource(currentImageDrawable)
}
buttonNo.setOnClickListener {
  currentImageDrawable = choicesMap[currentImageDrawable].choice2
  imageView.setImageResource(currentImageDrawable)
}
0 голосов
/ 25 октября 2019

Вы ищете что-то подобное?

string buttonSequense ="";

buttonYes.setOnClickListener {
  buttonSequense +="yes";
  setImage();
}
buttonNo.setOnClickListener {
  buttonSequense +="no";
  setImage();
}

, а затем метод setImage:

public void setImage(){
  if(buttonSequense.equals("yes")){
    imageView.setImageResource(R.drawable.door_inside)
  }else if(buttonSequense.equals("yesno")){
    imageView.setImageResource(R.drawable.door_back)
  }else if(buttonSequense.equals("yesnonoyesno"))
  //... and so on
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...