【问题标题】:Have spinner dependent on item selected on other spinner使微调器依赖于在其他微调器上选择的项目
【发布时间】:2016-09-15 12:28:43
【问题描述】:

我想根据所选月份显示天数。就像选择的月份是 1 月的演出日期到 31 日,但如果是 2 月的演出日期到 29 日。我看到并尝试了一些解决方案,但它们对我没有用。

这是我的 SignUpActivity 类:

public class SignupActivity extends AppCompatActivity {

    EditText first;
    EditText last;
    TextView birth;
    Spinner month;
    Spinner date;
    Spinner year;
    EditText email;
    EditText phone;
    EditText username;
    EditText password;
    Button done;

    String[] dayOptions = new String[]{
            "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"
    };

    String[] dayOptions2 = new String[]{
            "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30"
    };


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_signup);

        first = (EditText) findViewById(R.id.firstName);
        last = (EditText) findViewById(R.id.lastName);
        birth = (TextView) findViewById(R.id.birthText);
        month = (Spinner) findViewById(R.id.birthMonth);
        date = (Spinner) findViewById(R.id.birthDate);
        year = (Spinner) findViewById(R.id.birthYear);
        email = (EditText) findViewById(R.id.email);
        phone = (EditText) findViewById(R.id.phoneNumber);
        username = (EditText) findViewById(R.id.usernameEdit);
        password = (EditText) findViewById(R.id.passwordEdit);
        done = (Button) findViewById(R.id.done);


        // month dropdown
        final Spinner monthDrop = (Spinner) findViewById(R.id.birthMonth);
        String[] monthOptions = new String[]{
                "January", "February", "March", "April", "June", "July", "August", "September", "October", "November", "December"
        };
        ArrayAdapter<String> monthAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, monthOptions);
        monthDrop.setAdapter(monthAdapter);

        // days dropdown

        Spinner dateDrop = (Spinner) findViewById(R.id.birthDate);
        String[] dayOptions = new String[]{
                "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"
        };
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, dayOptions);
        dateDrop.setAdapter(adapter);


        // year dropdown

        Spinner yearDrop = (Spinner) findViewById(R.id.birthYear);
        String[] yearOptions = new String[]{
                "1990", "1991", "1992", "1993", "1994", "1995", "1996", "1997", "1998", "1999", "2000", "2001", "20012", "2003", "2004", "2005", "2006"
        };
        ArrayAdapter<String> yearAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, yearOptions);
        yearDrop.setAdapter(yearAdapter);

//        CharSequence[] dateOptions = new CharSequence[] {
//        };

        done.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (first.getText().toString().equals("") || last.getText().toString().equals("") ||
                        email.getText().toString().equals("") || phone.getText().toString().equals("") ||
                        username.getText().toString().equals("") || password.getText().toString().equals("") || first.getText().toString().startsWith(" ") ||
                        last.getText().toString().startsWith(" ") || email.getText().toString().startsWith(" ") || phone.getText().toString().startsWith(" ") ||
                        username.getText().toString().startsWith(" ") || password.getText().toString().startsWith(" ")) {
                    Toast.makeText(getApplicationContext(), "Please fill all blanks", Toast.LENGTH_SHORT).show();
                } else {
                    Intent intent = new Intent(SignupActivity.this, MainActivity.class);
                    startActivity(intent);
                    Toast.makeText(getApplicationContext(), "You have been signed up as " + first.getText().toString() + " " + last.getText().toString() + " (" + username.getText().toString() + ")", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

任何帮助将不胜感激!提前致谢!

更新:我尝试了@siva35 的回答,但是日期下拉选项都消失了。我的代码是:

            month.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
//                int intPosition = position;
                if(position == 0 || position == 2 || position == 4 || position == 5 || position == 7 || position == 9 ||position == 11) {
//        Spinner date = (Spinner) findViewById(R.id.birthDate);
                    String[] dayOptions = new String[]{
                            "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"
                    };
                    ArrayAdapter<String> adapter = new ArrayAdapter<>(getApplication(), android.R.layout.simple_spinner_dropdown_item, dayOptions);
                    date.setAdapter(adapter);
                } else if(position == 3 || position == 5 || position == 6 || position == 9 || position == 11 ) {
                    String[] dayOptions = new String[]{
                            "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30"
                    };
                    ArrayAdapter<String> adapter = new ArrayAdapter<>(getApplication(), android.R.layout.simple_spinner_dropdown_item, dayOptions);
                    date.setAdapter(adapter);
                } else if(position == 1) {
                    String[] dayOptions = new String[]{
                            "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28"
                    };
                    ArrayAdapter<String> adapter = new ArrayAdapter<>(getApplication(), android.R.layout.simple_spinner_dropdown_item, dayOptions);
                    date.setAdapter(adapter);
                } else {
                    Toast.makeText(getApplicationContext(), "Not working", Toast.LENGTH_LONG).show();
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parentView) {
                Toast.makeText(getApplicationContext(), "Please select something", Toast.LENGTH_LONG).show();
            }
        });

【问题讨论】:

    标签: android drop-down-menu spinner android-spinner dropdown


    【解决方案1】:

    使用OnItemSelectedListener() 方法。

    month.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
    
            // your code here to display date options
    
        }
    
        @Override
        public void onNothingSelected(AdapterView<?> parentView) {
            // your code here
        }
    
    })
    

    ;

    【讨论】:

      【解决方案2】:

      感谢@siva35 的回答!我得到了我自己问题的答案。我的代码是:

              month.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
      
              @Override
              public void onItemSelected(AdapterView<?> parent, View view,
                                         int pos, long id) {
      
                  List<String> s = Arrays.asList(getResources().getStringArray(R.array.item_day));
      
                  if (pos == 0 || pos == 2 || pos == 4 || pos == 8 || pos == 9
                          || pos == 11) {
                      ArrayAdapter<String> dayadapter = new  ArrayAdapter<String>(SignupActivity.this, android.R.layout.simple_spinner_item,s);
                      date.setAdapter(dayadapter);
                  } else if (pos == 1) {
                      s = s.subList(0,28);
                      ArrayAdapter<String> dayadapter = new  ArrayAdapter<String>(SignupActivity.this, android.R.layout.simple_spinner_item,s);
                      date.setAdapter(dayadapter);
                  } else {
                      s = s.subList(0,30);
                      ArrayAdapter<String> dayadapter = new  ArrayAdapter<String>(SignupActivity.this, android.R.layout.simple_spinner_item,s);
                      date.setAdapter(dayadapter);
                  }
              }
              @Override
              public void onNothingSelected(AdapterView<?> arg0) {
                  Toast.makeText(getApplicationContext(), "Please select something", Toast.LENGTH_SHORT).show();
              }
          });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-20
        • 1970-01-01
        • 1970-01-01
        • 2012-04-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多