2017-07-04 6 views
0

Was ich will ist, wenn ich "Today" oder "Tomorrow" auf Spinner wählen, um es in date format in editText anzuzeigen. "Pick a date" funktioniert, aber ich kann Datum nur einmal wählen, also brauche ich das auch behoben. Hier ist der Code:Einstellung Datum mit Spinner - Android

package com.example.android.myapplication; 

import android.app.DatePickerDialog; 
import android.graphics.Color; 
import android.graphics.drawable.ColorDrawable; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.DatePicker; 
import android.widget.EditText; 
import android.widget.Spinner; 
import android.widget.TextView; 

import java.util.Calendar; 

public class MainActivity extends AppCompatActivity { 
Spinner spinner; 
ArrayAdapter<CharSequence> adapter; 

private static final String TAG = "MainActivity"; 

private EditText editText; 
private DatePickerDialog.OnDateSetListener mDateSetListener; 

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

    editText = (EditText) findViewById(R.id.editText); 

    spinner = (Spinner) findViewById(R.id.spinner); 
    adapter = (ArrayAdapter.createFromResource(this, R.array.dates, android.R.layout.simple_spinner_item)); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(adapter); 
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

      switch (spinner.getSelectedItem().toString()) { 
       case "Pick a date": 
        Calendar cal = Calendar.getInstance(); 
        int year = cal.get(Calendar.YEAR); 
        int month = cal.get(Calendar.MONTH); 
        int day = cal.get(Calendar.DAY_OF_MONTH); 

        DatePickerDialog dialog = new DatePickerDialog(
          MainActivity.this, 
          android.R.style.Theme_Holo_Light_Dialog_MinWidth, 
          mDateSetListener, 
          year,month,day); 
        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
        dialog.show(); 

       case "Today": 
        //set today's date 
       case "Tomorrow": 
        //set tomorrow's date 
      } 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 

     } 
    }); 

    mDateSetListener = new DatePickerDialog.OnDateSetListener() { 
     @Override 
     public void onDateSet(DatePicker datePicker, int year, int month, int day) { 
      month = month + 1; 
      Log.d(TAG, "onDateSet: mm/dd/yyy: " + month + "/" + day + "/" + year); 

      String date = month + "/" + day + "/" + year; 
      editText.setText(date); 
     } 
    }; 

} 
+0

können Sie Ihren vollständigen Code teilen? – sumit

+0

@sumit sicher kann ich teilen – Mayketi

Antwort

0

ich, wenn für "Today" tun verwaltet, aber ich brauche Hilfe für morgen ..

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

     Calendar cal = Calendar.getInstance(); 
     int year = cal.get(Calendar.YEAR); 
     int month = cal.get(Calendar.MONTH); 
     int day = cal.get(Calendar.DAY_OF_MONTH); 

     SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 
     String formattedDate = df.format(cal.getTime()); 


     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

      switch (spinner.getSelectedItem().toString()) { 
       case "Pick a date": 

        DatePickerDialog dialog = new DatePickerDialog(
          MainActivity.this, 
          android.R.style.Theme_Holo_Light_Dialog_MinWidth, 
          mDateSetListener, 
          year,month,day); 

        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
        dialog.show(); 

       case "Today": 
        editText.setText(formattedDate); 
       case "Tomorrow": 

      } 
     } 
+0

Hallo Mayketi, was ist das Problem, das Sie bei der Einstellung von morgen Datum konfrontiert.Auch können Sie teilen Sie Ihre Array Sie bevölkern Ihre Spinner mit ?? – sumit

0

für morgen nur diese eine einfache Sache ändern:

case "Tomorrow": 
     Calendar cal = Calendar.getInstance(); 
     cal.add(Calendar.DAY_OF_MONTH,1); 
     int year = cal.get(Calendar.YEAR); 
     int month = cal.get(Calendar.MONTH); 
     int day = cal.get(Calendar.DAY_OF_MONTH); 

     SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 
     String formattedDate = df.format(cal.getTime()); 

     editText.setText(formattedDate); 

Hoffnung es hilft!!!