как сделать так, чтобы спиннер показал значение из того, что он выбрал во второй раз - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь сделать так, чтобы мой счетчик показывал, значение зависит от того, что он выбрал раньше.но во второй раз , потому что я сделал это в первый раз, когда он показывает, зависит от выбранного элемента ранее, но не работает, когда я пробую его во второй раз, зависит от того, что было выбрано в первый раз, выбранный ранее.

это мой код

gedungSpn.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view,
                                   int position, long id) {
            if (position == 0) {
                LantaiSpinnerRektorat();
                lantaiSpn.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                        switch (i) {
                            case 0 : RuanganLantai1Rekto();
                            case 1 : RuanganLantai2Rekto();
                            case 2 : RuanganLantai3Rekto();
                            case 3 : RuanganLantai4Rekto();
                        }
                    }

                    @Override
                    public void onNothingSelected(AdapterView<?> adapterView) {
                    }
                });
            } else if (position == 1) {
                LantaiSpinnerGL();
                lantaiSpn.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                        switch (i){
                            case 0 : RuanganLantai1GL();
                            case 1 : RuanganLantai2GL();
                            case 2 : RuanganLantai3GL();
                            case 3 : RuanganLantai4GL();
                            case 4 : RuanganLantai5GL();
                            case 5 : RuanganLantai6GL();
                            case 6 : RuanganLantai7GL();
                            case 7 : RuanganLantai8GL();
                            case 8 : RuanganLantai9GL();
                        }
                    }

                    @Override
                    public void onNothingSelected(AdapterView<?> adapterView) {

                    }
                });
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
            // TODO Auto-generated method stub

        }
    });

пожалуйста, помогите мне заставить его работать.это не повторяющийся вопрос, потому что я хочу, чтобы счетчик зависел от элемента, выбранного для второго элемента, выбранного ранее.код, который я пробовал в этом случае.

он не показывает никакой ошибки

1 Ответ

0 голосов
/ 07 июня 2018

Не правильно размещать слушателя для item1 внутри слушателя для item2, поэтому отделите 2 слушателя друг от друга.создайте переменную gedungSelectedItemPosition, которая будет содержать только 0 или 1 в зависимости от выбора первого счетчика.Затем OnItemSelectedListener второго счетчика, проверьте, равен ли gedungSelectedItemPosition 0 или 1, перед обработкой вашего выбора.Проверьте мой код ниже:

int gedungSelectedItemPosition = -1; //initializing it with a value not 0 or 1

gedungSpn = findViewById(R.id.your_spinner_id); 
lantaiSpn = findViewById(R.id.your_spinner_id); 

gedungSpn.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view,
    int position, long id) {
    gedungSelectedItemPosition = position;
    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {
        // TODO Auto-generated method stub

    }
});



lantaiSpn.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
   @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        if (gedungSelectedItemPosition == 0) {
        LantaiSpinnerRektorat();
        switch (i) {
        case 0 : RuanganLantai1Rekto();
        case 1 : RuanganLantai2Rekto();
        case 2 : RuanganLantai3Rekto();
        case 3 : RuanganLantai4Rekto();
        }
        }
        else if(gedungSelectedItemPosition == 1){
        LantaiSpinnerGL();
        switch (i){
        case 0 : RuanganLantai1GL();
        case 1 : RuanganLantai2GL();
        case 2 : RuanganLantai3GL();
        case 3 : RuanganLantai4GL();
        case 4 : RuanganLantai5GL();
        case 5 : RuanganLantai6GL();
        case 6 : RuanganLantai7GL();
        case 7 : RuanganLantai8GL();
        case 8 : RuanganLantai9GL();
        }
        }
        }

@Override
public void onNothingSelected(AdapterView<?> adapterView) {
        }
        });
...