2

ユーザーに生年月日と生年月日を尋ねるAndroidアプリを作成しています。私は 2 つのスピナーを使用しています (1 つは月用、もう 1 つは月の日用)。月に基づいて日のスピナーを変更する必要があります。たとえば、2 月は 29 日なので、日のスピナーを 29 で停止させたいと考えています。 with 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

        }
    });

}
4

1 に答える 1

1

本当にDatePickerはこれを行う最も簡単な方法ですが、2月に余分な日を表示するために、うるう年を他にどのように説明しますか?しかし、あなたがスピナーを主張するなら、これが私がそれをする方法です:

  1. ビューが最初に表示されたら、daySpinnerを無効にし、monthSpinnerにデータを入力して、選択を何も設定しません。
  2. monthSpinnerのOnItemSelectedリスナーで、月に変更したら、daySpinnerを有効にし、選択した月に基づいて、daySpinnerに正しい日数のArrayAdapterを入力します(たとえば、1日目から28日目、1日目から29日目までの4つの配列があります。 1〜30、1〜31)、アダプターをdaySpinnerに設定します。
  3. ユーザーがmonthSpinnerの選択を変更した場合、daySpinnerを再構築する必要があります。

最後に、[OK]ボタンをクリックしたら、スピナーから月と日を選択します。

于 2012-07-16T01:32:36.853 に答える