package com.snail.travellingTrail.newTravel.controller; import java.lang.reflect.Array; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import com.snail.travellingTrail.R; import com.snail.travellingTrail.common.views.WheelView; import com.snail.travellingTrail.common.views.WheelView.OnWheelViewListener; import com.snail.travellingTrail.common.wizard.ui.PageFragmentCallbacks; import com.snail.travellingTrail.newTravel.model.ChooseStartDatePage; import com.snail.travellingTrail.newTravel.model.StartDate; import com.snail.travellingTrail.slidingmenu.view.ScrollerNumberPicker; import com.snail.travellingTrail.slidingmenu.view.ScrollerNumberPicker.OnSelectListener; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; public class ChooseStartDateFragment extends Fragment {//implements OnSelectListener { private static final String ARG_KEY = "ChooseStartDatePage"; private static final int YEAR = 0; private static final int MONTH = 1; private static final int DAY = 3; private PageFragmentCallbacks mCallbacks; private String mKey; private ChooseStartDatePage mPage; private WheelView mYearView, mMonthView, mDayView; String year, month, day; ArrayList<String> yearList, monthList, dayList; public static ChooseStartDateFragment create(String key) { Bundle args = new Bundle(); args.putString(ARG_KEY, key); ChooseStartDateFragment fragment = new ChooseStartDateFragment(); fragment.setArguments(args); return fragment; } public ChooseStartDateFragment() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle args = getArguments(); mKey = args.getString(ARG_KEY); mPage = (ChooseStartDatePage) mCallbacks.onGetPage(mKey); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_new_travel_choose_date, container, false); ((TextView) rootView.findViewById(android.R.id.title)).setText(mPage.getTitle()); mYearView = ((WheelView) rootView.findViewById(R.id.frag_choose_start_date_wv_year)); mMonthView = ((WheelView) rootView.findViewById(R.id.frag_choose_start_date_wv_month)); mDayView = ((WheelView) rootView.findViewById(R.id.frag_choose_start_date_wv_day)); setPickerData(); return rootView; } @Override public void onAttach(Activity activity) { super.onAttach(activity); if (!(activity instanceof PageFragmentCallbacks)) { throw new ClassCastException("Activity must implement PageFragmentCallbacks"); } mCallbacks = (PageFragmentCallbacks) activity; } @Override public void onDetach() { super.onDetach(); mCallbacks = null; } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); // mYearView.setOnSelectListener(this); // mMonthView.setOnSelectListener(this); // mDayView.setOnSelectListener(this); // mPage.getData().putString(ChooseStartDatePage.START_DATE_DATA_KEY, // mYearView.getSeletedItem() + "-" + mMonthView.getSeletedItem() // + "-" + mDayView.getSeletedItem()); // mPage.notifyDataChanged(); } @Override public void setMenuVisibility(boolean menuVisible) { super.setMenuVisibility(menuVisible); } // // @Override // public void endSelect(int viewId, int id, String text) // { // switch (viewId) { // case R.id.frag_choose_start_date_np_year: // if(isLeapYear(Integer.valueOf(text))){ // if(StartDate.Month.equals("2")){ // mDayView.setData(getData(DAY, 1)); // mDayView.setDefault(6); // }else{ // setDefultDay(StartDate.Month); // } // }else{ // if(StartDate.Month.equals("2")){ // mDayView.setData(getData(DAY, 0)); // mDayView.setDefault(6); // }else{ // setDefultDay(StartDate.Month); // } // } // StartDate.Year = text; // break; // case R.id.frag_choose_start_date_np_month: // if(isLeapYear(Integer.valueOf(StartDate.Year))){ // if(text.equals("2")){ // mDayView.setData(getData(DAY, 1)); // mDayView.setDefault(6); // }else{ // setDefultDay(text); // } // }else{ // if(text.equals("2")){ // mDayView.setData(getData(DAY, 0)); // mDayView.setDefault(6); // }else{ // setDefultDay(text); // } // } // StartDate.Month = text; // break; // case R.id.frag_choose_start_date_np_day: // StartDate.Day = mDayView.getSelectedText(); // break; // default: // break; // } // StartDate.Year = mYearView.getSelectedText(); // StartDate.Month = mMonthView.getSelectedText(); // StartDate.Day = mDayView.getSelectedText(); // Message msg = new Message(); // handler.sendMessage(msg); // } // // // @Override // public void selecting(int viewId, int id, String text) // { // // TODO Auto-generated method stub // // } // // private void setPickerData(){ // mYearView.setData(getData(YEAR, 0)); // mMonthView.setData(getData(MONTH, 0)); // mDayView.setData(getData(DAY, 3)); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("y"); year = simpleDateFormat.format(new java.util.Date()); simpleDateFormat = new SimpleDateFormat("M"); month = simpleDateFormat.format(new java.util.Date()); simpleDateFormat = new SimpleDateFormat("d"); day = simpleDateFormat.format(new java.util.Date()); yearList = new ArrayList<String>(); monthList = new ArrayList<String>(); dayList = new ArrayList<String>(); setListener(); setYears(month); setMonths(month, day); setDays(year, month); Message msg = new Message(); handler.sendMessage(msg); // mYearView.setItems(yearList); // mMonthView.setItems(monthList); // mDayView.setItems(dayList); // mYearView.setDefault(1); // mMonthView.setDefault(Integer.parseInt(month)-1); // mDayView.setDefault(Integer.parseInt(day)-1); } Handler handler = new Handler() { @Override public void handleMessage(Message msg) { mPage.getData().putString(ChooseStartDatePage.START_DATE_DATA_KEY, mYearView.getSeletedItem() + "-" + mMonthView.getSeletedItem() + "-" + mDayView.getSeletedItem()); mPage.notifyDataChanged(); } }; private void setListener() { mYearView.setOnWheelViewListener(new OnWheelViewListener(){ @Override public void onSelected(int selectedIndex, String item) { super.onSelected(selectedIndex, item); if (mMonthView.getSeletedItem().equals("2")) { setDays(item, "2"); } Message msg = new Message(); handler.sendMessage(msg); } }); mMonthView.setOnWheelViewListener(new OnWheelViewListener(){ @Override public void onSelected(int selectedIndex, String item) { super.onSelected(selectedIndex, item); setDays(mYearView.getSeletedItem(), item); Message msg = new Message(); handler.sendMessage(msg); } }); mDayView.setOnWheelViewListener(new OnWheelViewListener(){ @Override public void onSelected(int selectedIndex, String item) { super.onSelected(selectedIndex, item); Message msg = new Message(); handler.sendMessage(msg); } }); } private void setYears(String month) { yearList.removeAll(yearList); if (month.equals("12") && (Integer.valueOf(day) > 20 && Integer.valueOf(day) <= 31)) //若当前日期在12月21日到31日之间,则年份可为今年或明年 { yearList.add(year); yearList.add(String.valueOf((Integer.valueOf(year) + 1))); mYearView.setSeletion(0); } else if (month.equals("1") && (Integer.valueOf(day) >= 1 && Integer.valueOf(day) <= 10)) { //若当前日期在1月1日到10日之间,则年份可为今年或去年 yearList.add(String.valueOf((Integer.valueOf(year) - 1))); yearList.add(year); mYearView.setSeletion(1); } else { yearList.add(year); } mYearView.setItems(yearList); } private void setMonths(String month, String day) { for (int i = 1; i <= 12; i++) { monthList.add(String.valueOf(i)); } mMonthView.setItems(monthList); mMonthView.setSeletion(monthList.indexOf(month)); } private void setDays(String year, String month) { int monthInt = Integer.valueOf(month); int yearInt = Integer.valueOf(year); if (monthInt == 2) { if (isLeapYear(yearInt)) { setDays29(); } else { setDays28(); } } else if (monthInt == 4 || monthInt == 6 || monthInt == 9 || monthInt == 11) { setDays30(); } else { setDays31(); } mDayView.setItems(dayList); mDayView.setSeletion( (dayList.indexOf(day) == -1)? 0 : dayList.indexOf(day)); } private void setDays31() { dayList.removeAll(dayList); for (int i = 1; i <= 31; i++) { dayList.add(String.valueOf(i)); } } private void setDays30() { dayList.removeAll(dayList); for (int i = 1; i <= 30; i++) { dayList.add(String.valueOf(i)); } } private void setDays29() { dayList.removeAll(dayList); for (int i = 1; i <= 29; i++) { dayList.add(String.valueOf(i)); } } private void setDays28() { dayList.removeAll(dayList); for (int i = 1; i <= 28; i++) { dayList.add(String.valueOf(i)); } } /** * 判断是否闰年 * @param year * @return */ public boolean isLeapYear(int year){ return (year%4==0&&year%100!=0)||year%400==0; } // // // private void setDefultDay(String text){ // if(text.equals("4")||text.equals("6")||text.equals("9")||text.equals("11")){ // mDayView.setData(getData(DAY, 2)); // }else{ // mDayView.setData(getData(DAY, 3)); // } // mDayView.setDefault(0); // } // // // private ArrayList<String> getData(int data,int day){ // SimpleDateFormat simpleDateFormat; // // ArrayList<String> datas = new ArrayList<String>(); // switch (data) { // case YEAR: // simpleDateFormat = new SimpleDateFormat("yyyy"); // String year = simpleDateFormat.format(new java.util.Date()); // for (int i = 0; i < 2; i++) { // datas.add(String.valueOf(Integer.parseInt(year) -1 + i)); // } // break; // case MONTH: // for (int i = 0; i < 12; i++) { // datas.add(String.valueOf(1+i)); // } // break; // case DAY: // switch (day) { // case 0: // for (int i = 0; i < 28; i++) { // datas.add(String.valueOf(1+i)); // } // break; // case 1: // for (int i = 0; i < 29; i++) { // datas.add(String.valueOf(1+i)); // } // break; // case 2: // for (int i = 0; i < 30; i++) { // datas.add(String.valueOf(1+i)); // } // break; // case 3: // for (int i = 0; i < 31; i++) { // datas.add(String.valueOf(1+i)); // } // break; // // default: // break; // } // break; // // default: // break; // } // return datas; // } }