zoukankan      html  css  js  c++  java
  • 选择开始结束日期的view

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    
    import android.app.DatePickerDialog;
    import android.content.Context;
    import android.util.AttributeSet;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.Button;
    import android.widget.DatePicker;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import com.bjjw.cjgc.R;
    
    public class SelectDateView extends LinearLayout {
        public interface OnButtonClickListener {
            /**
             * @param startDate        开始日期
             * @param endDate        结束日期
             */
            public void onOKClick(String startDate, String endDate);
            public void onCancelClick();
        }
        
        public interface OnStartDateClickListener {
            public void onStartDateClick();
        }
        
        public interface OnEndDateClickListener {
            public void onEndDateClick();
        }
        
        private OnButtonClickListener buttonClickListener = null;
        private OnStartDateClickListener onStartDateClickListener = null;
        private OnEndDateClickListener onEndDateClickListener = null;
        
        private Context context;
        
        private TextView selectDate;
        private TextView selectDateEnd;
        private Button commit;
        private Button cancel;
        // private int selectYear;
        // private int selectMonth;
        // private int selectDay;
        private DatePickerDialog datePicker;
        private DatePickerDialog datePickerEnd;
    
        private Date dateE;
        private Date dateS;
        private Date now;
        private Calendar calendar;
        private SimpleDateFormat sdf;
    
        private String startDate;
        private String endDate;
    
        private DatePickerDialog.OnDateSetListener listener = new DatePickerDialog.OnDateSetListener() {
    
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear,
                    int dayOfMonth) {
                // selectYear = year;
                // selectMonth = monthOfYear;
                // selectDay = dayOfMonth;
    
                dateS.setYear(year - 1900);
                dateS.setMonth(monthOfYear);
                dateS.setDate(dayOfMonth);
    
    //            startDate = getDateString(year, monthOfYear, dayOfMonth);
    //            selectDate.setText(startDate);
                
                calendar.set(year, monthOfYear, dayOfMonth);
                Date date = calendar.getTime();
    
                selectDate.setText(sdf.format(date));
                
                startDate = sdf.format(date);
            }
        };
    
        private DatePickerDialog.OnDateSetListener listenerEnd = new DatePickerDialog.OnDateSetListener() {
    
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear,
                    int dayOfMonth) {
                // selectYear = year;
                // selectMonth = monthOfYear;
                // selectDay = dayOfMonth;
    
                dateE.setYear(year - 1900);
                dateE.setMonth(monthOfYear);
                dateE.setDate(dayOfMonth);
                
                calendar.set(year, monthOfYear, dayOfMonth);
                Date date = calendar.getTime();
    
                selectDateEnd.setText(sdf.format(date));
    
                calendar.add(Calendar.DAY_OF_YEAR, 1);
                date = calendar.getTime();
                endDate = sdf.format(date);
            }
        };
    
        public SelectDateView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            init(context);
        }
    
        public SelectDateView(Context context, AttributeSet attrs) {
            super(context, attrs);
            init(context);
        }
    
        public SelectDateView(Context context) {
            super(context);
            init(context);
        }
    
        private void init(Context context) {
            this.context = context;
            View contentView = LayoutInflater.from(context).inflate(R.layout.select_date_view, this);
    
            selectDate = (TextView) contentView.findViewById(R.id.date);
            selectDateEnd = (TextView) contentView.findViewById(R.id.date_end);
            commit = (Button) contentView.findViewById(R.id.commit);
            cancel = (Button) contentView.findViewById(R.id.cancel);
    
            dateE = new Date();
            dateS = new Date();
            calendar = Calendar.getInstance();
            now = calendar.getTime();
            sdf = new SimpleDateFormat("yyyy-MM-dd");
    
            int selectYear = calendar.get(Calendar.YEAR);
            int selectMonth = calendar.get(Calendar.MONTH);
            int selectDay = calendar.get(Calendar.DAY_OF_MONTH);
    
            datePicker = new DatePickerDialog(context, listener,
                    selectYear, selectMonth, selectDay);
            datePickerEnd = new DatePickerDialog(context, listenerEnd,
                    selectYear, selectMonth, selectDay);
    
            String btnText = sdf.format(now);
            endDate = btnText;
            startDate = btnText;
    
            selectDate.setText(btnText);
            selectDate.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    datePicker.show();
                    // 可以在下面的代码设置自定义的日期选择组件
    //                if (null != onStartDateClickListener) {
    //                    onStartDateClickListener.onStartDateClick();
    //                }
                }
            });
    
            selectDateEnd.setText(btnText);
            selectDateEnd.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    datePickerEnd.show();
                    // 可以在下面的代码设置自定义的日期选择组件
    //                if (null != onEndDateClickListener) {
    //                    onEndDateClickListener.onEndDateClick();
    //                }
                }
            });
    
            commit.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    errorSelect();
                }
            });
            
            cancel.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    if (null != buttonClickListener) {
                        buttonClickListener.onCancelClick();
                    }
                }
            });
        }
    
        private String getDateString(int year, int month, int day) {
            return year + "-" + (month + 1) + "-" + day;
        }
    
        /**
         * 2014-09-12
         * 2014-09-28
         * 判断日期选择是否正确
         */
        private void errorSelect() {
            String text = "";
            String startError = "开始时间请选择不超过结束时间的日期";
            String endError = "结束时间请选择不超过今天的日期";
    
            try {
                dateE = new SimpleDateFormat("yyyy-MM-dd").parse(selectDateEnd.getText().toString());
                dateS = new SimpleDateFormat("yyyy-MM-dd").parse(selectDate.getText().toString());
            } catch (ParseException e) {
                Toast.makeText(context, "日期格式不正确", Toast.LENGTH_LONG).show();
                return;
            }
            
            if (dateE.compareTo(now) > 0) {
    //            text = endError;
                text="";
            }
    
            if (dateS.compareTo(dateE) > 0) {
                if (!"".equals(text)) {
                    text += ", " + startError;
                } else {
                    text = startError;
                }
            }
    
            if (!"".equals(text)) {
                Toast.makeText(context, text, Toast.LENGTH_LONG).show();
            } else {
                if (null != buttonClickListener) {
                    buttonClickListener.onOKClick(selectDate.getText().toString(), selectDateEnd.getText().toString());
                }
            }
        }
        
        public TextView getSelectDate() {
            return selectDate;
        }
    
        public TextView getSelectDateEnd() {
            return selectDateEnd;
        }
    
        public void setOnButtonClickListener(OnButtonClickListener buttonClickListener) {
            this.buttonClickListener = buttonClickListener;
        }
    
        public void setOnStartDateClickListener(
                OnStartDateClickListener onStartDateClickListener) {
            this.onStartDateClickListener = onStartDateClickListener;
        }
    
        public void setOnEndDateClickListener(
                OnEndDateClickListener onEndDateClickListener) {
            this.onEndDateClickListener = onEndDateClickListener;
        }
    }
  • 相关阅读:
    海居住证我们不得不说的实情![转]
    SQL Server 日期和时间函数
    RESTORE DATABASE命令还原SQLServer 2005 数据库
    asp.net 部署数据库、开始菜单、桌面快捷方式实例(下)
    Server Application Unavailable asp.net 解决办法
    半个月,除了上班时间,而其他时间都不上网,你可以吗?(网络的郁闷)
    唐朝疆域地图[中亚势力范围(公元660年
    偶的偶像 陈松伶写真集
    Sql Server 行转列学习 根据学生表、课程表、学生成绩表统计每个学生的各科成绩和他的总成绩、平均成绩
    DIV+CSS 布局一行两列,左列固定宽度,右列自适应宽度;设置最小宽度,窗口小的时候显示滚动条.
  • 原文地址:https://www.cnblogs.com/chenlong-50954265/p/4998279.html
Copyright © 2011-2022 走看看