Android Spinner添加/删除条目

时间:2012-07-15 23:18:26

标签: android spinner

我正在创建一个Android应用程序,询问用户他们的出生日和出生月份。我正在使用两个旋转器(一个用于本月,一个用于该月的几天)。 我希望微调器根据月份改变, 例如,二月有29天,所以我希望那天旋转器停在29号。但如果选择了一个月31天,我希望天旋转器高达31。

最好的方法是什么?我知道我可以使用DatePicker,但我以前从未使用它,而且我只需要一个月和一天(不是一年)。

debugText只是我创建的一个textView,用于测试我的微调器并确保我的编码到目前为止。

//代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.form);

    // Month

    monthSpinner = (Spinner) findViewById(R.id.spinner1);
    ArrayAdapter<CharSequence> monthAdapter = ArrayAdapter
            .createFromResource(this, R.array.month,
                    android.R.layout.simple_spinner_item);
    monthAdapter
            .setDropDownViewResource(android.R.layout.simple_spinner_item);
    monthSpinner.setAdapter(monthAdapter);

    monthName = "January";

    // Day

    daySpinner = (Spinner) findViewById(R.id.spinner2);
    final ArrayAdapter<CharSequence> dayAdapter = ArrayAdapter
            .createFromResource(this, R.array.day,
                    android.R.layout.simple_spinner_item);
    dayAdapter
            .setDropDownViewResource(android.R.layout.simple_spinner_item);
    daySpinner.setAdapter(dayAdapter);

    debugText = (TextView) findViewById(R.id.debugText);
    debugText.setText("Jaunary");

    daySpinner = (Spinner) findViewById(R.id.spinner2);

    monthSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {

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

            int monthPos = monthSpinner.getSelectedItemPosition();
            switch (monthPos) {
            case 0:
                debugText.setText("January");

                break;
            case 1:

                debugText.setText("February");

                break;
            case 2:
                debugText.setText("March");

                break;
            case 3:
                debugText.setText("April");

                break;
            case 4:
                debugText.setText("May");

                break;

            case 5:
                debugText.setText("June");

                break;
            case 6:

                debugText.setText("July");

                break;
            case 7:
                debugText.setText("August");

                break;
            case 8:
                debugText.setText("September");

                break;
            case 9:
                debugText.setText("October");

                break;

            case 10:
                debugText.setText("November");

                break;
            case 11:
                debugText.setText("December");

                break;
            }

        }

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

        }
    });

}

1 个答案:

答案 0 :(得分:1)

事实上,DatePicker是最简单的方法,你如何计算闰年来显示2月份的额外日期?但如果你坚持使用Spinners,我就会这样做:

  1. 首次显示视图时,请禁用daySpinner,并填充monthSpinner并将选择设置为空。
  2. 在monthSpinner的OnItemSelected侦听器中,一旦将其更改为月份,启用daySpinner并根据所选月份,使用正确的ArrayAdapter天数填充daySpinner(例如,您将有4个阵列,第1天到第28天,1到29,1到30,1到31)并将适配器设置为daySpinner。
  3. 当用户更改monthSpinner选择时,您必须再次重建daySpinner。
  4. 最后,当单击“确定”按钮时,只需从微调器中选择月份和日期。