2012-07-15 82 views
2

我正在創建一個android應用程序,詢問用戶他們的出生日期和出生月份。我使用兩個紡紗工(一個月和一個月的日子)。 我希望微調的日子根據月份變化,例如 例如2月有29天,所以我希望一天的微調停在數字29.但是我希望一天的微調高達31選擇31天的月份。Android微調添加/刪除條目

這樣做的最好方法是什麼?我知道我可以使用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

真正的DatePicker的是要做到這一點最簡單的方法,你會怎麼回事佔閏年顯示上月的額外的一天?但是,如果你堅持使用Spinners,我會這樣做:

  1. 當第一次顯示視圖時,禁用daySpinner並填充monthSpinner並將選擇設置爲空。
  2. 在monthSpinner的OnItemSelected偵聽器中,一旦將其更改爲一個月,啓用daySpinner並根據所選的月份,使用正確的ArrayAdapter填充daySpinner(例如,您將有4個數組,第1到28天,1至29,1至30,1至31),並將適配器設置爲daySpinner。
  3. 當用戶更改monthSpinner選擇時,您必須重新生成daySpinner。

最後,點擊確定按鈕後,從旋轉器中選擇月份和日期。

+0

謝謝,這就是我現在正在做的。 – Steven 2012-07-16 23:31:40

+0

哦,還試圖使用DatePicker,有什麼方法可以重新調整它的大小嗎? – Steven 2012-07-16 23:32:17

+0

我查看了Date或TimePicker的drawables,它們的設計非常適合填滿整個屏幕。即Google調整了 - ,+和editbox drawable的寬度,所以如果它們水平排列,它們幾乎會填滿屏幕的寬度。 – azgolfer 2012-07-17 00:39:10