You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

95 lines
3.4 KiB

package com.henninghall.date_picker;
import android.view.View;
import android.view.ViewManager;
import android.widget.RelativeLayout;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.uimanager.events.RCTEventEmitter;
import com.henninghall.date_picker.wheels.AmPmWheel;
import com.henninghall.date_picker.wheels.DayWheel;
import com.henninghall.date_picker.wheels.HourWheel;
import com.henninghall.date_picker.wheels.MinutesWheel;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import cn.carbswang.android.numberpickerview.library.NumberPickerView;
public class PickerView extends RelativeLayout {
private SimpleDateFormat dateFormat;
private HourWheel hourWheel;
private DayWheel dayWheel;
private MinutesWheel minutesWheel;
private AmPmWheel ampmWheel;
public PickerView() {
super(DatePickerManager.context);
View rootView = inflate(getContext(), R.layout.datepicker_view, this);
Locale locale = android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP ? Locale.forLanguageTag("en") : Locale.getDefault();
NumberPickerView hourPicker = (NumberPickerView) rootView.findViewById(R.id.hour);
hourWheel = new HourWheel(hourPicker, onWheelChangeListener, locale);
NumberPickerView dayPicker= (NumberPickerView) rootView.findViewById(R.id.day);
dayWheel = new DayWheel(dayPicker, onWheelChangeListener, locale);
NumberPickerView minutePicker = (NumberPickerView) rootView.findViewById(R.id.minutes);
minutesWheel = new MinutesWheel(minutePicker, onWheelChangeListener, locale);
NumberPickerView ampmPicker = (NumberPickerView) rootView.findViewById(R.id.ampm);
ampmWheel = new AmPmWheel(ampmPicker, onWheelChangeListener, locale);
dateFormat = new SimpleDateFormat(getDateFormatTemplate(), locale);
((ViewManager) ampmPicker.getParent()).removeView(ampmPicker);
}
WheelChangeListener onWheelChangeListener = new WheelChangeListener(){
@Override
public void onChange() {
WritableMap event = Arguments.createMap();
try {
Date date = dateFormat.parse(getDateString());
event.putDouble("date", date.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
DatePickerManager.context.getJSModule(RCTEventEmitter.class).receiveEvent(getId(), "dateChange", event);
}
};
private String getDateFormatTemplate() {
return dayWheel.getFormatTemplate() + " "
+ hourWheel.getFormatTemplate() + " "
+ minutesWheel.getFormatTemplate() + " "
+ ampmWheel.getFormatTemplate();
}
private String getDateString() {
return dayWheel.getValue()
+ " " + hourWheel.getValue()
+ " " + minutesWheel.getValue()
+ " " + ampmWheel.getValue();
}
public void setDate(Date date) {
dayWheel.setValue(date);
hourWheel.setValue(date);
minutesWheel.setValue(date);
ampmWheel.setValue(date);
}
public void setLocale(Locale locale) {
dayWheel.setLocale(locale);
hourWheel.setLocale(locale);
minutesWheel.setLocale(locale);
ampmWheel.setLocale(locale);
}
}