Подтвердить что ты не робот

Spinner on value Изменить

У меня есть два счетчика в моей системе. Теперь я должен изменить выбранное значение второго счетчика в зависимости от первого значения счетчика. Как только пользователь изменит значение 1-го счетчика, второе значение счетчика будет установлено автоматически в зависимости от выбранного 1-го счетчика. Как это реализовать?

4b9b3361

Ответ 1

Из Hello Spinner:

Теперь создайте вложенный класс, который реализует AdapterView.OnItemSelectedListener. Это обеспечит метод обратного вызова, который будет уведомлять ваше приложение, когда элемент был выбран из Spinner. Вот как выглядит этот класс:

public class MyOnItemSelectedListener implements OnItemSelectedListener {

    public void onItemSelected(AdapterView<?> parent,
        View view, int pos, long id) {
      Toast.makeText(parent.getContext(), "The planet is " +
          parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
    }

    public void onNothingSelected(AdapterView parent) {
      // Do nothing.
    }
}

Для AdapterView.OnItemSelectedListener требуются методы обратного вызова onItemSelected() и onNothingSelected(). Первый вызывается, когда выбирается элемент из AdapterView, и в этом случае короткое сообщение Toast отображает выделенный текст; и последний вызывается, когда выбор исчезает из AdapterView, чего не происходит в этом случае, поэтому он игнорируется. Теперь MyOnItemSelectedListener необходимо применить к Spinner. Вернитесь к методу onCreate() и добавьте следующую строку в конец:     spinner.setOnItemSelectedListener(новый MyOnItemSelectedListener());

Другими словами, вам нужно создать OnItemSelectedListener, который изменяет значение второго счетчика и присоединяет его к первому счетчику.

Ответ 2

Вы должны поставить условие на onItemSelected самого первого счетчика. В этом примере вы можете получить значение 2-го счетчика в зависимости от 1-го счетчика:

        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) {

        if(arg0.equals(spin0)){
        spin1.setClickable(true);
                    if(spin0.getSelectedItem().equals("India"))
                    {
                        ArrayAdapter <String> s1 = new ArrayAdapter <String> (this,android.R.layout.simple_spinner_item,states_india);
                        s1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        spin1.setAdapter(s1);
                    }
                    else  if(spin0.getSelectedItem().equals("Pakistan"))
                    {
                        ArrayAdapter <String> s2 = new ArrayAdapter <String> (this,android.R.layout.simple_spinner_item,states_pak);
                        s2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        spin1.setAdapter(s2);
                    }
                    else  if(spin0.getSelectedItem().equals("China"))
                    {
                        ArrayAdapter <String> s3 = new ArrayAdapter <String> (this,android.R.layout.simple_spinner_item,states_china);
                        s3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        spin1.setAdapter(s3);
                    }

        }

    }    

Ответ 3

Вы должны определить onItemSelected() отдельно для каждого счетчика. В противном случае код запускается, если что-либо выбирается из обоих прядильщиков.

    newCategory.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            // TODO Auto-generated method stub

            String selCat = newCategory.getItemAtPosition(arg2).toString();

            if (selCat != "New")
            {
                loadSpinnerData(topic);
            }
        }

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

        }
    });
    newTopic.setOnItemSelectedListener(new OnItemSelectedListener() {


        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
            // TODO Auto-generated method stub
            loadSpinnerData()
    }

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