Логика для нажатия на картинку

Есть 6 картинок внизу и 6 пустых слотов для них наверху, если я нажал на картинку внизу, то она должна занять первый слот, неважно на какую я нажимаю: на первую или на последнюю, и соответственно каждая последующая второй третий и так далее.

У меня не получилось сделать это через if else, почему то дальше второго слота картинки не заполняются, отправляю вариант с нажатием на первую кнопку с картинкой

   //булеан для проверки на заполненность слота картинкой
    boolean for1pic = false;
    boolean for2pic = false;
    boolean for3pic = false;

   //объявляем цвета - начало
   final ImageView color1 = (ImageView) findViewById(R.id.color1);
   final ImageView color2 = (ImageView) findViewById(R.id.color2);
   final ImageView color3 = (ImageView) findViewById(R.id.color3);

   //объявляем цвета - конец

    //объявляем прозрачные слоты - начало
   final ImageView trans1 = (ImageView) findViewById(R.id.trans1);
   final ImageView trans2 = (ImageView) findViewById(R.id.trans2);
   final ImageView trans3 = (ImageView) findViewById(R.id.trans3);
   //объявляем прозрачные слоты - конец

   //нажатие на первый цвет начало
    color1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (!for1pic){
                color1.setVisibility(View.INVISIBLE);
                trans1.setImageResource(R.drawable.color_black);
                for1pic=true;
            }
            else if (for1pic){
                color1.setVisibility(View.INVISIBLE);
                trans2.setImageResource(R.drawable.color_black);
                for2pic=true;
            }
            else if (!for2pic){
                color1.setVisibility(View.INVISIBLE);
                trans2.setImageResource(R.drawable.color_black);
                for1pic=true;
            }
            else if (for2pic){
                color1.setVisibility(View.INVISIBLE);
                trans3.setImageResource(R.drawable.color_black);
                for3pic=true;
            }

Ответы (1 шт):

Автор решения: Alex_Skvortsov

Я бы сделал примерно так:

//объявляем цвета - начало
final ImageView color1 = (ImageView) findViewById(R.id.color1);
final ImageView color2 = (ImageView) findViewById(R.id.color2);
final ImageView color3 = (ImageView) findViewById(R.id.color3);

//объявляем цвета - конец

//объявляем прозрачные слоты - начало
final ImageView trans1 = (ImageView) findViewById(R.id.trans1);
final ImageView trans2 = (ImageView) findViewById(R.id.trans2);
final ImageView trans3 = (ImageView) findViewById(R.id.trans3);
//объявляем прозрачные слоты - конец

ArrayList<Integer> addedImages = new ArrayList<>();

void redrawAdded(){
    int defaultColor = R.drawable.color_black; //этим цветом подкрашиваем изначально
    if(addedImages.getSize() >= 1){
        trans1.setImageResource(addedImages.get(0));
    } 

    if(addedImages.getSize() >= 2){
        trans2.setImageResource(addedImages.get(1));
    } 

    if(addedImages.getSize() >= 3){
        trans3.setImageResource(addedImages.get(2));
    } 
}

color1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        color1.setVisibility(View.INVISIBLE);
        addedImages.add(color1Color); //здесь color1Color- цвет, который зависит от кнопки 
        redrawAdded();
    }
}

color2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        color2.setVisibility(View.INVISIBLE);
        addedImages.add(color2Color); //здесь color2Color- цвет, который зависит от кнопки 
        redrawAdded();
    }
}

color3.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        color3.setVisibility(View.INVISIBLE);
        addedImages.add(color3Color); //здесь color3Color- цвет, который зависит от кнопки 
        redrawAdded();
    }
}
→ Ссылка