使用微调器依赖于在其他微调器上选择的项目

时间:2016-09-14 03:20:12

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

我想根据所选月份显示天数。就像选择的月份是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();
            }
        });

2 个答案:

答案 0 :(得分: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
    }

})

答案 1 :(得分:0)

谢谢@ 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();
        }
    });