diff --git a/.idea/misc.xml b/.idea/misc.xml
index 13bc9ef..1416b2c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -28,7 +28,9 @@
+
+
@@ -60,7 +62,12 @@
+
+
+
+
+
@@ -80,7 +87,9 @@
+
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 13bc9ef..1416b2c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -28,7 +28,9 @@
+
+
@@ -60,7 +62,12 @@
+
+
+
+
+
@@ -80,7 +87,9 @@
+
+
diff --git a/app/build.gradle b/app/build.gradle
index a4ee6d9..2e1bb36 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -109,7 +109,6 @@
implementation 'com.amap.api:location:5.3.1'
//经纬度逆编码
implementation 'com.amap.api:search:8.1.0'
- implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
//桌面角标
implementation "me.leolin:ShortcutBadger:1.1.22@aar"
}
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 13bc9ef..1416b2c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -28,7 +28,9 @@
+
+
@@ -60,7 +62,12 @@
+
+
+
+
+
@@ -80,7 +87,9 @@
+
+
diff --git a/app/build.gradle b/app/build.gradle
index a4ee6d9..2e1bb36 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -109,7 +109,6 @@
implementation 'com.amap.api:location:5.3.1'
//经纬度逆编码
implementation 'com.amap.api:search:8.1.0'
- implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
//桌面角标
implementation "me.leolin:ShortcutBadger:1.1.22@aar"
}
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
index 4a0b2bb..00f69ae 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
@@ -16,11 +16,11 @@
import com.casic.dcms.databinding.ActivityCleanRecordsBinding;
import com.casic.dcms.mvvm.model.CleanRecordBean;
import com.casic.dcms.mvvm.vm.ToiletViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
import com.casic.dcms.utils.StringHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -41,14 +41,8 @@
private RecordListAdapter adapter;
private WeakReferenceHandler weakReferenceHandler;
private int pageIndex = 1;
- private String start;
- private String end;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -63,7 +57,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class);
- toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex);
+ }
+
+ @Override
+ protected void onResume() {
+ obtainCleanRecordList("", "");
+ super.onResume();
}
@Override
@@ -71,23 +70,26 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(CleaningRecordsActivity.this, CalendarUtil.obtainLastTwoMonth(), view)
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
-
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
- obtainCleanRecordList();
+ obtainCleanRecordList(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +98,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +106,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
@@ -146,7 +148,7 @@
});
}
- private void obtainCleanRecordList() {
+ private void obtainCleanRecordList(String start, String end) {
toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex);
}
@@ -161,7 +163,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
} else {
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 13bc9ef..1416b2c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -28,7 +28,9 @@
+
+
@@ -60,7 +62,12 @@
+
+
+
+
+
@@ -80,7 +87,9 @@
+
+
diff --git a/app/build.gradle b/app/build.gradle
index a4ee6d9..2e1bb36 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -109,7 +109,6 @@
implementation 'com.amap.api:location:5.3.1'
//经纬度逆编码
implementation 'com.amap.api:search:8.1.0'
- implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
//桌面角标
implementation "me.leolin:ShortcutBadger:1.1.22@aar"
}
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
index 4a0b2bb..00f69ae 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
@@ -16,11 +16,11 @@
import com.casic.dcms.databinding.ActivityCleanRecordsBinding;
import com.casic.dcms.mvvm.model.CleanRecordBean;
import com.casic.dcms.mvvm.vm.ToiletViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
import com.casic.dcms.utils.StringHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -41,14 +41,8 @@
private RecordListAdapter adapter;
private WeakReferenceHandler weakReferenceHandler;
private int pageIndex = 1;
- private String start;
- private String end;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -63,7 +57,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class);
- toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex);
+ }
+
+ @Override
+ protected void onResume() {
+ obtainCleanRecordList("", "");
+ super.onResume();
}
@Override
@@ -71,23 +70,26 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(CleaningRecordsActivity.this, CalendarUtil.obtainLastTwoMonth(), view)
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
-
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
- obtainCleanRecordList();
+ obtainCleanRecordList(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +98,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +106,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
@@ -146,7 +148,7 @@
});
}
- private void obtainCleanRecordList() {
+ private void obtainCleanRecordList(String start, String end) {
toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex);
}
@@ -161,7 +163,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
index aa0d7a9..8741e2f 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
@@ -14,10 +14,10 @@
import com.casic.dcms.databinding.ActivityMaintainRecordBinding;
import com.casic.dcms.mvvm.model.MaintainRecordBean;
import com.casic.dcms.mvvm.vm.BridgeViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -37,15 +37,9 @@
private List dataBeans = new ArrayList<>();
private WeakReferenceHandler weakReferenceHandler;
private MaintainRecordAdapter adapter;
- private String start;
- private String end;
private int pageIndex = 1;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -60,8 +54,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class);
+ }
- obtainMaintainRecord();
+ @Override
+ protected void onResume() {
+ obtainMaintainRecord("", "");
+ super.onResume();
}
@Override
@@ -69,25 +67,28 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), view) //初始化
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
- //点击完成按钮后回调返回方法
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +97,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +105,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
@@ -145,7 +146,7 @@
});
}
- private void obtainMaintainRecord() {
+ private void obtainMaintainRecord(String start, String end) {
bridgeViewModel.obtainMaintainRecord(start, end, pageIndex);
}
@@ -160,7 +161,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
} else {
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 13bc9ef..1416b2c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -28,7 +28,9 @@
+
+
@@ -60,7 +62,12 @@
+
+
+
+
+
@@ -80,7 +87,9 @@
+
+
diff --git a/app/build.gradle b/app/build.gradle
index a4ee6d9..2e1bb36 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -109,7 +109,6 @@
implementation 'com.amap.api:location:5.3.1'
//经纬度逆编码
implementation 'com.amap.api:search:8.1.0'
- implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
//桌面角标
implementation "me.leolin:ShortcutBadger:1.1.22@aar"
}
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
index 4a0b2bb..00f69ae 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
@@ -16,11 +16,11 @@
import com.casic.dcms.databinding.ActivityCleanRecordsBinding;
import com.casic.dcms.mvvm.model.CleanRecordBean;
import com.casic.dcms.mvvm.vm.ToiletViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
import com.casic.dcms.utils.StringHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -41,14 +41,8 @@
private RecordListAdapter adapter;
private WeakReferenceHandler weakReferenceHandler;
private int pageIndex = 1;
- private String start;
- private String end;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -63,7 +57,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class);
- toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex);
+ }
+
+ @Override
+ protected void onResume() {
+ obtainCleanRecordList("", "");
+ super.onResume();
}
@Override
@@ -71,23 +70,26 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(CleaningRecordsActivity.this, CalendarUtil.obtainLastTwoMonth(), view)
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
-
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
- obtainCleanRecordList();
+ obtainCleanRecordList(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +98,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +106,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
@@ -146,7 +148,7 @@
});
}
- private void obtainCleanRecordList() {
+ private void obtainCleanRecordList(String start, String end) {
toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex);
}
@@ -161,7 +163,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
index aa0d7a9..8741e2f 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
@@ -14,10 +14,10 @@
import com.casic.dcms.databinding.ActivityMaintainRecordBinding;
import com.casic.dcms.mvvm.model.MaintainRecordBean;
import com.casic.dcms.mvvm.vm.BridgeViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -37,15 +37,9 @@
private List dataBeans = new ArrayList<>();
private WeakReferenceHandler weakReferenceHandler;
private MaintainRecordAdapter adapter;
- private String start;
- private String end;
private int pageIndex = 1;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -60,8 +54,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class);
+ }
- obtainMaintainRecord();
+ @Override
+ protected void onResume() {
+ obtainMaintainRecord("", "");
+ super.onResume();
}
@Override
@@ -69,25 +67,28 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), view) //初始化
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
- //点击完成按钮后回调返回方法
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +97,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +105,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
@@ -145,7 +146,7 @@
});
}
- private void obtainMaintainRecord() {
+ private void obtainMaintainRecord(String start, String end) {
bridgeViewModel.obtainMaintainRecord(start, end, pageIndex);
}
@@ -160,7 +161,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
new file mode 100644
index 0000000..397a389
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
@@ -0,0 +1,220 @@
+package com.casic.dcms.widgets;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import androidx.fragment.app.FragmentManager;
+
+import com.casic.dcms.R;
+import com.casic.dcms.utils.LocaleConstant;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.utils.ColorUtil;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
+import com.pengxh.androidx.lite.utils.TimeOrDateUtil;
+import com.pengxh.androidx.lite.widget.EasyToast;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+public class DateSelectDialog extends Dialog {
+
+ private final Context ctx;
+ private final String title;
+ private final String negativeBtn;
+ private final String positiveBtn;
+ private final OnDialogButtonClickListener listener;
+ private final FragmentManager fragmentManager;
+ private final Type type;
+
+ private DateSelectDialog(Builder builder) {
+ super(builder.context);
+ this.ctx = builder.context;
+ this.title = builder.title;
+ this.negativeBtn = builder.negativeBtn;
+ this.positiveBtn = builder.positiveBtn;
+ this.listener = builder.listener;
+ this.fragmentManager = builder.fragmentManager;
+ this.type = builder.type;
+ }
+
+ public static class Builder {
+ private Context context;
+ private String title;
+ private String negativeBtn;
+ private String positiveBtn;
+ private OnDialogButtonClickListener listener;
+ private FragmentManager fragmentManager;
+ private Type type;
+
+ public Builder setContext(Context context) {
+ this.context = context;
+ return this;
+ }
+
+ public Builder setTitle(String title) {
+ this.title = title;
+ return this;
+ }
+
+ public Builder setNegativeButton(String name) {
+ this.negativeBtn = name;
+ return this;
+ }
+
+ public Builder setPositiveButton(String name) {
+ this.positiveBtn = name;
+ return this;
+ }
+
+ public Builder setOnDialogButtonClickListener(OnDialogButtonClickListener listener) {
+ this.listener = listener;
+ return this;
+ }
+
+ public Builder setFragmentManager(FragmentManager fragmentManager) {
+ this.fragmentManager = fragmentManager;
+ return this;
+ }
+
+ public Builder setCalendarType(Type calendarType) {
+ this.type = calendarType;
+ return this;
+ }
+
+ public DateSelectDialog build() {
+ return new DateSelectDialog(this);
+ }
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ DialogLayoutParam.resetParams(this, Gravity.CENTER, R.style.UserDefinedAnimation, 0.85);
+ setContentView(R.layout.dialog_select_date);
+ setCancelable(false);
+ setCanceledOnTouchOutside(false);
+
+
+ if (!TextUtils.isEmpty(title)) {
+ ((TextView) findViewById(R.id.dialogTitleView)).setText(title);
+ }
+
+ EditText startDateView = findViewById(R.id.startDateView);
+ startDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ startDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ EditText endDateView = findViewById(R.id.endDateView);
+ endDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ endDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ Button dialogCancelButton = findViewById(R.id.dialogCancelButton);
+ dialogCancelButton.setText(negativeBtn);
+ dialogCancelButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ listener.onCancelClick();
+ dismiss();
+ }
+ });
+
+ Button dialogConfirmButton = findViewById(R.id.dialogConfirmButton);
+ dialogConfirmButton.setText(positiveBtn);
+ dialogConfirmButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //判断其实时间和结束时间
+ String startDate = startDateView.getText().toString();
+ String endDate = endDateView.getText().toString();
+ if (isEarlierThanStart(startDate, endDate)) {
+ EasyToast.show(ctx, "结束时间不能早于开始时间");
+ return;
+ }
+ listener.onConfirmClick(startDate, endDate);
+ dismiss();
+ }
+ });
+ }
+
+ public interface OnDialogButtonClickListener {
+ void onConfirmClick(String startDate, String endDate);
+
+ void onCancelClick();
+ }
+
+ /**
+ * 判断时间是否早于当前时间
+ */
+ private boolean isEarlierThanStart(String start, String end) {
+ if (TextUtils.isEmpty(start) || TextUtils.isEmpty(end)) {
+ return false;
+ }
+ SimpleDateFormat dateFormat;
+ if (type == Type.ALL) {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
+ } else {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
+ }
+ try {
+ return dateFormat.parse(start).getTime() > dateFormat.parse(end).getTime();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 13bc9ef..1416b2c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -28,7 +28,9 @@
+
+
@@ -60,7 +62,12 @@
+
+
+
+
+
@@ -80,7 +87,9 @@
+
+
diff --git a/app/build.gradle b/app/build.gradle
index a4ee6d9..2e1bb36 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -109,7 +109,6 @@
implementation 'com.amap.api:location:5.3.1'
//经纬度逆编码
implementation 'com.amap.api:search:8.1.0'
- implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
//桌面角标
implementation "me.leolin:ShortcutBadger:1.1.22@aar"
}
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
index 4a0b2bb..00f69ae 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
@@ -16,11 +16,11 @@
import com.casic.dcms.databinding.ActivityCleanRecordsBinding;
import com.casic.dcms.mvvm.model.CleanRecordBean;
import com.casic.dcms.mvvm.vm.ToiletViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
import com.casic.dcms.utils.StringHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -41,14 +41,8 @@
private RecordListAdapter adapter;
private WeakReferenceHandler weakReferenceHandler;
private int pageIndex = 1;
- private String start;
- private String end;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -63,7 +57,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class);
- toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex);
+ }
+
+ @Override
+ protected void onResume() {
+ obtainCleanRecordList("", "");
+ super.onResume();
}
@Override
@@ -71,23 +70,26 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(CleaningRecordsActivity.this, CalendarUtil.obtainLastTwoMonth(), view)
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
-
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
- obtainCleanRecordList();
+ obtainCleanRecordList(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +98,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +106,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
@@ -146,7 +148,7 @@
});
}
- private void obtainCleanRecordList() {
+ private void obtainCleanRecordList(String start, String end) {
toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex);
}
@@ -161,7 +163,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
index aa0d7a9..8741e2f 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
@@ -14,10 +14,10 @@
import com.casic.dcms.databinding.ActivityMaintainRecordBinding;
import com.casic.dcms.mvvm.model.MaintainRecordBean;
import com.casic.dcms.mvvm.vm.BridgeViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -37,15 +37,9 @@
private List dataBeans = new ArrayList<>();
private WeakReferenceHandler weakReferenceHandler;
private MaintainRecordAdapter adapter;
- private String start;
- private String end;
private int pageIndex = 1;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -60,8 +54,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class);
+ }
- obtainMaintainRecord();
+ @Override
+ protected void onResume() {
+ obtainMaintainRecord("", "");
+ super.onResume();
}
@Override
@@ -69,25 +67,28 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), view) //初始化
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
- //点击完成按钮后回调返回方法
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +97,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +105,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
@@ -145,7 +146,7 @@
});
}
- private void obtainMaintainRecord() {
+ private void obtainMaintainRecord(String start, String end) {
bridgeViewModel.obtainMaintainRecord(start, end, pageIndex);
}
@@ -160,7 +161,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
new file mode 100644
index 0000000..397a389
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
@@ -0,0 +1,220 @@
+package com.casic.dcms.widgets;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import androidx.fragment.app.FragmentManager;
+
+import com.casic.dcms.R;
+import com.casic.dcms.utils.LocaleConstant;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.utils.ColorUtil;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
+import com.pengxh.androidx.lite.utils.TimeOrDateUtil;
+import com.pengxh.androidx.lite.widget.EasyToast;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+public class DateSelectDialog extends Dialog {
+
+ private final Context ctx;
+ private final String title;
+ private final String negativeBtn;
+ private final String positiveBtn;
+ private final OnDialogButtonClickListener listener;
+ private final FragmentManager fragmentManager;
+ private final Type type;
+
+ private DateSelectDialog(Builder builder) {
+ super(builder.context);
+ this.ctx = builder.context;
+ this.title = builder.title;
+ this.negativeBtn = builder.negativeBtn;
+ this.positiveBtn = builder.positiveBtn;
+ this.listener = builder.listener;
+ this.fragmentManager = builder.fragmentManager;
+ this.type = builder.type;
+ }
+
+ public static class Builder {
+ private Context context;
+ private String title;
+ private String negativeBtn;
+ private String positiveBtn;
+ private OnDialogButtonClickListener listener;
+ private FragmentManager fragmentManager;
+ private Type type;
+
+ public Builder setContext(Context context) {
+ this.context = context;
+ return this;
+ }
+
+ public Builder setTitle(String title) {
+ this.title = title;
+ return this;
+ }
+
+ public Builder setNegativeButton(String name) {
+ this.negativeBtn = name;
+ return this;
+ }
+
+ public Builder setPositiveButton(String name) {
+ this.positiveBtn = name;
+ return this;
+ }
+
+ public Builder setOnDialogButtonClickListener(OnDialogButtonClickListener listener) {
+ this.listener = listener;
+ return this;
+ }
+
+ public Builder setFragmentManager(FragmentManager fragmentManager) {
+ this.fragmentManager = fragmentManager;
+ return this;
+ }
+
+ public Builder setCalendarType(Type calendarType) {
+ this.type = calendarType;
+ return this;
+ }
+
+ public DateSelectDialog build() {
+ return new DateSelectDialog(this);
+ }
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ DialogLayoutParam.resetParams(this, Gravity.CENTER, R.style.UserDefinedAnimation, 0.85);
+ setContentView(R.layout.dialog_select_date);
+ setCancelable(false);
+ setCanceledOnTouchOutside(false);
+
+
+ if (!TextUtils.isEmpty(title)) {
+ ((TextView) findViewById(R.id.dialogTitleView)).setText(title);
+ }
+
+ EditText startDateView = findViewById(R.id.startDateView);
+ startDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ startDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ EditText endDateView = findViewById(R.id.endDateView);
+ endDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ endDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ Button dialogCancelButton = findViewById(R.id.dialogCancelButton);
+ dialogCancelButton.setText(negativeBtn);
+ dialogCancelButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ listener.onCancelClick();
+ dismiss();
+ }
+ });
+
+ Button dialogConfirmButton = findViewById(R.id.dialogConfirmButton);
+ dialogConfirmButton.setText(positiveBtn);
+ dialogConfirmButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //判断其实时间和结束时间
+ String startDate = startDateView.getText().toString();
+ String endDate = endDateView.getText().toString();
+ if (isEarlierThanStart(startDate, endDate)) {
+ EasyToast.show(ctx, "结束时间不能早于开始时间");
+ return;
+ }
+ listener.onConfirmClick(startDate, endDate);
+ dismiss();
+ }
+ });
+ }
+
+ public interface OnDialogButtonClickListener {
+ void onConfirmClick(String startDate, String endDate);
+
+ void onCancelClick();
+ }
+
+ /**
+ * 判断时间是否早于当前时间
+ */
+ private boolean isEarlierThanStart(String start, String end) {
+ if (TextUtils.isEmpty(start) || TextUtils.isEmpty(end)) {
+ return false;
+ }
+ SimpleDateFormat dateFormat;
+ if (type == Type.ALL) {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
+ } else {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
+ }
+ try {
+ return dateFormat.parse(start).getTime() > dateFormat.parse(end).getTime();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
index b4e5dcb..c814a2b 100644
--- a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
+++ b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
@@ -2,19 +2,15 @@
import android.app.Dialog;
import android.content.Context;
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
+import android.widget.Button;
import android.widget.TextView;
import com.casic.dcms.R;
-import com.casic.dcms.base.BaseApplication;
import com.casic.dcms.utils.TimeOrDateUtil;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
import java.util.Timer;
import java.util.TimerTask;
@@ -37,16 +33,7 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
- //手动设置dialog宽度
- Window window = getWindow();
- window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
- window.getDecorView().setBackgroundColor(Color.TRANSPARENT);
- WindowManager.LayoutParams params = window.getAttributes();
- params.width = QMUIDisplayHelper.dp2px(BaseApplication.getInstance(), 300);
- params.height = WindowManager.LayoutParams.WRAP_CONTENT;
- window.setAttributes(params);
-
+ DialogLayoutParam.resetParams(this, 0.85);
setContentView(R.layout.dialog_sign_in);
timer = new Timer();
initView();
@@ -69,8 +56,8 @@
if (!TextUtils.isEmpty(address)) {
signInPlaceView.setText(address);
}
- TextView signInView = findViewById(R.id.signInView);
- signInView.setOnClickListener(this);
+ Button signInButton = findViewById(R.id.signInButton);
+ signInButton.setOnClickListener(this);
}
@Override
@@ -84,7 +71,7 @@
@Override
public void onClick(View view) {
int i = view.getId();
- if (i == R.id.signInView) {
+ if (i == R.id.signInButton) {
if (listener != null) {
listener.onViewClick();
}
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 13bc9ef..1416b2c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -28,7 +28,9 @@
+
+
@@ -60,7 +62,12 @@
+
+
+
+
+
@@ -80,7 +87,9 @@
+
+
diff --git a/app/build.gradle b/app/build.gradle
index a4ee6d9..2e1bb36 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -109,7 +109,6 @@
implementation 'com.amap.api:location:5.3.1'
//经纬度逆编码
implementation 'com.amap.api:search:8.1.0'
- implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
//桌面角标
implementation "me.leolin:ShortcutBadger:1.1.22@aar"
}
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
index 4a0b2bb..00f69ae 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
@@ -16,11 +16,11 @@
import com.casic.dcms.databinding.ActivityCleanRecordsBinding;
import com.casic.dcms.mvvm.model.CleanRecordBean;
import com.casic.dcms.mvvm.vm.ToiletViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
import com.casic.dcms.utils.StringHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -41,14 +41,8 @@
private RecordListAdapter adapter;
private WeakReferenceHandler weakReferenceHandler;
private int pageIndex = 1;
- private String start;
- private String end;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -63,7 +57,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class);
- toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex);
+ }
+
+ @Override
+ protected void onResume() {
+ obtainCleanRecordList("", "");
+ super.onResume();
}
@Override
@@ -71,23 +70,26 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(CleaningRecordsActivity.this, CalendarUtil.obtainLastTwoMonth(), view)
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
-
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
- obtainCleanRecordList();
+ obtainCleanRecordList(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +98,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +106,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
@@ -146,7 +148,7 @@
});
}
- private void obtainCleanRecordList() {
+ private void obtainCleanRecordList(String start, String end) {
toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex);
}
@@ -161,7 +163,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
index aa0d7a9..8741e2f 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
@@ -14,10 +14,10 @@
import com.casic.dcms.databinding.ActivityMaintainRecordBinding;
import com.casic.dcms.mvvm.model.MaintainRecordBean;
import com.casic.dcms.mvvm.vm.BridgeViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -37,15 +37,9 @@
private List dataBeans = new ArrayList<>();
private WeakReferenceHandler weakReferenceHandler;
private MaintainRecordAdapter adapter;
- private String start;
- private String end;
private int pageIndex = 1;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -60,8 +54,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class);
+ }
- obtainMaintainRecord();
+ @Override
+ protected void onResume() {
+ obtainMaintainRecord("", "");
+ super.onResume();
}
@Override
@@ -69,25 +67,28 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), view) //初始化
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
- //点击完成按钮后回调返回方法
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +97,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +105,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
@@ -145,7 +146,7 @@
});
}
- private void obtainMaintainRecord() {
+ private void obtainMaintainRecord(String start, String end) {
bridgeViewModel.obtainMaintainRecord(start, end, pageIndex);
}
@@ -160,7 +161,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
new file mode 100644
index 0000000..397a389
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
@@ -0,0 +1,220 @@
+package com.casic.dcms.widgets;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import androidx.fragment.app.FragmentManager;
+
+import com.casic.dcms.R;
+import com.casic.dcms.utils.LocaleConstant;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.utils.ColorUtil;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
+import com.pengxh.androidx.lite.utils.TimeOrDateUtil;
+import com.pengxh.androidx.lite.widget.EasyToast;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+public class DateSelectDialog extends Dialog {
+
+ private final Context ctx;
+ private final String title;
+ private final String negativeBtn;
+ private final String positiveBtn;
+ private final OnDialogButtonClickListener listener;
+ private final FragmentManager fragmentManager;
+ private final Type type;
+
+ private DateSelectDialog(Builder builder) {
+ super(builder.context);
+ this.ctx = builder.context;
+ this.title = builder.title;
+ this.negativeBtn = builder.negativeBtn;
+ this.positiveBtn = builder.positiveBtn;
+ this.listener = builder.listener;
+ this.fragmentManager = builder.fragmentManager;
+ this.type = builder.type;
+ }
+
+ public static class Builder {
+ private Context context;
+ private String title;
+ private String negativeBtn;
+ private String positiveBtn;
+ private OnDialogButtonClickListener listener;
+ private FragmentManager fragmentManager;
+ private Type type;
+
+ public Builder setContext(Context context) {
+ this.context = context;
+ return this;
+ }
+
+ public Builder setTitle(String title) {
+ this.title = title;
+ return this;
+ }
+
+ public Builder setNegativeButton(String name) {
+ this.negativeBtn = name;
+ return this;
+ }
+
+ public Builder setPositiveButton(String name) {
+ this.positiveBtn = name;
+ return this;
+ }
+
+ public Builder setOnDialogButtonClickListener(OnDialogButtonClickListener listener) {
+ this.listener = listener;
+ return this;
+ }
+
+ public Builder setFragmentManager(FragmentManager fragmentManager) {
+ this.fragmentManager = fragmentManager;
+ return this;
+ }
+
+ public Builder setCalendarType(Type calendarType) {
+ this.type = calendarType;
+ return this;
+ }
+
+ public DateSelectDialog build() {
+ return new DateSelectDialog(this);
+ }
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ DialogLayoutParam.resetParams(this, Gravity.CENTER, R.style.UserDefinedAnimation, 0.85);
+ setContentView(R.layout.dialog_select_date);
+ setCancelable(false);
+ setCanceledOnTouchOutside(false);
+
+
+ if (!TextUtils.isEmpty(title)) {
+ ((TextView) findViewById(R.id.dialogTitleView)).setText(title);
+ }
+
+ EditText startDateView = findViewById(R.id.startDateView);
+ startDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ startDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ EditText endDateView = findViewById(R.id.endDateView);
+ endDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ endDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ Button dialogCancelButton = findViewById(R.id.dialogCancelButton);
+ dialogCancelButton.setText(negativeBtn);
+ dialogCancelButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ listener.onCancelClick();
+ dismiss();
+ }
+ });
+
+ Button dialogConfirmButton = findViewById(R.id.dialogConfirmButton);
+ dialogConfirmButton.setText(positiveBtn);
+ dialogConfirmButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //判断其实时间和结束时间
+ String startDate = startDateView.getText().toString();
+ String endDate = endDateView.getText().toString();
+ if (isEarlierThanStart(startDate, endDate)) {
+ EasyToast.show(ctx, "结束时间不能早于开始时间");
+ return;
+ }
+ listener.onConfirmClick(startDate, endDate);
+ dismiss();
+ }
+ });
+ }
+
+ public interface OnDialogButtonClickListener {
+ void onConfirmClick(String startDate, String endDate);
+
+ void onCancelClick();
+ }
+
+ /**
+ * 判断时间是否早于当前时间
+ */
+ private boolean isEarlierThanStart(String start, String end) {
+ if (TextUtils.isEmpty(start) || TextUtils.isEmpty(end)) {
+ return false;
+ }
+ SimpleDateFormat dateFormat;
+ if (type == Type.ALL) {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
+ } else {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
+ }
+ try {
+ return dateFormat.parse(start).getTime() > dateFormat.parse(end).getTime();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
index b4e5dcb..c814a2b 100644
--- a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
+++ b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
@@ -2,19 +2,15 @@
import android.app.Dialog;
import android.content.Context;
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
+import android.widget.Button;
import android.widget.TextView;
import com.casic.dcms.R;
-import com.casic.dcms.base.BaseApplication;
import com.casic.dcms.utils.TimeOrDateUtil;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
import java.util.Timer;
import java.util.TimerTask;
@@ -37,16 +33,7 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
- //手动设置dialog宽度
- Window window = getWindow();
- window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
- window.getDecorView().setBackgroundColor(Color.TRANSPARENT);
- WindowManager.LayoutParams params = window.getAttributes();
- params.width = QMUIDisplayHelper.dp2px(BaseApplication.getInstance(), 300);
- params.height = WindowManager.LayoutParams.WRAP_CONTENT;
- window.setAttributes(params);
-
+ DialogLayoutParam.resetParams(this, 0.85);
setContentView(R.layout.dialog_sign_in);
timer = new Timer();
initView();
@@ -69,8 +56,8 @@
if (!TextUtils.isEmpty(address)) {
signInPlaceView.setText(address);
}
- TextView signInView = findViewById(R.id.signInView);
- signInView.setOnClickListener(this);
+ Button signInButton = findViewById(R.id.signInButton);
+ signInButton.setOnClickListener(this);
}
@Override
@@ -84,7 +71,7 @@
@Override
public void onClick(View view) {
int i = view.getId();
- if (i == R.id.signInView) {
+ if (i == R.id.signInButton) {
if (listener != null) {
listener.onViewClick();
}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
deleted file mode 100755
index 122b863..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import java.util.List;
-
-public class DateInfo {
- private String date;
- private List list;
-
- public String getDate() {
- return date;
- }
-
- public void setDate(String date) {
- this.date = date;
- }
-
- public List getList() {
- return list;
- }
-
- public void setList(List list) {
- this.list = list;
- }
-}
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 13bc9ef..1416b2c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -28,7 +28,9 @@
+
+
@@ -60,7 +62,12 @@
+
+
+
+
+
@@ -80,7 +87,9 @@
+
+
diff --git a/app/build.gradle b/app/build.gradle
index a4ee6d9..2e1bb36 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -109,7 +109,6 @@
implementation 'com.amap.api:location:5.3.1'
//经纬度逆编码
implementation 'com.amap.api:search:8.1.0'
- implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
//桌面角标
implementation "me.leolin:ShortcutBadger:1.1.22@aar"
}
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
index 4a0b2bb..00f69ae 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
@@ -16,11 +16,11 @@
import com.casic.dcms.databinding.ActivityCleanRecordsBinding;
import com.casic.dcms.mvvm.model.CleanRecordBean;
import com.casic.dcms.mvvm.vm.ToiletViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
import com.casic.dcms.utils.StringHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -41,14 +41,8 @@
private RecordListAdapter adapter;
private WeakReferenceHandler weakReferenceHandler;
private int pageIndex = 1;
- private String start;
- private String end;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -63,7 +57,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class);
- toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex);
+ }
+
+ @Override
+ protected void onResume() {
+ obtainCleanRecordList("", "");
+ super.onResume();
}
@Override
@@ -71,23 +70,26 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(CleaningRecordsActivity.this, CalendarUtil.obtainLastTwoMonth(), view)
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
-
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
- obtainCleanRecordList();
+ obtainCleanRecordList(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +98,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +106,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
@@ -146,7 +148,7 @@
});
}
- private void obtainCleanRecordList() {
+ private void obtainCleanRecordList(String start, String end) {
toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex);
}
@@ -161,7 +163,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
index aa0d7a9..8741e2f 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
@@ -14,10 +14,10 @@
import com.casic.dcms.databinding.ActivityMaintainRecordBinding;
import com.casic.dcms.mvvm.model.MaintainRecordBean;
import com.casic.dcms.mvvm.vm.BridgeViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -37,15 +37,9 @@
private List dataBeans = new ArrayList<>();
private WeakReferenceHandler weakReferenceHandler;
private MaintainRecordAdapter adapter;
- private String start;
- private String end;
private int pageIndex = 1;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -60,8 +54,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class);
+ }
- obtainMaintainRecord();
+ @Override
+ protected void onResume() {
+ obtainMaintainRecord("", "");
+ super.onResume();
}
@Override
@@ -69,25 +67,28 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), view) //初始化
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
- //点击完成按钮后回调返回方法
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +97,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +105,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
@@ -145,7 +146,7 @@
});
}
- private void obtainMaintainRecord() {
+ private void obtainMaintainRecord(String start, String end) {
bridgeViewModel.obtainMaintainRecord(start, end, pageIndex);
}
@@ -160,7 +161,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
new file mode 100644
index 0000000..397a389
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
@@ -0,0 +1,220 @@
+package com.casic.dcms.widgets;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import androidx.fragment.app.FragmentManager;
+
+import com.casic.dcms.R;
+import com.casic.dcms.utils.LocaleConstant;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.utils.ColorUtil;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
+import com.pengxh.androidx.lite.utils.TimeOrDateUtil;
+import com.pengxh.androidx.lite.widget.EasyToast;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+public class DateSelectDialog extends Dialog {
+
+ private final Context ctx;
+ private final String title;
+ private final String negativeBtn;
+ private final String positiveBtn;
+ private final OnDialogButtonClickListener listener;
+ private final FragmentManager fragmentManager;
+ private final Type type;
+
+ private DateSelectDialog(Builder builder) {
+ super(builder.context);
+ this.ctx = builder.context;
+ this.title = builder.title;
+ this.negativeBtn = builder.negativeBtn;
+ this.positiveBtn = builder.positiveBtn;
+ this.listener = builder.listener;
+ this.fragmentManager = builder.fragmentManager;
+ this.type = builder.type;
+ }
+
+ public static class Builder {
+ private Context context;
+ private String title;
+ private String negativeBtn;
+ private String positiveBtn;
+ private OnDialogButtonClickListener listener;
+ private FragmentManager fragmentManager;
+ private Type type;
+
+ public Builder setContext(Context context) {
+ this.context = context;
+ return this;
+ }
+
+ public Builder setTitle(String title) {
+ this.title = title;
+ return this;
+ }
+
+ public Builder setNegativeButton(String name) {
+ this.negativeBtn = name;
+ return this;
+ }
+
+ public Builder setPositiveButton(String name) {
+ this.positiveBtn = name;
+ return this;
+ }
+
+ public Builder setOnDialogButtonClickListener(OnDialogButtonClickListener listener) {
+ this.listener = listener;
+ return this;
+ }
+
+ public Builder setFragmentManager(FragmentManager fragmentManager) {
+ this.fragmentManager = fragmentManager;
+ return this;
+ }
+
+ public Builder setCalendarType(Type calendarType) {
+ this.type = calendarType;
+ return this;
+ }
+
+ public DateSelectDialog build() {
+ return new DateSelectDialog(this);
+ }
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ DialogLayoutParam.resetParams(this, Gravity.CENTER, R.style.UserDefinedAnimation, 0.85);
+ setContentView(R.layout.dialog_select_date);
+ setCancelable(false);
+ setCanceledOnTouchOutside(false);
+
+
+ if (!TextUtils.isEmpty(title)) {
+ ((TextView) findViewById(R.id.dialogTitleView)).setText(title);
+ }
+
+ EditText startDateView = findViewById(R.id.startDateView);
+ startDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ startDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ EditText endDateView = findViewById(R.id.endDateView);
+ endDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ endDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ Button dialogCancelButton = findViewById(R.id.dialogCancelButton);
+ dialogCancelButton.setText(negativeBtn);
+ dialogCancelButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ listener.onCancelClick();
+ dismiss();
+ }
+ });
+
+ Button dialogConfirmButton = findViewById(R.id.dialogConfirmButton);
+ dialogConfirmButton.setText(positiveBtn);
+ dialogConfirmButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //判断其实时间和结束时间
+ String startDate = startDateView.getText().toString();
+ String endDate = endDateView.getText().toString();
+ if (isEarlierThanStart(startDate, endDate)) {
+ EasyToast.show(ctx, "结束时间不能早于开始时间");
+ return;
+ }
+ listener.onConfirmClick(startDate, endDate);
+ dismiss();
+ }
+ });
+ }
+
+ public interface OnDialogButtonClickListener {
+ void onConfirmClick(String startDate, String endDate);
+
+ void onCancelClick();
+ }
+
+ /**
+ * 判断时间是否早于当前时间
+ */
+ private boolean isEarlierThanStart(String start, String end) {
+ if (TextUtils.isEmpty(start) || TextUtils.isEmpty(end)) {
+ return false;
+ }
+ SimpleDateFormat dateFormat;
+ if (type == Type.ALL) {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
+ } else {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
+ }
+ try {
+ return dateFormat.parse(start).getTime() > dateFormat.parse(end).getTime();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
index b4e5dcb..c814a2b 100644
--- a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
+++ b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
@@ -2,19 +2,15 @@
import android.app.Dialog;
import android.content.Context;
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
+import android.widget.Button;
import android.widget.TextView;
import com.casic.dcms.R;
-import com.casic.dcms.base.BaseApplication;
import com.casic.dcms.utils.TimeOrDateUtil;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
import java.util.Timer;
import java.util.TimerTask;
@@ -37,16 +33,7 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
- //手动设置dialog宽度
- Window window = getWindow();
- window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
- window.getDecorView().setBackgroundColor(Color.TRANSPARENT);
- WindowManager.LayoutParams params = window.getAttributes();
- params.width = QMUIDisplayHelper.dp2px(BaseApplication.getInstance(), 300);
- params.height = WindowManager.LayoutParams.WRAP_CONTENT;
- window.setAttributes(params);
-
+ DialogLayoutParam.resetParams(this, 0.85);
setContentView(R.layout.dialog_sign_in);
timer = new Timer();
initView();
@@ -69,8 +56,8 @@
if (!TextUtils.isEmpty(address)) {
signInPlaceView.setText(address);
}
- TextView signInView = findViewById(R.id.signInView);
- signInView.setOnClickListener(this);
+ Button signInButton = findViewById(R.id.signInButton);
+ signInButton.setOnClickListener(this);
}
@Override
@@ -84,7 +71,7 @@
@Override
public void onClick(View view) {
int i = view.getId();
- if (i == R.id.signInView) {
+ if (i == R.id.signInButton) {
if (listener != null) {
listener.onViewClick();
}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
deleted file mode 100755
index 122b863..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import java.util.List;
-
-public class DateInfo {
- private String date;
- private List list;
-
- public String getDate() {
- return date;
- }
-
- public void setDate(String date) {
- this.date = date;
- }
-
- public List getList() {
- return list;
- }
-
- public void setList(List list) {
- this.list = list;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
deleted file mode 100755
index 7fdb45f..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
+++ /dev/null
@@ -1,647 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.Context;
-import android.graphics.drawable.BitmapDrawable;
-import android.text.TextUtils;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.LinearLayout;
-import android.widget.PopupWindow;
-import android.widget.TextView;
-
-import androidx.annotation.Nullable;
-import androidx.core.app.ActivityCompat;
-import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.utils.CalendarUtil;
-import com.chad.library.adapter.base.BaseQuickAdapter;
-import com.chad.library.adapter.base.BaseViewHolder;
-import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-
-@SuppressLint("SetTextI18n")
-public class DatePopupWindow extends PopupWindow {
- private static final String TAG = "DatePopupWindow";
- private final View rootView;
- private QMUIRoundButton selectDoneButton;
- private RecyclerView dateRecyclerView;
- private TextView hintTextTextView;
- private TextView endWeekView;
- private TextView endDateView;
- private LinearLayout endDateLayout;
- private TextView sumTimeView;
- private TextView startWeekView;
- private TextView startDateView;
-
- private final boolean dayFlag;
- private final Activity activity;
- private Date mSetDate;
- private final String currentDate;
- private final String startDesc;
- private final String endDesc;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private int childPosition = -1;//当天在列表中的子索引
- private DateAdapter mDateAdapter;
- private List mList;
- private final DateOnClickListener mOnClickListener;
-
- private DatePopupWindow(Builder builder) {
- this.activity = builder.activity;
- this.currentDate = builder.date;
- this.startDesc = builder.startDesc;
- this.endDesc = builder.endDesc;
- this.dayFlag = builder.dayFlag;
- this.startGroupPosition = builder.startGroupPosition;
- this.startChildPosition = builder.startChildPosition;
- this.endGroupPosition = builder.endGroupPosition;
- this.endChildPosition = builder.endChildPosition;
- this.mOnClickListener = builder.mOnClickListener;
-
- LayoutInflater inflater = (LayoutInflater) this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- rootView = inflater.inflate(R.layout.popu_date, null);
- this.setContentView(rootView);
- this.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setAnimationStyle(R.style.dialogWindowAnim);
- this.setFocusable(true);
- this.setBackgroundDrawable(new BitmapDrawable());
- this.setOnDismissListener(new ShareDismissListener());
- backgroundAlpha(activity);
-
- initView();
- setInitSelect();
- create(builder.parentView);
- }
-
- private void backgroundAlpha(Activity context) {
- WindowManager.LayoutParams lp = context.getWindow().getAttributes();
- lp.alpha = 1.0f; //0.0-1.0
- context.getWindow().setAttributes(lp);
- }
-
- private void initView() {
- selectDoneButton = rootView.findViewById(R.id.selectDoneButton);
- dateRecyclerView = rootView.findViewById(R.id.dateRecyclerView);
- hintTextTextView = rootView.findViewById(R.id.hintTextTextView);
- endWeekView = rootView.findViewById(R.id.endWeekView);
- endDateView = rootView.findViewById(R.id.endDateView);
- endDateLayout = rootView.findViewById(R.id.endDateLayout);
- sumTimeView = rootView.findViewById(R.id.sumTimeView);
- startWeekView = rootView.findViewById(R.id.startWeekView);
- startDateView = rootView.findViewById(R.id.startDateView);
- TextView clearButton = rootView.findViewById(R.id.clearButton);
- TextView closeButton = rootView.findViewById(R.id.closeButton);
- TextView startDateDescView = rootView.findViewById(R.id.startDateDescView);
- TextView endDateDescView = rootView.findViewById(R.id.endDateDescView);
- startDateDescView.setText(startDesc + "日期");
- endDateDescView.setText(endDesc + "日期");
- selectDoneButton.setChangeAlphaWhenPress(true);
- selectDoneButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mOnClickListener != null) {
- String startDate = mList.get(startGroupPosition)
- .getList()
- .get(startChildPosition)
- .getDate();
- String endDate = mList.get(endGroupPosition)
- .getList()
- .get(endChildPosition)
- .getDate();
- mOnClickListener.getDate(startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition);
- }
- DatePopupWindow.this.dismiss();
- }
- });
- closeButton.setOnClickListener(v -> DatePopupWindow.this.dismiss());
- clearButton.setOnClickListener(v -> {
- initView();//重置当前view
- setDefaultSelect();//选中初始状态值
- });
- LinearLayoutManager manager = new LinearLayoutManager(activity);
- manager.setOrientation(LinearLayoutManager.VERTICAL);
- mList = new ArrayList<>();
- mDateAdapter = new DateAdapter(mList);
- dateRecyclerView.setLayoutManager(manager);
- dateRecyclerView.setAdapter(mDateAdapter);
- dateRecyclerView.setItemViewCacheSize(200);
- dateRecyclerView.setHasFixedSize(true);
- dateRecyclerView.setNestedScrollingEnabled(false);
- initData();
- }
-
- private void initData() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);//当前日期转date
- try {
- if (currentDate == null) {
- return;
- }
- mSetDate = dateFormat.parse(currentDate);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //初始化日期
- Calendar c = Calendar.getInstance();
- c.setTime(mSetDate);
- int firstM = c.get(Calendar.MONTH) + 1;//获取月份 月份是从0开始,需要+1
- int days = c.get(Calendar.DATE);//日期
- int week = c.get(Calendar.DAY_OF_WEEK);//周几
- //获取当前这个月最大天数
- int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- DateInfo month = new DateInfo();
- List dayList = new ArrayList<>();
- month.setDate(c.get(Calendar.YEAR) + "年" + firstM + "月");
- //当前月第一天是周几
- int w = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < w; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- dayList.add(dayInfo);
- }
- //计算当前月的天数
- for (int i = 1; i <= maxDay; i++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName(i + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + i);
- int c_year = Integer.parseInt(currentDate.split("-")[0]);
- int c_month = Integer.parseInt(currentDate.split("-")[1]);
- int c_day = Integer.parseInt(currentDate.split("-")[2]);
- if (c_year == c.get(Calendar.YEAR) && c_month == (c.get(Calendar.MONTH) + 1) && c_day == i) {
- childPosition = dayList.size();
- }
- //设置日期是否可选择
- dayInfo.setEnable(i >= days);
- dayList.add(dayInfo);
- }
- month.setList(dayList);
- mList.add(month);
- //获取下2个月的数据
- for (int i = 1; i <= 2; i++) {
- //当前月份循环减1
- c.add(Calendar.MONTH, 1);
- DateInfo nextMonth = new DateInfo();
- List nextDayList = new ArrayList<>();
- int maxDays = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- nextMonth.setDate(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月");
- //周几
- int weeks = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < weeks; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- nextDayList.add(dayInfo);
- }
- //该月的所有日期
- for (int j = 0; j < maxDays; j++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName((j + 1) + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + (j + 1));
- dayInfo.setEnable((j + 1) <= days || i != 2);
- nextDayList.add(dayInfo);
- }
- nextMonth.setList(nextDayList);
- mList.add(nextMonth);
- }
- mDateAdapter.updateData();
- }
-
- private void setInitSelect() {
- if (0 <= this.startGroupPosition && this.startGroupPosition < mList.size() &&
- 0 <= this.endGroupPosition && this.endGroupPosition < mList.size()) {
- int maxStartChild = mList.get(this.startGroupPosition).getList().size();
- int maxEndChild = mList.get(this.endGroupPosition).getList().size();
- if (0 <= this.startChildPosition && this.startChildPosition < maxStartChild &&
- 0 <= this.endChildPosition && this.endChildPosition < maxEndChild) {
- setInit();
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- }
-
- private void setInit() {
- mList.get(this.startGroupPosition).getList().get(this.startChildPosition).setStatus(1);
- mList.get(this.endGroupPosition).getList().get(this.endChildPosition).setStatus(2);
- mDateAdapter.notifyDataSetChanged();
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- dateRecyclerView.scrollToPosition(this.startGroupPosition);
- }
-
- //设置日历标明当前日期的状态
- private void setDefaultSelect() {
- if (childPosition == -1) return;
- String date = mList.get(0).getList().get(childPosition).getDate();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Date curDate = null;
- try {
- curDate = sdf.parse(formatDate(date));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- if (curDate == null) return;
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(curDate);
- calendar.add(Calendar.DATE, 1);
-
- int year = Integer.parseInt(date.split("-")[0]);
- int month = Integer.parseInt(date.split("-")[1]);
- if (year == calendar.get(Calendar.YEAR) && month == calendar.get(Calendar.MONTH) + 1
- && childPosition < mList.get(0).getList().size() - 1) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 0;
- this.endChildPosition = childPosition - 1;
- setInit();
- } else {
- for (int i = 0; i < mList.get(1).getList().size(); i++) {
- if (!TextUtils.isEmpty(mList.get(1).getList().get(i).getDate())) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 1;
- this.endChildPosition = i;
- setInit();
- break;
- }
- }
- }
- }
-
- /**
- * 设置起始时间和结束时间的选中标识,或者设置不选中
- *
- * @param startDate
- * @param endDate
- * @param status 选中设置为true 设置不选中false
- */
- @SuppressLint("SetTextI18n")
- private void getOffsetDate(String startDate, String endDate, boolean status) {
- //更新开始日期和结束日期的信息和状态
- Calendar sCalendar = CalendarUtil.toDate(startDate);
- Calendar eCalendar = CalendarUtil.toDate(endDate);
- startDateView.setText((sCalendar.get(Calendar.MONTH) + 1) + "月" + sCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(startDate));
- endDateView.setText((eCalendar.get(Calendar.MONTH) + 1) + "月" + eCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- endWeekView.setText("周" + CalendarUtil.getWeekByFormat(endDate));
- int daysOffset = Integer.parseInt(CalendarUtil.getTwoDay(endDate, startDate));
- if (daysOffset < 0) return;
- if (dayFlag) {
- sumTimeView.setText("共" + (daysOffset + 1) + "天");
- } else {
- sumTimeView.setText("共" + daysOffset + "晚");
- }
- //更改结束日期和完成按钮状态
- endDateLayout.setVisibility(View.VISIBLE);
- hintTextTextView.setVisibility(View.GONE);
- initButton("完成", true);
-
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Calendar c = Calendar.getInstance();
- DayInfo info = mList.get(startGroupPosition).getList().get(startChildPosition);
- try {
- c.setTime(sdf.parse(info.getDate()));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //根据2个时间的相差天数去循环
- for (int i = 0; i < daysOffset; i++) {
- //下一天(目标天)
- c.add(Calendar.DATE, 1);
- //改天的日期(目标天)
- String d = c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE);
- //循环group列表
- for (int j = 0; j < mList.size(); j++) {
- //获取该月的随机一个dayInfo
- DayInfo dayInfo = mList.get(j).getList().get(mList.get(j).getList().size() - 1);
- boolean isCheck = false;
- //判断该天是否和目标天是否是同一个月
- if (!TextUtils.isEmpty(dayInfo.getDate())
- && Integer.parseInt(dayInfo.getDate().split("-")[0]) == (c.get(Calendar.YEAR))
- && Integer.parseInt(dayInfo.getDate().split("-")[1]) == ((c.get(Calendar.MONTH) + 1))) {
- //是同一个月,则循环该月多有天数
- for (int t = 0; t < mList.get(j).getList().size(); t++) {
- //找到该月的日期与目标日期相同,存在,设置选择标记
- if (mList.get(j).getList().get(t).getDate().equals(d)) {
- mList.get(j).getList().get(t).setSelect(status);
- isCheck = true;
- break;
- }
- }
- }
- if (isCheck) {
- mDateAdapter.notifyItemChanged(j);
- break;
- }
- }
- }
- }
-
- private String formatDate(String date) {
- if (TextUtils.isEmpty(date)) return "";
- return date.split("-")[0] +
- "-" +
- (date.split("-")[1].length() < 2 ? "0" + date.split("-")[1] : date.split("-")[1]) +
- "-" +
- (date.split("-")[2].length() < 2 ? "0" + date.split("-")[2] : date.split("-")[2]);
- }
-
- private void create(View view) {
- this.showAtLocation(view, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
- }
-
- /**
- * return startDate、endDate(格式:2012-12-10)
- * 选中完成后返回开始时间和结束时间
- * return startGroupPosition、startChildPosition、endGroupPosition、endChildPosition
- * 返回选中时间区间的状态标记,监听中接收后在builder中setInitSelect()方法中直接传出入(可用于记录上次选中的状态,用户再点击进入的时候恢复上一次的区间选中状态)
- */
- public interface DateOnClickListener {
- void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition);
- }
-
- public static class Builder {
- private final String date;
- private final Activity activity;
- private final View parentView;
- private String startDesc;
- private String endDesc;
- private boolean dayFlag = true;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private DateOnClickListener mOnClickListener = null;
-
- public Builder(Activity activity, Date date, View parentView) {
- this.date = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(date);
- this.activity = activity;
- this.parentView = parentView;
- this.startDesc = "开始";
- this.endDesc = "结束";
- this.dayFlag = true;
- }
-
- public DatePopupWindow builder() {
- return new DatePopupWindow(this);
- }
-
- public Builder setInitSelect(int startGroup, int startChild, int endGroup, int endChild) {
- this.startGroupPosition = startGroup;
- this.startChildPosition = startChild;
- this.endGroupPosition = endGroup;
- this.endChildPosition = endChild;
- return this;
- }
-
- public Builder setInitDay(boolean dayFlag) {
- this.dayFlag = dayFlag;
- if (dayFlag) {
- this.startDesc = "开始";
- this.endDesc = "结束";
- } else {
- this.startDesc = "入住";
- this.endDesc = "离开";
- }
- return this;
- }
-
- public Builder setDateOnClickListener(DateOnClickListener mlListener) {
- mOnClickListener = mlListener;
- return this;
- }
- }
-
- private class DateAdapter extends BaseQuickAdapter {
-
- DateAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date, data);
- }
-
- @Override
- public void onBindViewHolder(BaseViewHolder holder, int positions) {
- super.onBindViewHolder(holder, positions);
- TextView monthTitleView = holder.getView(R.id.monthTitleView);
- monthTitleView.setText(mList.get(positions).getDate());
- }
-
- @Override
- protected void convert(final BaseViewHolder helper, final DateInfo item) {
- RecyclerView monthRecyclerView = helper.getView(R.id.monthRecyclerView);
-
- GridLayoutManager manager = new GridLayoutManager(activity, 7);
- monthRecyclerView.setLayoutManager(manager);
- final TempAdapter groupAdapter = new TempAdapter(item.getList());
- monthRecyclerView.setAdapter(groupAdapter);
- monthRecyclerView.setItemViewCacheSize(200);
- monthRecyclerView.setHasFixedSize(true);
- monthRecyclerView.setNestedScrollingEnabled(false);
- groupAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
- @Override
- public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
- if (!item.getList().get(position).isEnable()) return;
- if (TextUtils.isEmpty(item.getList().get(position).getName())) return;
- if (TextUtils.isEmpty(item.getList().get(position).getDate())) return;
- int status = item.getList().get(position).getStatus();
- if (status == 0 &&
- startGroupPosition == -1 &&
- startChildPosition == -1 &&
- item.getList().get(position).isEnable()) {
- //开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
-
- startDateView.setText(CalendarUtil.FormatDateMD(item.getList().get(position).getDate()));
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- if (status == 0 && endGroupPosition == -1 && endChildPosition == -1) {
- int offset = Integer.parseInt(CalendarUtil.getTwoDay(item.getList().get(position).getDate()
- , mList.get(startGroupPosition).getList().get(startChildPosition).getDate()));
- //判断该离开日期是否比入住时间还小,是则重新设置入住时间。
- if (offset < 0) {
- //刷新上一个开始日期
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- //设置新的入开始日期
- item.getList().get(position).setStatus(1);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- adapter.notifyItemChanged(position);
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- item.getList().get(position).setStatus(2);
- adapter.notifyItemChanged(position);
- endGroupPosition = helper.getAdapterPosition();
- endChildPosition = position;
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- return;
- }
- //重置开始和结束时间,设置开始时间
- if (status == 0 && endGroupPosition != -1 && endChildPosition != -1 && startChildPosition != -1 && startGroupPosition != -1) {
- //重置开始和结束
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mList.get(endGroupPosition).getList().get(endChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- mDateAdapter.notifyItemChanged(endGroupPosition);
- //重置选择间区的状态
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), false);
- //设置开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
-
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- endGroupPosition = -1;
- endChildPosition = -1;
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- }
- }
- });
- }
-
- void updateData() {
- notifyDataSetChanged();
- }
- }
-
- private class TempAdapter extends BaseQuickAdapter {
- TempAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date_child, data);
- }
-
- @Override
- protected void convert(BaseViewHolder helper, DayInfo item) {
- String name = item.getName();
- boolean isSelect = item.isSelect();
- boolean isEnable = item.isEnable();
- int status = item.getStatus();
- helper.setText(R.id.dateView, name);
- //默认
- if (status == 0) {
- if (isSelect) {
- //选中
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else {
- //没选中状态
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.black));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.white));
- }
- } else if (status == 1) {
- //开始
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, startDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else if (status == 2) {
- //结束
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, endDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- }
- //设置当前日期前的样式,没选中,并状态为0情况下
- if (!isSelect && status == 0) {
- if (!isEnable) {
- //无效
- TextView textView = helper.getView(R.id.dateDelView);
- if (TextUtils.isEmpty(name)) {
- textView.setVisibility(View.GONE);
- } else {
- textView.setText(name);
- textView.setVisibility(View.VISIBLE);
- }
- textView.setTextColor(activity.getResources().getColor(R.color.mainThemeColor));
- helper.getView(R.id.dateView).setVisibility(View.GONE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- } else {
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- TextView textView = helper.getView(R.id.dateView);
- textView.setTextColor(activity.getResources().getColor(R.color.black));
- }
- }
- }
- }
-
- private class ShareDismissListener implements OnDismissListener {
- @Override
- public void onDismiss() {
- backgroundAlpha(activity);
- }
- }
-
- private void initButton(String msg, boolean enable) {
- selectDoneButton.setText(msg);
- if (enable) {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.mainThemeColor));
- } else {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.hintTextColor));
- }
- selectDoneButton.setEnabled(enable);
- }
-}
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 13bc9ef..1416b2c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -28,7 +28,9 @@
+
+
@@ -60,7 +62,12 @@
+
+
+
+
+
@@ -80,7 +87,9 @@
+
+
diff --git a/app/build.gradle b/app/build.gradle
index a4ee6d9..2e1bb36 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -109,7 +109,6 @@
implementation 'com.amap.api:location:5.3.1'
//经纬度逆编码
implementation 'com.amap.api:search:8.1.0'
- implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
//桌面角标
implementation "me.leolin:ShortcutBadger:1.1.22@aar"
}
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
index 4a0b2bb..00f69ae 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
@@ -16,11 +16,11 @@
import com.casic.dcms.databinding.ActivityCleanRecordsBinding;
import com.casic.dcms.mvvm.model.CleanRecordBean;
import com.casic.dcms.mvvm.vm.ToiletViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
import com.casic.dcms.utils.StringHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -41,14 +41,8 @@
private RecordListAdapter adapter;
private WeakReferenceHandler weakReferenceHandler;
private int pageIndex = 1;
- private String start;
- private String end;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -63,7 +57,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class);
- toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex);
+ }
+
+ @Override
+ protected void onResume() {
+ obtainCleanRecordList("", "");
+ super.onResume();
}
@Override
@@ -71,23 +70,26 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(CleaningRecordsActivity.this, CalendarUtil.obtainLastTwoMonth(), view)
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
-
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
- obtainCleanRecordList();
+ obtainCleanRecordList(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +98,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +106,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
@@ -146,7 +148,7 @@
});
}
- private void obtainCleanRecordList() {
+ private void obtainCleanRecordList(String start, String end) {
toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex);
}
@@ -161,7 +163,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
index aa0d7a9..8741e2f 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
@@ -14,10 +14,10 @@
import com.casic.dcms.databinding.ActivityMaintainRecordBinding;
import com.casic.dcms.mvvm.model.MaintainRecordBean;
import com.casic.dcms.mvvm.vm.BridgeViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -37,15 +37,9 @@
private List dataBeans = new ArrayList<>();
private WeakReferenceHandler weakReferenceHandler;
private MaintainRecordAdapter adapter;
- private String start;
- private String end;
private int pageIndex = 1;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -60,8 +54,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class);
+ }
- obtainMaintainRecord();
+ @Override
+ protected void onResume() {
+ obtainMaintainRecord("", "");
+ super.onResume();
}
@Override
@@ -69,25 +67,28 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), view) //初始化
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
- //点击完成按钮后回调返回方法
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +97,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +105,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
@@ -145,7 +146,7 @@
});
}
- private void obtainMaintainRecord() {
+ private void obtainMaintainRecord(String start, String end) {
bridgeViewModel.obtainMaintainRecord(start, end, pageIndex);
}
@@ -160,7 +161,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
new file mode 100644
index 0000000..397a389
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
@@ -0,0 +1,220 @@
+package com.casic.dcms.widgets;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import androidx.fragment.app.FragmentManager;
+
+import com.casic.dcms.R;
+import com.casic.dcms.utils.LocaleConstant;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.utils.ColorUtil;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
+import com.pengxh.androidx.lite.utils.TimeOrDateUtil;
+import com.pengxh.androidx.lite.widget.EasyToast;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+public class DateSelectDialog extends Dialog {
+
+ private final Context ctx;
+ private final String title;
+ private final String negativeBtn;
+ private final String positiveBtn;
+ private final OnDialogButtonClickListener listener;
+ private final FragmentManager fragmentManager;
+ private final Type type;
+
+ private DateSelectDialog(Builder builder) {
+ super(builder.context);
+ this.ctx = builder.context;
+ this.title = builder.title;
+ this.negativeBtn = builder.negativeBtn;
+ this.positiveBtn = builder.positiveBtn;
+ this.listener = builder.listener;
+ this.fragmentManager = builder.fragmentManager;
+ this.type = builder.type;
+ }
+
+ public static class Builder {
+ private Context context;
+ private String title;
+ private String negativeBtn;
+ private String positiveBtn;
+ private OnDialogButtonClickListener listener;
+ private FragmentManager fragmentManager;
+ private Type type;
+
+ public Builder setContext(Context context) {
+ this.context = context;
+ return this;
+ }
+
+ public Builder setTitle(String title) {
+ this.title = title;
+ return this;
+ }
+
+ public Builder setNegativeButton(String name) {
+ this.negativeBtn = name;
+ return this;
+ }
+
+ public Builder setPositiveButton(String name) {
+ this.positiveBtn = name;
+ return this;
+ }
+
+ public Builder setOnDialogButtonClickListener(OnDialogButtonClickListener listener) {
+ this.listener = listener;
+ return this;
+ }
+
+ public Builder setFragmentManager(FragmentManager fragmentManager) {
+ this.fragmentManager = fragmentManager;
+ return this;
+ }
+
+ public Builder setCalendarType(Type calendarType) {
+ this.type = calendarType;
+ return this;
+ }
+
+ public DateSelectDialog build() {
+ return new DateSelectDialog(this);
+ }
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ DialogLayoutParam.resetParams(this, Gravity.CENTER, R.style.UserDefinedAnimation, 0.85);
+ setContentView(R.layout.dialog_select_date);
+ setCancelable(false);
+ setCanceledOnTouchOutside(false);
+
+
+ if (!TextUtils.isEmpty(title)) {
+ ((TextView) findViewById(R.id.dialogTitleView)).setText(title);
+ }
+
+ EditText startDateView = findViewById(R.id.startDateView);
+ startDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ startDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ EditText endDateView = findViewById(R.id.endDateView);
+ endDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ endDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ Button dialogCancelButton = findViewById(R.id.dialogCancelButton);
+ dialogCancelButton.setText(negativeBtn);
+ dialogCancelButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ listener.onCancelClick();
+ dismiss();
+ }
+ });
+
+ Button dialogConfirmButton = findViewById(R.id.dialogConfirmButton);
+ dialogConfirmButton.setText(positiveBtn);
+ dialogConfirmButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //判断其实时间和结束时间
+ String startDate = startDateView.getText().toString();
+ String endDate = endDateView.getText().toString();
+ if (isEarlierThanStart(startDate, endDate)) {
+ EasyToast.show(ctx, "结束时间不能早于开始时间");
+ return;
+ }
+ listener.onConfirmClick(startDate, endDate);
+ dismiss();
+ }
+ });
+ }
+
+ public interface OnDialogButtonClickListener {
+ void onConfirmClick(String startDate, String endDate);
+
+ void onCancelClick();
+ }
+
+ /**
+ * 判断时间是否早于当前时间
+ */
+ private boolean isEarlierThanStart(String start, String end) {
+ if (TextUtils.isEmpty(start) || TextUtils.isEmpty(end)) {
+ return false;
+ }
+ SimpleDateFormat dateFormat;
+ if (type == Type.ALL) {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
+ } else {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
+ }
+ try {
+ return dateFormat.parse(start).getTime() > dateFormat.parse(end).getTime();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
index b4e5dcb..c814a2b 100644
--- a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
+++ b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
@@ -2,19 +2,15 @@
import android.app.Dialog;
import android.content.Context;
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
+import android.widget.Button;
import android.widget.TextView;
import com.casic.dcms.R;
-import com.casic.dcms.base.BaseApplication;
import com.casic.dcms.utils.TimeOrDateUtil;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
import java.util.Timer;
import java.util.TimerTask;
@@ -37,16 +33,7 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
- //手动设置dialog宽度
- Window window = getWindow();
- window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
- window.getDecorView().setBackgroundColor(Color.TRANSPARENT);
- WindowManager.LayoutParams params = window.getAttributes();
- params.width = QMUIDisplayHelper.dp2px(BaseApplication.getInstance(), 300);
- params.height = WindowManager.LayoutParams.WRAP_CONTENT;
- window.setAttributes(params);
-
+ DialogLayoutParam.resetParams(this, 0.85);
setContentView(R.layout.dialog_sign_in);
timer = new Timer();
initView();
@@ -69,8 +56,8 @@
if (!TextUtils.isEmpty(address)) {
signInPlaceView.setText(address);
}
- TextView signInView = findViewById(R.id.signInView);
- signInView.setOnClickListener(this);
+ Button signInButton = findViewById(R.id.signInButton);
+ signInButton.setOnClickListener(this);
}
@Override
@@ -84,7 +71,7 @@
@Override
public void onClick(View view) {
int i = view.getId();
- if (i == R.id.signInView) {
+ if (i == R.id.signInButton) {
if (listener != null) {
listener.onViewClick();
}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
deleted file mode 100755
index 122b863..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import java.util.List;
-
-public class DateInfo {
- private String date;
- private List list;
-
- public String getDate() {
- return date;
- }
-
- public void setDate(String date) {
- this.date = date;
- }
-
- public List getList() {
- return list;
- }
-
- public void setList(List list) {
- this.list = list;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
deleted file mode 100755
index 7fdb45f..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
+++ /dev/null
@@ -1,647 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.Context;
-import android.graphics.drawable.BitmapDrawable;
-import android.text.TextUtils;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.LinearLayout;
-import android.widget.PopupWindow;
-import android.widget.TextView;
-
-import androidx.annotation.Nullable;
-import androidx.core.app.ActivityCompat;
-import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.utils.CalendarUtil;
-import com.chad.library.adapter.base.BaseQuickAdapter;
-import com.chad.library.adapter.base.BaseViewHolder;
-import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-
-@SuppressLint("SetTextI18n")
-public class DatePopupWindow extends PopupWindow {
- private static final String TAG = "DatePopupWindow";
- private final View rootView;
- private QMUIRoundButton selectDoneButton;
- private RecyclerView dateRecyclerView;
- private TextView hintTextTextView;
- private TextView endWeekView;
- private TextView endDateView;
- private LinearLayout endDateLayout;
- private TextView sumTimeView;
- private TextView startWeekView;
- private TextView startDateView;
-
- private final boolean dayFlag;
- private final Activity activity;
- private Date mSetDate;
- private final String currentDate;
- private final String startDesc;
- private final String endDesc;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private int childPosition = -1;//当天在列表中的子索引
- private DateAdapter mDateAdapter;
- private List mList;
- private final DateOnClickListener mOnClickListener;
-
- private DatePopupWindow(Builder builder) {
- this.activity = builder.activity;
- this.currentDate = builder.date;
- this.startDesc = builder.startDesc;
- this.endDesc = builder.endDesc;
- this.dayFlag = builder.dayFlag;
- this.startGroupPosition = builder.startGroupPosition;
- this.startChildPosition = builder.startChildPosition;
- this.endGroupPosition = builder.endGroupPosition;
- this.endChildPosition = builder.endChildPosition;
- this.mOnClickListener = builder.mOnClickListener;
-
- LayoutInflater inflater = (LayoutInflater) this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- rootView = inflater.inflate(R.layout.popu_date, null);
- this.setContentView(rootView);
- this.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setAnimationStyle(R.style.dialogWindowAnim);
- this.setFocusable(true);
- this.setBackgroundDrawable(new BitmapDrawable());
- this.setOnDismissListener(new ShareDismissListener());
- backgroundAlpha(activity);
-
- initView();
- setInitSelect();
- create(builder.parentView);
- }
-
- private void backgroundAlpha(Activity context) {
- WindowManager.LayoutParams lp = context.getWindow().getAttributes();
- lp.alpha = 1.0f; //0.0-1.0
- context.getWindow().setAttributes(lp);
- }
-
- private void initView() {
- selectDoneButton = rootView.findViewById(R.id.selectDoneButton);
- dateRecyclerView = rootView.findViewById(R.id.dateRecyclerView);
- hintTextTextView = rootView.findViewById(R.id.hintTextTextView);
- endWeekView = rootView.findViewById(R.id.endWeekView);
- endDateView = rootView.findViewById(R.id.endDateView);
- endDateLayout = rootView.findViewById(R.id.endDateLayout);
- sumTimeView = rootView.findViewById(R.id.sumTimeView);
- startWeekView = rootView.findViewById(R.id.startWeekView);
- startDateView = rootView.findViewById(R.id.startDateView);
- TextView clearButton = rootView.findViewById(R.id.clearButton);
- TextView closeButton = rootView.findViewById(R.id.closeButton);
- TextView startDateDescView = rootView.findViewById(R.id.startDateDescView);
- TextView endDateDescView = rootView.findViewById(R.id.endDateDescView);
- startDateDescView.setText(startDesc + "日期");
- endDateDescView.setText(endDesc + "日期");
- selectDoneButton.setChangeAlphaWhenPress(true);
- selectDoneButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mOnClickListener != null) {
- String startDate = mList.get(startGroupPosition)
- .getList()
- .get(startChildPosition)
- .getDate();
- String endDate = mList.get(endGroupPosition)
- .getList()
- .get(endChildPosition)
- .getDate();
- mOnClickListener.getDate(startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition);
- }
- DatePopupWindow.this.dismiss();
- }
- });
- closeButton.setOnClickListener(v -> DatePopupWindow.this.dismiss());
- clearButton.setOnClickListener(v -> {
- initView();//重置当前view
- setDefaultSelect();//选中初始状态值
- });
- LinearLayoutManager manager = new LinearLayoutManager(activity);
- manager.setOrientation(LinearLayoutManager.VERTICAL);
- mList = new ArrayList<>();
- mDateAdapter = new DateAdapter(mList);
- dateRecyclerView.setLayoutManager(manager);
- dateRecyclerView.setAdapter(mDateAdapter);
- dateRecyclerView.setItemViewCacheSize(200);
- dateRecyclerView.setHasFixedSize(true);
- dateRecyclerView.setNestedScrollingEnabled(false);
- initData();
- }
-
- private void initData() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);//当前日期转date
- try {
- if (currentDate == null) {
- return;
- }
- mSetDate = dateFormat.parse(currentDate);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //初始化日期
- Calendar c = Calendar.getInstance();
- c.setTime(mSetDate);
- int firstM = c.get(Calendar.MONTH) + 1;//获取月份 月份是从0开始,需要+1
- int days = c.get(Calendar.DATE);//日期
- int week = c.get(Calendar.DAY_OF_WEEK);//周几
- //获取当前这个月最大天数
- int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- DateInfo month = new DateInfo();
- List dayList = new ArrayList<>();
- month.setDate(c.get(Calendar.YEAR) + "年" + firstM + "月");
- //当前月第一天是周几
- int w = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < w; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- dayList.add(dayInfo);
- }
- //计算当前月的天数
- for (int i = 1; i <= maxDay; i++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName(i + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + i);
- int c_year = Integer.parseInt(currentDate.split("-")[0]);
- int c_month = Integer.parseInt(currentDate.split("-")[1]);
- int c_day = Integer.parseInt(currentDate.split("-")[2]);
- if (c_year == c.get(Calendar.YEAR) && c_month == (c.get(Calendar.MONTH) + 1) && c_day == i) {
- childPosition = dayList.size();
- }
- //设置日期是否可选择
- dayInfo.setEnable(i >= days);
- dayList.add(dayInfo);
- }
- month.setList(dayList);
- mList.add(month);
- //获取下2个月的数据
- for (int i = 1; i <= 2; i++) {
- //当前月份循环减1
- c.add(Calendar.MONTH, 1);
- DateInfo nextMonth = new DateInfo();
- List nextDayList = new ArrayList<>();
- int maxDays = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- nextMonth.setDate(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月");
- //周几
- int weeks = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < weeks; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- nextDayList.add(dayInfo);
- }
- //该月的所有日期
- for (int j = 0; j < maxDays; j++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName((j + 1) + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + (j + 1));
- dayInfo.setEnable((j + 1) <= days || i != 2);
- nextDayList.add(dayInfo);
- }
- nextMonth.setList(nextDayList);
- mList.add(nextMonth);
- }
- mDateAdapter.updateData();
- }
-
- private void setInitSelect() {
- if (0 <= this.startGroupPosition && this.startGroupPosition < mList.size() &&
- 0 <= this.endGroupPosition && this.endGroupPosition < mList.size()) {
- int maxStartChild = mList.get(this.startGroupPosition).getList().size();
- int maxEndChild = mList.get(this.endGroupPosition).getList().size();
- if (0 <= this.startChildPosition && this.startChildPosition < maxStartChild &&
- 0 <= this.endChildPosition && this.endChildPosition < maxEndChild) {
- setInit();
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- }
-
- private void setInit() {
- mList.get(this.startGroupPosition).getList().get(this.startChildPosition).setStatus(1);
- mList.get(this.endGroupPosition).getList().get(this.endChildPosition).setStatus(2);
- mDateAdapter.notifyDataSetChanged();
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- dateRecyclerView.scrollToPosition(this.startGroupPosition);
- }
-
- //设置日历标明当前日期的状态
- private void setDefaultSelect() {
- if (childPosition == -1) return;
- String date = mList.get(0).getList().get(childPosition).getDate();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Date curDate = null;
- try {
- curDate = sdf.parse(formatDate(date));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- if (curDate == null) return;
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(curDate);
- calendar.add(Calendar.DATE, 1);
-
- int year = Integer.parseInt(date.split("-")[0]);
- int month = Integer.parseInt(date.split("-")[1]);
- if (year == calendar.get(Calendar.YEAR) && month == calendar.get(Calendar.MONTH) + 1
- && childPosition < mList.get(0).getList().size() - 1) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 0;
- this.endChildPosition = childPosition - 1;
- setInit();
- } else {
- for (int i = 0; i < mList.get(1).getList().size(); i++) {
- if (!TextUtils.isEmpty(mList.get(1).getList().get(i).getDate())) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 1;
- this.endChildPosition = i;
- setInit();
- break;
- }
- }
- }
- }
-
- /**
- * 设置起始时间和结束时间的选中标识,或者设置不选中
- *
- * @param startDate
- * @param endDate
- * @param status 选中设置为true 设置不选中false
- */
- @SuppressLint("SetTextI18n")
- private void getOffsetDate(String startDate, String endDate, boolean status) {
- //更新开始日期和结束日期的信息和状态
- Calendar sCalendar = CalendarUtil.toDate(startDate);
- Calendar eCalendar = CalendarUtil.toDate(endDate);
- startDateView.setText((sCalendar.get(Calendar.MONTH) + 1) + "月" + sCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(startDate));
- endDateView.setText((eCalendar.get(Calendar.MONTH) + 1) + "月" + eCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- endWeekView.setText("周" + CalendarUtil.getWeekByFormat(endDate));
- int daysOffset = Integer.parseInt(CalendarUtil.getTwoDay(endDate, startDate));
- if (daysOffset < 0) return;
- if (dayFlag) {
- sumTimeView.setText("共" + (daysOffset + 1) + "天");
- } else {
- sumTimeView.setText("共" + daysOffset + "晚");
- }
- //更改结束日期和完成按钮状态
- endDateLayout.setVisibility(View.VISIBLE);
- hintTextTextView.setVisibility(View.GONE);
- initButton("完成", true);
-
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Calendar c = Calendar.getInstance();
- DayInfo info = mList.get(startGroupPosition).getList().get(startChildPosition);
- try {
- c.setTime(sdf.parse(info.getDate()));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //根据2个时间的相差天数去循环
- for (int i = 0; i < daysOffset; i++) {
- //下一天(目标天)
- c.add(Calendar.DATE, 1);
- //改天的日期(目标天)
- String d = c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE);
- //循环group列表
- for (int j = 0; j < mList.size(); j++) {
- //获取该月的随机一个dayInfo
- DayInfo dayInfo = mList.get(j).getList().get(mList.get(j).getList().size() - 1);
- boolean isCheck = false;
- //判断该天是否和目标天是否是同一个月
- if (!TextUtils.isEmpty(dayInfo.getDate())
- && Integer.parseInt(dayInfo.getDate().split("-")[0]) == (c.get(Calendar.YEAR))
- && Integer.parseInt(dayInfo.getDate().split("-")[1]) == ((c.get(Calendar.MONTH) + 1))) {
- //是同一个月,则循环该月多有天数
- for (int t = 0; t < mList.get(j).getList().size(); t++) {
- //找到该月的日期与目标日期相同,存在,设置选择标记
- if (mList.get(j).getList().get(t).getDate().equals(d)) {
- mList.get(j).getList().get(t).setSelect(status);
- isCheck = true;
- break;
- }
- }
- }
- if (isCheck) {
- mDateAdapter.notifyItemChanged(j);
- break;
- }
- }
- }
- }
-
- private String formatDate(String date) {
- if (TextUtils.isEmpty(date)) return "";
- return date.split("-")[0] +
- "-" +
- (date.split("-")[1].length() < 2 ? "0" + date.split("-")[1] : date.split("-")[1]) +
- "-" +
- (date.split("-")[2].length() < 2 ? "0" + date.split("-")[2] : date.split("-")[2]);
- }
-
- private void create(View view) {
- this.showAtLocation(view, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
- }
-
- /**
- * return startDate、endDate(格式:2012-12-10)
- * 选中完成后返回开始时间和结束时间
- * return startGroupPosition、startChildPosition、endGroupPosition、endChildPosition
- * 返回选中时间区间的状态标记,监听中接收后在builder中setInitSelect()方法中直接传出入(可用于记录上次选中的状态,用户再点击进入的时候恢复上一次的区间选中状态)
- */
- public interface DateOnClickListener {
- void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition);
- }
-
- public static class Builder {
- private final String date;
- private final Activity activity;
- private final View parentView;
- private String startDesc;
- private String endDesc;
- private boolean dayFlag = true;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private DateOnClickListener mOnClickListener = null;
-
- public Builder(Activity activity, Date date, View parentView) {
- this.date = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(date);
- this.activity = activity;
- this.parentView = parentView;
- this.startDesc = "开始";
- this.endDesc = "结束";
- this.dayFlag = true;
- }
-
- public DatePopupWindow builder() {
- return new DatePopupWindow(this);
- }
-
- public Builder setInitSelect(int startGroup, int startChild, int endGroup, int endChild) {
- this.startGroupPosition = startGroup;
- this.startChildPosition = startChild;
- this.endGroupPosition = endGroup;
- this.endChildPosition = endChild;
- return this;
- }
-
- public Builder setInitDay(boolean dayFlag) {
- this.dayFlag = dayFlag;
- if (dayFlag) {
- this.startDesc = "开始";
- this.endDesc = "结束";
- } else {
- this.startDesc = "入住";
- this.endDesc = "离开";
- }
- return this;
- }
-
- public Builder setDateOnClickListener(DateOnClickListener mlListener) {
- mOnClickListener = mlListener;
- return this;
- }
- }
-
- private class DateAdapter extends BaseQuickAdapter {
-
- DateAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date, data);
- }
-
- @Override
- public void onBindViewHolder(BaseViewHolder holder, int positions) {
- super.onBindViewHolder(holder, positions);
- TextView monthTitleView = holder.getView(R.id.monthTitleView);
- monthTitleView.setText(mList.get(positions).getDate());
- }
-
- @Override
- protected void convert(final BaseViewHolder helper, final DateInfo item) {
- RecyclerView monthRecyclerView = helper.getView(R.id.monthRecyclerView);
-
- GridLayoutManager manager = new GridLayoutManager(activity, 7);
- monthRecyclerView.setLayoutManager(manager);
- final TempAdapter groupAdapter = new TempAdapter(item.getList());
- monthRecyclerView.setAdapter(groupAdapter);
- monthRecyclerView.setItemViewCacheSize(200);
- monthRecyclerView.setHasFixedSize(true);
- monthRecyclerView.setNestedScrollingEnabled(false);
- groupAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
- @Override
- public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
- if (!item.getList().get(position).isEnable()) return;
- if (TextUtils.isEmpty(item.getList().get(position).getName())) return;
- if (TextUtils.isEmpty(item.getList().get(position).getDate())) return;
- int status = item.getList().get(position).getStatus();
- if (status == 0 &&
- startGroupPosition == -1 &&
- startChildPosition == -1 &&
- item.getList().get(position).isEnable()) {
- //开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
-
- startDateView.setText(CalendarUtil.FormatDateMD(item.getList().get(position).getDate()));
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- if (status == 0 && endGroupPosition == -1 && endChildPosition == -1) {
- int offset = Integer.parseInt(CalendarUtil.getTwoDay(item.getList().get(position).getDate()
- , mList.get(startGroupPosition).getList().get(startChildPosition).getDate()));
- //判断该离开日期是否比入住时间还小,是则重新设置入住时间。
- if (offset < 0) {
- //刷新上一个开始日期
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- //设置新的入开始日期
- item.getList().get(position).setStatus(1);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- adapter.notifyItemChanged(position);
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- item.getList().get(position).setStatus(2);
- adapter.notifyItemChanged(position);
- endGroupPosition = helper.getAdapterPosition();
- endChildPosition = position;
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- return;
- }
- //重置开始和结束时间,设置开始时间
- if (status == 0 && endGroupPosition != -1 && endChildPosition != -1 && startChildPosition != -1 && startGroupPosition != -1) {
- //重置开始和结束
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mList.get(endGroupPosition).getList().get(endChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- mDateAdapter.notifyItemChanged(endGroupPosition);
- //重置选择间区的状态
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), false);
- //设置开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
-
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- endGroupPosition = -1;
- endChildPosition = -1;
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- }
- }
- });
- }
-
- void updateData() {
- notifyDataSetChanged();
- }
- }
-
- private class TempAdapter extends BaseQuickAdapter {
- TempAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date_child, data);
- }
-
- @Override
- protected void convert(BaseViewHolder helper, DayInfo item) {
- String name = item.getName();
- boolean isSelect = item.isSelect();
- boolean isEnable = item.isEnable();
- int status = item.getStatus();
- helper.setText(R.id.dateView, name);
- //默认
- if (status == 0) {
- if (isSelect) {
- //选中
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else {
- //没选中状态
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.black));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.white));
- }
- } else if (status == 1) {
- //开始
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, startDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else if (status == 2) {
- //结束
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, endDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- }
- //设置当前日期前的样式,没选中,并状态为0情况下
- if (!isSelect && status == 0) {
- if (!isEnable) {
- //无效
- TextView textView = helper.getView(R.id.dateDelView);
- if (TextUtils.isEmpty(name)) {
- textView.setVisibility(View.GONE);
- } else {
- textView.setText(name);
- textView.setVisibility(View.VISIBLE);
- }
- textView.setTextColor(activity.getResources().getColor(R.color.mainThemeColor));
- helper.getView(R.id.dateView).setVisibility(View.GONE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- } else {
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- TextView textView = helper.getView(R.id.dateView);
- textView.setTextColor(activity.getResources().getColor(R.color.black));
- }
- }
- }
- }
-
- private class ShareDismissListener implements OnDismissListener {
- @Override
- public void onDismiss() {
- backgroundAlpha(activity);
- }
- }
-
- private void initButton(String msg, boolean enable) {
- selectDoneButton.setText(msg);
- if (enable) {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.mainThemeColor));
- } else {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.hintTextColor));
- }
- selectDoneButton.setEnabled(enable);
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java
deleted file mode 100755
index 9bffa8e..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-public class DayInfo {
- private String name;
- private boolean isEnable;
- private String date;
- private int status = 0;
- private boolean select;
-
- boolean isSelect() {
- return select;
- }
-
- void setSelect(boolean select) {
- this.select = select;
- }
-
- int getStatus() {
- return status;
- }
-
- void setStatus(int status) {
- this.status = status;
- }
-
- String getDate() {
- return date;
- }
-
- void setDate(String date) {
- this.date = date;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- boolean isEnable() {
- return isEnable;
- }
-
- void setEnable(boolean enable) {
- isEnable = enable;
- }
-}
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 13bc9ef..1416b2c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -28,7 +28,9 @@
+
+
@@ -60,7 +62,12 @@
+
+
+
+
+
@@ -80,7 +87,9 @@
+
+
diff --git a/app/build.gradle b/app/build.gradle
index a4ee6d9..2e1bb36 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -109,7 +109,6 @@
implementation 'com.amap.api:location:5.3.1'
//经纬度逆编码
implementation 'com.amap.api:search:8.1.0'
- implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
//桌面角标
implementation "me.leolin:ShortcutBadger:1.1.22@aar"
}
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
index 4a0b2bb..00f69ae 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
@@ -16,11 +16,11 @@
import com.casic.dcms.databinding.ActivityCleanRecordsBinding;
import com.casic.dcms.mvvm.model.CleanRecordBean;
import com.casic.dcms.mvvm.vm.ToiletViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
import com.casic.dcms.utils.StringHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -41,14 +41,8 @@
private RecordListAdapter adapter;
private WeakReferenceHandler weakReferenceHandler;
private int pageIndex = 1;
- private String start;
- private String end;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -63,7 +57,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class);
- toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex);
+ }
+
+ @Override
+ protected void onResume() {
+ obtainCleanRecordList("", "");
+ super.onResume();
}
@Override
@@ -71,23 +70,26 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(CleaningRecordsActivity.this, CalendarUtil.obtainLastTwoMonth(), view)
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
-
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
- obtainCleanRecordList();
+ obtainCleanRecordList(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +98,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +106,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
@@ -146,7 +148,7 @@
});
}
- private void obtainCleanRecordList() {
+ private void obtainCleanRecordList(String start, String end) {
toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex);
}
@@ -161,7 +163,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
index aa0d7a9..8741e2f 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
@@ -14,10 +14,10 @@
import com.casic.dcms.databinding.ActivityMaintainRecordBinding;
import com.casic.dcms.mvvm.model.MaintainRecordBean;
import com.casic.dcms.mvvm.vm.BridgeViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -37,15 +37,9 @@
private List dataBeans = new ArrayList<>();
private WeakReferenceHandler weakReferenceHandler;
private MaintainRecordAdapter adapter;
- private String start;
- private String end;
private int pageIndex = 1;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -60,8 +54,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class);
+ }
- obtainMaintainRecord();
+ @Override
+ protected void onResume() {
+ obtainMaintainRecord("", "");
+ super.onResume();
}
@Override
@@ -69,25 +67,28 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), view) //初始化
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
- //点击完成按钮后回调返回方法
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +97,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +105,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
@@ -145,7 +146,7 @@
});
}
- private void obtainMaintainRecord() {
+ private void obtainMaintainRecord(String start, String end) {
bridgeViewModel.obtainMaintainRecord(start, end, pageIndex);
}
@@ -160,7 +161,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
new file mode 100644
index 0000000..397a389
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
@@ -0,0 +1,220 @@
+package com.casic.dcms.widgets;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import androidx.fragment.app.FragmentManager;
+
+import com.casic.dcms.R;
+import com.casic.dcms.utils.LocaleConstant;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.utils.ColorUtil;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
+import com.pengxh.androidx.lite.utils.TimeOrDateUtil;
+import com.pengxh.androidx.lite.widget.EasyToast;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+public class DateSelectDialog extends Dialog {
+
+ private final Context ctx;
+ private final String title;
+ private final String negativeBtn;
+ private final String positiveBtn;
+ private final OnDialogButtonClickListener listener;
+ private final FragmentManager fragmentManager;
+ private final Type type;
+
+ private DateSelectDialog(Builder builder) {
+ super(builder.context);
+ this.ctx = builder.context;
+ this.title = builder.title;
+ this.negativeBtn = builder.negativeBtn;
+ this.positiveBtn = builder.positiveBtn;
+ this.listener = builder.listener;
+ this.fragmentManager = builder.fragmentManager;
+ this.type = builder.type;
+ }
+
+ public static class Builder {
+ private Context context;
+ private String title;
+ private String negativeBtn;
+ private String positiveBtn;
+ private OnDialogButtonClickListener listener;
+ private FragmentManager fragmentManager;
+ private Type type;
+
+ public Builder setContext(Context context) {
+ this.context = context;
+ return this;
+ }
+
+ public Builder setTitle(String title) {
+ this.title = title;
+ return this;
+ }
+
+ public Builder setNegativeButton(String name) {
+ this.negativeBtn = name;
+ return this;
+ }
+
+ public Builder setPositiveButton(String name) {
+ this.positiveBtn = name;
+ return this;
+ }
+
+ public Builder setOnDialogButtonClickListener(OnDialogButtonClickListener listener) {
+ this.listener = listener;
+ return this;
+ }
+
+ public Builder setFragmentManager(FragmentManager fragmentManager) {
+ this.fragmentManager = fragmentManager;
+ return this;
+ }
+
+ public Builder setCalendarType(Type calendarType) {
+ this.type = calendarType;
+ return this;
+ }
+
+ public DateSelectDialog build() {
+ return new DateSelectDialog(this);
+ }
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ DialogLayoutParam.resetParams(this, Gravity.CENTER, R.style.UserDefinedAnimation, 0.85);
+ setContentView(R.layout.dialog_select_date);
+ setCancelable(false);
+ setCanceledOnTouchOutside(false);
+
+
+ if (!TextUtils.isEmpty(title)) {
+ ((TextView) findViewById(R.id.dialogTitleView)).setText(title);
+ }
+
+ EditText startDateView = findViewById(R.id.startDateView);
+ startDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ startDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ EditText endDateView = findViewById(R.id.endDateView);
+ endDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ endDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ Button dialogCancelButton = findViewById(R.id.dialogCancelButton);
+ dialogCancelButton.setText(negativeBtn);
+ dialogCancelButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ listener.onCancelClick();
+ dismiss();
+ }
+ });
+
+ Button dialogConfirmButton = findViewById(R.id.dialogConfirmButton);
+ dialogConfirmButton.setText(positiveBtn);
+ dialogConfirmButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //判断其实时间和结束时间
+ String startDate = startDateView.getText().toString();
+ String endDate = endDateView.getText().toString();
+ if (isEarlierThanStart(startDate, endDate)) {
+ EasyToast.show(ctx, "结束时间不能早于开始时间");
+ return;
+ }
+ listener.onConfirmClick(startDate, endDate);
+ dismiss();
+ }
+ });
+ }
+
+ public interface OnDialogButtonClickListener {
+ void onConfirmClick(String startDate, String endDate);
+
+ void onCancelClick();
+ }
+
+ /**
+ * 判断时间是否早于当前时间
+ */
+ private boolean isEarlierThanStart(String start, String end) {
+ if (TextUtils.isEmpty(start) || TextUtils.isEmpty(end)) {
+ return false;
+ }
+ SimpleDateFormat dateFormat;
+ if (type == Type.ALL) {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
+ } else {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
+ }
+ try {
+ return dateFormat.parse(start).getTime() > dateFormat.parse(end).getTime();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
index b4e5dcb..c814a2b 100644
--- a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
+++ b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
@@ -2,19 +2,15 @@
import android.app.Dialog;
import android.content.Context;
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
+import android.widget.Button;
import android.widget.TextView;
import com.casic.dcms.R;
-import com.casic.dcms.base.BaseApplication;
import com.casic.dcms.utils.TimeOrDateUtil;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
import java.util.Timer;
import java.util.TimerTask;
@@ -37,16 +33,7 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
- //手动设置dialog宽度
- Window window = getWindow();
- window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
- window.getDecorView().setBackgroundColor(Color.TRANSPARENT);
- WindowManager.LayoutParams params = window.getAttributes();
- params.width = QMUIDisplayHelper.dp2px(BaseApplication.getInstance(), 300);
- params.height = WindowManager.LayoutParams.WRAP_CONTENT;
- window.setAttributes(params);
-
+ DialogLayoutParam.resetParams(this, 0.85);
setContentView(R.layout.dialog_sign_in);
timer = new Timer();
initView();
@@ -69,8 +56,8 @@
if (!TextUtils.isEmpty(address)) {
signInPlaceView.setText(address);
}
- TextView signInView = findViewById(R.id.signInView);
- signInView.setOnClickListener(this);
+ Button signInButton = findViewById(R.id.signInButton);
+ signInButton.setOnClickListener(this);
}
@Override
@@ -84,7 +71,7 @@
@Override
public void onClick(View view) {
int i = view.getId();
- if (i == R.id.signInView) {
+ if (i == R.id.signInButton) {
if (listener != null) {
listener.onViewClick();
}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
deleted file mode 100755
index 122b863..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import java.util.List;
-
-public class DateInfo {
- private String date;
- private List list;
-
- public String getDate() {
- return date;
- }
-
- public void setDate(String date) {
- this.date = date;
- }
-
- public List getList() {
- return list;
- }
-
- public void setList(List list) {
- this.list = list;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
deleted file mode 100755
index 7fdb45f..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
+++ /dev/null
@@ -1,647 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.Context;
-import android.graphics.drawable.BitmapDrawable;
-import android.text.TextUtils;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.LinearLayout;
-import android.widget.PopupWindow;
-import android.widget.TextView;
-
-import androidx.annotation.Nullable;
-import androidx.core.app.ActivityCompat;
-import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.utils.CalendarUtil;
-import com.chad.library.adapter.base.BaseQuickAdapter;
-import com.chad.library.adapter.base.BaseViewHolder;
-import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-
-@SuppressLint("SetTextI18n")
-public class DatePopupWindow extends PopupWindow {
- private static final String TAG = "DatePopupWindow";
- private final View rootView;
- private QMUIRoundButton selectDoneButton;
- private RecyclerView dateRecyclerView;
- private TextView hintTextTextView;
- private TextView endWeekView;
- private TextView endDateView;
- private LinearLayout endDateLayout;
- private TextView sumTimeView;
- private TextView startWeekView;
- private TextView startDateView;
-
- private final boolean dayFlag;
- private final Activity activity;
- private Date mSetDate;
- private final String currentDate;
- private final String startDesc;
- private final String endDesc;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private int childPosition = -1;//当天在列表中的子索引
- private DateAdapter mDateAdapter;
- private List mList;
- private final DateOnClickListener mOnClickListener;
-
- private DatePopupWindow(Builder builder) {
- this.activity = builder.activity;
- this.currentDate = builder.date;
- this.startDesc = builder.startDesc;
- this.endDesc = builder.endDesc;
- this.dayFlag = builder.dayFlag;
- this.startGroupPosition = builder.startGroupPosition;
- this.startChildPosition = builder.startChildPosition;
- this.endGroupPosition = builder.endGroupPosition;
- this.endChildPosition = builder.endChildPosition;
- this.mOnClickListener = builder.mOnClickListener;
-
- LayoutInflater inflater = (LayoutInflater) this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- rootView = inflater.inflate(R.layout.popu_date, null);
- this.setContentView(rootView);
- this.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setAnimationStyle(R.style.dialogWindowAnim);
- this.setFocusable(true);
- this.setBackgroundDrawable(new BitmapDrawable());
- this.setOnDismissListener(new ShareDismissListener());
- backgroundAlpha(activity);
-
- initView();
- setInitSelect();
- create(builder.parentView);
- }
-
- private void backgroundAlpha(Activity context) {
- WindowManager.LayoutParams lp = context.getWindow().getAttributes();
- lp.alpha = 1.0f; //0.0-1.0
- context.getWindow().setAttributes(lp);
- }
-
- private void initView() {
- selectDoneButton = rootView.findViewById(R.id.selectDoneButton);
- dateRecyclerView = rootView.findViewById(R.id.dateRecyclerView);
- hintTextTextView = rootView.findViewById(R.id.hintTextTextView);
- endWeekView = rootView.findViewById(R.id.endWeekView);
- endDateView = rootView.findViewById(R.id.endDateView);
- endDateLayout = rootView.findViewById(R.id.endDateLayout);
- sumTimeView = rootView.findViewById(R.id.sumTimeView);
- startWeekView = rootView.findViewById(R.id.startWeekView);
- startDateView = rootView.findViewById(R.id.startDateView);
- TextView clearButton = rootView.findViewById(R.id.clearButton);
- TextView closeButton = rootView.findViewById(R.id.closeButton);
- TextView startDateDescView = rootView.findViewById(R.id.startDateDescView);
- TextView endDateDescView = rootView.findViewById(R.id.endDateDescView);
- startDateDescView.setText(startDesc + "日期");
- endDateDescView.setText(endDesc + "日期");
- selectDoneButton.setChangeAlphaWhenPress(true);
- selectDoneButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mOnClickListener != null) {
- String startDate = mList.get(startGroupPosition)
- .getList()
- .get(startChildPosition)
- .getDate();
- String endDate = mList.get(endGroupPosition)
- .getList()
- .get(endChildPosition)
- .getDate();
- mOnClickListener.getDate(startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition);
- }
- DatePopupWindow.this.dismiss();
- }
- });
- closeButton.setOnClickListener(v -> DatePopupWindow.this.dismiss());
- clearButton.setOnClickListener(v -> {
- initView();//重置当前view
- setDefaultSelect();//选中初始状态值
- });
- LinearLayoutManager manager = new LinearLayoutManager(activity);
- manager.setOrientation(LinearLayoutManager.VERTICAL);
- mList = new ArrayList<>();
- mDateAdapter = new DateAdapter(mList);
- dateRecyclerView.setLayoutManager(manager);
- dateRecyclerView.setAdapter(mDateAdapter);
- dateRecyclerView.setItemViewCacheSize(200);
- dateRecyclerView.setHasFixedSize(true);
- dateRecyclerView.setNestedScrollingEnabled(false);
- initData();
- }
-
- private void initData() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);//当前日期转date
- try {
- if (currentDate == null) {
- return;
- }
- mSetDate = dateFormat.parse(currentDate);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //初始化日期
- Calendar c = Calendar.getInstance();
- c.setTime(mSetDate);
- int firstM = c.get(Calendar.MONTH) + 1;//获取月份 月份是从0开始,需要+1
- int days = c.get(Calendar.DATE);//日期
- int week = c.get(Calendar.DAY_OF_WEEK);//周几
- //获取当前这个月最大天数
- int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- DateInfo month = new DateInfo();
- List dayList = new ArrayList<>();
- month.setDate(c.get(Calendar.YEAR) + "年" + firstM + "月");
- //当前月第一天是周几
- int w = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < w; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- dayList.add(dayInfo);
- }
- //计算当前月的天数
- for (int i = 1; i <= maxDay; i++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName(i + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + i);
- int c_year = Integer.parseInt(currentDate.split("-")[0]);
- int c_month = Integer.parseInt(currentDate.split("-")[1]);
- int c_day = Integer.parseInt(currentDate.split("-")[2]);
- if (c_year == c.get(Calendar.YEAR) && c_month == (c.get(Calendar.MONTH) + 1) && c_day == i) {
- childPosition = dayList.size();
- }
- //设置日期是否可选择
- dayInfo.setEnable(i >= days);
- dayList.add(dayInfo);
- }
- month.setList(dayList);
- mList.add(month);
- //获取下2个月的数据
- for (int i = 1; i <= 2; i++) {
- //当前月份循环减1
- c.add(Calendar.MONTH, 1);
- DateInfo nextMonth = new DateInfo();
- List nextDayList = new ArrayList<>();
- int maxDays = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- nextMonth.setDate(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月");
- //周几
- int weeks = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < weeks; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- nextDayList.add(dayInfo);
- }
- //该月的所有日期
- for (int j = 0; j < maxDays; j++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName((j + 1) + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + (j + 1));
- dayInfo.setEnable((j + 1) <= days || i != 2);
- nextDayList.add(dayInfo);
- }
- nextMonth.setList(nextDayList);
- mList.add(nextMonth);
- }
- mDateAdapter.updateData();
- }
-
- private void setInitSelect() {
- if (0 <= this.startGroupPosition && this.startGroupPosition < mList.size() &&
- 0 <= this.endGroupPosition && this.endGroupPosition < mList.size()) {
- int maxStartChild = mList.get(this.startGroupPosition).getList().size();
- int maxEndChild = mList.get(this.endGroupPosition).getList().size();
- if (0 <= this.startChildPosition && this.startChildPosition < maxStartChild &&
- 0 <= this.endChildPosition && this.endChildPosition < maxEndChild) {
- setInit();
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- }
-
- private void setInit() {
- mList.get(this.startGroupPosition).getList().get(this.startChildPosition).setStatus(1);
- mList.get(this.endGroupPosition).getList().get(this.endChildPosition).setStatus(2);
- mDateAdapter.notifyDataSetChanged();
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- dateRecyclerView.scrollToPosition(this.startGroupPosition);
- }
-
- //设置日历标明当前日期的状态
- private void setDefaultSelect() {
- if (childPosition == -1) return;
- String date = mList.get(0).getList().get(childPosition).getDate();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Date curDate = null;
- try {
- curDate = sdf.parse(formatDate(date));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- if (curDate == null) return;
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(curDate);
- calendar.add(Calendar.DATE, 1);
-
- int year = Integer.parseInt(date.split("-")[0]);
- int month = Integer.parseInt(date.split("-")[1]);
- if (year == calendar.get(Calendar.YEAR) && month == calendar.get(Calendar.MONTH) + 1
- && childPosition < mList.get(0).getList().size() - 1) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 0;
- this.endChildPosition = childPosition - 1;
- setInit();
- } else {
- for (int i = 0; i < mList.get(1).getList().size(); i++) {
- if (!TextUtils.isEmpty(mList.get(1).getList().get(i).getDate())) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 1;
- this.endChildPosition = i;
- setInit();
- break;
- }
- }
- }
- }
-
- /**
- * 设置起始时间和结束时间的选中标识,或者设置不选中
- *
- * @param startDate
- * @param endDate
- * @param status 选中设置为true 设置不选中false
- */
- @SuppressLint("SetTextI18n")
- private void getOffsetDate(String startDate, String endDate, boolean status) {
- //更新开始日期和结束日期的信息和状态
- Calendar sCalendar = CalendarUtil.toDate(startDate);
- Calendar eCalendar = CalendarUtil.toDate(endDate);
- startDateView.setText((sCalendar.get(Calendar.MONTH) + 1) + "月" + sCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(startDate));
- endDateView.setText((eCalendar.get(Calendar.MONTH) + 1) + "月" + eCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- endWeekView.setText("周" + CalendarUtil.getWeekByFormat(endDate));
- int daysOffset = Integer.parseInt(CalendarUtil.getTwoDay(endDate, startDate));
- if (daysOffset < 0) return;
- if (dayFlag) {
- sumTimeView.setText("共" + (daysOffset + 1) + "天");
- } else {
- sumTimeView.setText("共" + daysOffset + "晚");
- }
- //更改结束日期和完成按钮状态
- endDateLayout.setVisibility(View.VISIBLE);
- hintTextTextView.setVisibility(View.GONE);
- initButton("完成", true);
-
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Calendar c = Calendar.getInstance();
- DayInfo info = mList.get(startGroupPosition).getList().get(startChildPosition);
- try {
- c.setTime(sdf.parse(info.getDate()));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //根据2个时间的相差天数去循环
- for (int i = 0; i < daysOffset; i++) {
- //下一天(目标天)
- c.add(Calendar.DATE, 1);
- //改天的日期(目标天)
- String d = c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE);
- //循环group列表
- for (int j = 0; j < mList.size(); j++) {
- //获取该月的随机一个dayInfo
- DayInfo dayInfo = mList.get(j).getList().get(mList.get(j).getList().size() - 1);
- boolean isCheck = false;
- //判断该天是否和目标天是否是同一个月
- if (!TextUtils.isEmpty(dayInfo.getDate())
- && Integer.parseInt(dayInfo.getDate().split("-")[0]) == (c.get(Calendar.YEAR))
- && Integer.parseInt(dayInfo.getDate().split("-")[1]) == ((c.get(Calendar.MONTH) + 1))) {
- //是同一个月,则循环该月多有天数
- for (int t = 0; t < mList.get(j).getList().size(); t++) {
- //找到该月的日期与目标日期相同,存在,设置选择标记
- if (mList.get(j).getList().get(t).getDate().equals(d)) {
- mList.get(j).getList().get(t).setSelect(status);
- isCheck = true;
- break;
- }
- }
- }
- if (isCheck) {
- mDateAdapter.notifyItemChanged(j);
- break;
- }
- }
- }
- }
-
- private String formatDate(String date) {
- if (TextUtils.isEmpty(date)) return "";
- return date.split("-")[0] +
- "-" +
- (date.split("-")[1].length() < 2 ? "0" + date.split("-")[1] : date.split("-")[1]) +
- "-" +
- (date.split("-")[2].length() < 2 ? "0" + date.split("-")[2] : date.split("-")[2]);
- }
-
- private void create(View view) {
- this.showAtLocation(view, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
- }
-
- /**
- * return startDate、endDate(格式:2012-12-10)
- * 选中完成后返回开始时间和结束时间
- * return startGroupPosition、startChildPosition、endGroupPosition、endChildPosition
- * 返回选中时间区间的状态标记,监听中接收后在builder中setInitSelect()方法中直接传出入(可用于记录上次选中的状态,用户再点击进入的时候恢复上一次的区间选中状态)
- */
- public interface DateOnClickListener {
- void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition);
- }
-
- public static class Builder {
- private final String date;
- private final Activity activity;
- private final View parentView;
- private String startDesc;
- private String endDesc;
- private boolean dayFlag = true;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private DateOnClickListener mOnClickListener = null;
-
- public Builder(Activity activity, Date date, View parentView) {
- this.date = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(date);
- this.activity = activity;
- this.parentView = parentView;
- this.startDesc = "开始";
- this.endDesc = "结束";
- this.dayFlag = true;
- }
-
- public DatePopupWindow builder() {
- return new DatePopupWindow(this);
- }
-
- public Builder setInitSelect(int startGroup, int startChild, int endGroup, int endChild) {
- this.startGroupPosition = startGroup;
- this.startChildPosition = startChild;
- this.endGroupPosition = endGroup;
- this.endChildPosition = endChild;
- return this;
- }
-
- public Builder setInitDay(boolean dayFlag) {
- this.dayFlag = dayFlag;
- if (dayFlag) {
- this.startDesc = "开始";
- this.endDesc = "结束";
- } else {
- this.startDesc = "入住";
- this.endDesc = "离开";
- }
- return this;
- }
-
- public Builder setDateOnClickListener(DateOnClickListener mlListener) {
- mOnClickListener = mlListener;
- return this;
- }
- }
-
- private class DateAdapter extends BaseQuickAdapter {
-
- DateAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date, data);
- }
-
- @Override
- public void onBindViewHolder(BaseViewHolder holder, int positions) {
- super.onBindViewHolder(holder, positions);
- TextView monthTitleView = holder.getView(R.id.monthTitleView);
- monthTitleView.setText(mList.get(positions).getDate());
- }
-
- @Override
- protected void convert(final BaseViewHolder helper, final DateInfo item) {
- RecyclerView monthRecyclerView = helper.getView(R.id.monthRecyclerView);
-
- GridLayoutManager manager = new GridLayoutManager(activity, 7);
- monthRecyclerView.setLayoutManager(manager);
- final TempAdapter groupAdapter = new TempAdapter(item.getList());
- monthRecyclerView.setAdapter(groupAdapter);
- monthRecyclerView.setItemViewCacheSize(200);
- monthRecyclerView.setHasFixedSize(true);
- monthRecyclerView.setNestedScrollingEnabled(false);
- groupAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
- @Override
- public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
- if (!item.getList().get(position).isEnable()) return;
- if (TextUtils.isEmpty(item.getList().get(position).getName())) return;
- if (TextUtils.isEmpty(item.getList().get(position).getDate())) return;
- int status = item.getList().get(position).getStatus();
- if (status == 0 &&
- startGroupPosition == -1 &&
- startChildPosition == -1 &&
- item.getList().get(position).isEnable()) {
- //开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
-
- startDateView.setText(CalendarUtil.FormatDateMD(item.getList().get(position).getDate()));
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- if (status == 0 && endGroupPosition == -1 && endChildPosition == -1) {
- int offset = Integer.parseInt(CalendarUtil.getTwoDay(item.getList().get(position).getDate()
- , mList.get(startGroupPosition).getList().get(startChildPosition).getDate()));
- //判断该离开日期是否比入住时间还小,是则重新设置入住时间。
- if (offset < 0) {
- //刷新上一个开始日期
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- //设置新的入开始日期
- item.getList().get(position).setStatus(1);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- adapter.notifyItemChanged(position);
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- item.getList().get(position).setStatus(2);
- adapter.notifyItemChanged(position);
- endGroupPosition = helper.getAdapterPosition();
- endChildPosition = position;
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- return;
- }
- //重置开始和结束时间,设置开始时间
- if (status == 0 && endGroupPosition != -1 && endChildPosition != -1 && startChildPosition != -1 && startGroupPosition != -1) {
- //重置开始和结束
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mList.get(endGroupPosition).getList().get(endChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- mDateAdapter.notifyItemChanged(endGroupPosition);
- //重置选择间区的状态
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), false);
- //设置开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
-
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- endGroupPosition = -1;
- endChildPosition = -1;
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- }
- }
- });
- }
-
- void updateData() {
- notifyDataSetChanged();
- }
- }
-
- private class TempAdapter extends BaseQuickAdapter {
- TempAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date_child, data);
- }
-
- @Override
- protected void convert(BaseViewHolder helper, DayInfo item) {
- String name = item.getName();
- boolean isSelect = item.isSelect();
- boolean isEnable = item.isEnable();
- int status = item.getStatus();
- helper.setText(R.id.dateView, name);
- //默认
- if (status == 0) {
- if (isSelect) {
- //选中
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else {
- //没选中状态
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.black));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.white));
- }
- } else if (status == 1) {
- //开始
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, startDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else if (status == 2) {
- //结束
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, endDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- }
- //设置当前日期前的样式,没选中,并状态为0情况下
- if (!isSelect && status == 0) {
- if (!isEnable) {
- //无效
- TextView textView = helper.getView(R.id.dateDelView);
- if (TextUtils.isEmpty(name)) {
- textView.setVisibility(View.GONE);
- } else {
- textView.setText(name);
- textView.setVisibility(View.VISIBLE);
- }
- textView.setTextColor(activity.getResources().getColor(R.color.mainThemeColor));
- helper.getView(R.id.dateView).setVisibility(View.GONE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- } else {
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- TextView textView = helper.getView(R.id.dateView);
- textView.setTextColor(activity.getResources().getColor(R.color.black));
- }
- }
- }
- }
-
- private class ShareDismissListener implements OnDismissListener {
- @Override
- public void onDismiss() {
- backgroundAlpha(activity);
- }
- }
-
- private void initButton(String msg, boolean enable) {
- selectDoneButton.setText(msg);
- if (enable) {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.mainThemeColor));
- } else {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.hintTextColor));
- }
- selectDoneButton.setEnabled(enable);
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java
deleted file mode 100755
index 9bffa8e..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-public class DayInfo {
- private String name;
- private boolean isEnable;
- private String date;
- private int status = 0;
- private boolean select;
-
- boolean isSelect() {
- return select;
- }
-
- void setSelect(boolean select) {
- this.select = select;
- }
-
- int getStatus() {
- return status;
- }
-
- void setStatus(int status) {
- this.status = status;
- }
-
- String getDate() {
- return date;
- }
-
- void setDate(String date) {
- this.date = date;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- boolean isEnable() {
- return isEnable;
- }
-
- void setEnable(boolean enable) {
- isEnable = enable;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java
deleted file mode 100755
index 7bc6dbf..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.util.AttributeSet;
-
-import androidx.annotation.Nullable;
-import androidx.appcompat.widget.AppCompatTextView;
-
-import com.casic.dcms.R;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
-
-/**
- * 不可选日期斜线
- */
-public class LineTextView extends AppCompatTextView {
- private Paint mPaint;
- private Context context;
-
- public LineTextView(Context context, @Nullable AttributeSet attrs) {
- super(context, attrs);
- this.context = context;
- mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
- mPaint.setStrokeWidth(QMUIDisplayHelper.dp2px(context, 1));
- mPaint.setColor(getResources().getColor(R.color.punishColor));
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- //斜线坐标
- int startX, startY, endX, endY;
-
- //视图宽高
- int width = getWidth();
- int height = getHeight();
-
- //计算坐标
- startX = width;
- startY = QMUIDisplayHelper.dp2px(context, 2);
- endX = 0;
- endY = height - QMUIDisplayHelper.dp2px(context, 3);
- //画斜线
- canvas.drawLine(startX, startY, endX, endY, mPaint);
- }
-}
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 13bc9ef..1416b2c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -28,7 +28,9 @@
+
+
@@ -60,7 +62,12 @@
+
+
+
+
+
@@ -80,7 +87,9 @@
+
+
diff --git a/app/build.gradle b/app/build.gradle
index a4ee6d9..2e1bb36 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -109,7 +109,6 @@
implementation 'com.amap.api:location:5.3.1'
//经纬度逆编码
implementation 'com.amap.api:search:8.1.0'
- implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
//桌面角标
implementation "me.leolin:ShortcutBadger:1.1.22@aar"
}
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
index 4a0b2bb..00f69ae 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
@@ -16,11 +16,11 @@
import com.casic.dcms.databinding.ActivityCleanRecordsBinding;
import com.casic.dcms.mvvm.model.CleanRecordBean;
import com.casic.dcms.mvvm.vm.ToiletViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
import com.casic.dcms.utils.StringHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -41,14 +41,8 @@
private RecordListAdapter adapter;
private WeakReferenceHandler weakReferenceHandler;
private int pageIndex = 1;
- private String start;
- private String end;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -63,7 +57,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class);
- toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex);
+ }
+
+ @Override
+ protected void onResume() {
+ obtainCleanRecordList("", "");
+ super.onResume();
}
@Override
@@ -71,23 +70,26 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(CleaningRecordsActivity.this, CalendarUtil.obtainLastTwoMonth(), view)
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
-
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
- obtainCleanRecordList();
+ obtainCleanRecordList(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +98,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +106,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
@@ -146,7 +148,7 @@
});
}
- private void obtainCleanRecordList() {
+ private void obtainCleanRecordList(String start, String end) {
toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex);
}
@@ -161,7 +163,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
index aa0d7a9..8741e2f 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
@@ -14,10 +14,10 @@
import com.casic.dcms.databinding.ActivityMaintainRecordBinding;
import com.casic.dcms.mvvm.model.MaintainRecordBean;
import com.casic.dcms.mvvm.vm.BridgeViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -37,15 +37,9 @@
private List dataBeans = new ArrayList<>();
private WeakReferenceHandler weakReferenceHandler;
private MaintainRecordAdapter adapter;
- private String start;
- private String end;
private int pageIndex = 1;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -60,8 +54,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class);
+ }
- obtainMaintainRecord();
+ @Override
+ protected void onResume() {
+ obtainMaintainRecord("", "");
+ super.onResume();
}
@Override
@@ -69,25 +67,28 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), view) //初始化
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
- //点击完成按钮后回调返回方法
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +97,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +105,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
@@ -145,7 +146,7 @@
});
}
- private void obtainMaintainRecord() {
+ private void obtainMaintainRecord(String start, String end) {
bridgeViewModel.obtainMaintainRecord(start, end, pageIndex);
}
@@ -160,7 +161,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
new file mode 100644
index 0000000..397a389
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
@@ -0,0 +1,220 @@
+package com.casic.dcms.widgets;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import androidx.fragment.app.FragmentManager;
+
+import com.casic.dcms.R;
+import com.casic.dcms.utils.LocaleConstant;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.utils.ColorUtil;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
+import com.pengxh.androidx.lite.utils.TimeOrDateUtil;
+import com.pengxh.androidx.lite.widget.EasyToast;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+public class DateSelectDialog extends Dialog {
+
+ private final Context ctx;
+ private final String title;
+ private final String negativeBtn;
+ private final String positiveBtn;
+ private final OnDialogButtonClickListener listener;
+ private final FragmentManager fragmentManager;
+ private final Type type;
+
+ private DateSelectDialog(Builder builder) {
+ super(builder.context);
+ this.ctx = builder.context;
+ this.title = builder.title;
+ this.negativeBtn = builder.negativeBtn;
+ this.positiveBtn = builder.positiveBtn;
+ this.listener = builder.listener;
+ this.fragmentManager = builder.fragmentManager;
+ this.type = builder.type;
+ }
+
+ public static class Builder {
+ private Context context;
+ private String title;
+ private String negativeBtn;
+ private String positiveBtn;
+ private OnDialogButtonClickListener listener;
+ private FragmentManager fragmentManager;
+ private Type type;
+
+ public Builder setContext(Context context) {
+ this.context = context;
+ return this;
+ }
+
+ public Builder setTitle(String title) {
+ this.title = title;
+ return this;
+ }
+
+ public Builder setNegativeButton(String name) {
+ this.negativeBtn = name;
+ return this;
+ }
+
+ public Builder setPositiveButton(String name) {
+ this.positiveBtn = name;
+ return this;
+ }
+
+ public Builder setOnDialogButtonClickListener(OnDialogButtonClickListener listener) {
+ this.listener = listener;
+ return this;
+ }
+
+ public Builder setFragmentManager(FragmentManager fragmentManager) {
+ this.fragmentManager = fragmentManager;
+ return this;
+ }
+
+ public Builder setCalendarType(Type calendarType) {
+ this.type = calendarType;
+ return this;
+ }
+
+ public DateSelectDialog build() {
+ return new DateSelectDialog(this);
+ }
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ DialogLayoutParam.resetParams(this, Gravity.CENTER, R.style.UserDefinedAnimation, 0.85);
+ setContentView(R.layout.dialog_select_date);
+ setCancelable(false);
+ setCanceledOnTouchOutside(false);
+
+
+ if (!TextUtils.isEmpty(title)) {
+ ((TextView) findViewById(R.id.dialogTitleView)).setText(title);
+ }
+
+ EditText startDateView = findViewById(R.id.startDateView);
+ startDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ startDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ EditText endDateView = findViewById(R.id.endDateView);
+ endDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ endDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ Button dialogCancelButton = findViewById(R.id.dialogCancelButton);
+ dialogCancelButton.setText(negativeBtn);
+ dialogCancelButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ listener.onCancelClick();
+ dismiss();
+ }
+ });
+
+ Button dialogConfirmButton = findViewById(R.id.dialogConfirmButton);
+ dialogConfirmButton.setText(positiveBtn);
+ dialogConfirmButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //判断其实时间和结束时间
+ String startDate = startDateView.getText().toString();
+ String endDate = endDateView.getText().toString();
+ if (isEarlierThanStart(startDate, endDate)) {
+ EasyToast.show(ctx, "结束时间不能早于开始时间");
+ return;
+ }
+ listener.onConfirmClick(startDate, endDate);
+ dismiss();
+ }
+ });
+ }
+
+ public interface OnDialogButtonClickListener {
+ void onConfirmClick(String startDate, String endDate);
+
+ void onCancelClick();
+ }
+
+ /**
+ * 判断时间是否早于当前时间
+ */
+ private boolean isEarlierThanStart(String start, String end) {
+ if (TextUtils.isEmpty(start) || TextUtils.isEmpty(end)) {
+ return false;
+ }
+ SimpleDateFormat dateFormat;
+ if (type == Type.ALL) {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
+ } else {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
+ }
+ try {
+ return dateFormat.parse(start).getTime() > dateFormat.parse(end).getTime();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
index b4e5dcb..c814a2b 100644
--- a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
+++ b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
@@ -2,19 +2,15 @@
import android.app.Dialog;
import android.content.Context;
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
+import android.widget.Button;
import android.widget.TextView;
import com.casic.dcms.R;
-import com.casic.dcms.base.BaseApplication;
import com.casic.dcms.utils.TimeOrDateUtil;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
import java.util.Timer;
import java.util.TimerTask;
@@ -37,16 +33,7 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
- //手动设置dialog宽度
- Window window = getWindow();
- window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
- window.getDecorView().setBackgroundColor(Color.TRANSPARENT);
- WindowManager.LayoutParams params = window.getAttributes();
- params.width = QMUIDisplayHelper.dp2px(BaseApplication.getInstance(), 300);
- params.height = WindowManager.LayoutParams.WRAP_CONTENT;
- window.setAttributes(params);
-
+ DialogLayoutParam.resetParams(this, 0.85);
setContentView(R.layout.dialog_sign_in);
timer = new Timer();
initView();
@@ -69,8 +56,8 @@
if (!TextUtils.isEmpty(address)) {
signInPlaceView.setText(address);
}
- TextView signInView = findViewById(R.id.signInView);
- signInView.setOnClickListener(this);
+ Button signInButton = findViewById(R.id.signInButton);
+ signInButton.setOnClickListener(this);
}
@Override
@@ -84,7 +71,7 @@
@Override
public void onClick(View view) {
int i = view.getId();
- if (i == R.id.signInView) {
+ if (i == R.id.signInButton) {
if (listener != null) {
listener.onViewClick();
}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
deleted file mode 100755
index 122b863..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import java.util.List;
-
-public class DateInfo {
- private String date;
- private List list;
-
- public String getDate() {
- return date;
- }
-
- public void setDate(String date) {
- this.date = date;
- }
-
- public List getList() {
- return list;
- }
-
- public void setList(List list) {
- this.list = list;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
deleted file mode 100755
index 7fdb45f..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
+++ /dev/null
@@ -1,647 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.Context;
-import android.graphics.drawable.BitmapDrawable;
-import android.text.TextUtils;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.LinearLayout;
-import android.widget.PopupWindow;
-import android.widget.TextView;
-
-import androidx.annotation.Nullable;
-import androidx.core.app.ActivityCompat;
-import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.utils.CalendarUtil;
-import com.chad.library.adapter.base.BaseQuickAdapter;
-import com.chad.library.adapter.base.BaseViewHolder;
-import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-
-@SuppressLint("SetTextI18n")
-public class DatePopupWindow extends PopupWindow {
- private static final String TAG = "DatePopupWindow";
- private final View rootView;
- private QMUIRoundButton selectDoneButton;
- private RecyclerView dateRecyclerView;
- private TextView hintTextTextView;
- private TextView endWeekView;
- private TextView endDateView;
- private LinearLayout endDateLayout;
- private TextView sumTimeView;
- private TextView startWeekView;
- private TextView startDateView;
-
- private final boolean dayFlag;
- private final Activity activity;
- private Date mSetDate;
- private final String currentDate;
- private final String startDesc;
- private final String endDesc;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private int childPosition = -1;//当天在列表中的子索引
- private DateAdapter mDateAdapter;
- private List mList;
- private final DateOnClickListener mOnClickListener;
-
- private DatePopupWindow(Builder builder) {
- this.activity = builder.activity;
- this.currentDate = builder.date;
- this.startDesc = builder.startDesc;
- this.endDesc = builder.endDesc;
- this.dayFlag = builder.dayFlag;
- this.startGroupPosition = builder.startGroupPosition;
- this.startChildPosition = builder.startChildPosition;
- this.endGroupPosition = builder.endGroupPosition;
- this.endChildPosition = builder.endChildPosition;
- this.mOnClickListener = builder.mOnClickListener;
-
- LayoutInflater inflater = (LayoutInflater) this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- rootView = inflater.inflate(R.layout.popu_date, null);
- this.setContentView(rootView);
- this.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setAnimationStyle(R.style.dialogWindowAnim);
- this.setFocusable(true);
- this.setBackgroundDrawable(new BitmapDrawable());
- this.setOnDismissListener(new ShareDismissListener());
- backgroundAlpha(activity);
-
- initView();
- setInitSelect();
- create(builder.parentView);
- }
-
- private void backgroundAlpha(Activity context) {
- WindowManager.LayoutParams lp = context.getWindow().getAttributes();
- lp.alpha = 1.0f; //0.0-1.0
- context.getWindow().setAttributes(lp);
- }
-
- private void initView() {
- selectDoneButton = rootView.findViewById(R.id.selectDoneButton);
- dateRecyclerView = rootView.findViewById(R.id.dateRecyclerView);
- hintTextTextView = rootView.findViewById(R.id.hintTextTextView);
- endWeekView = rootView.findViewById(R.id.endWeekView);
- endDateView = rootView.findViewById(R.id.endDateView);
- endDateLayout = rootView.findViewById(R.id.endDateLayout);
- sumTimeView = rootView.findViewById(R.id.sumTimeView);
- startWeekView = rootView.findViewById(R.id.startWeekView);
- startDateView = rootView.findViewById(R.id.startDateView);
- TextView clearButton = rootView.findViewById(R.id.clearButton);
- TextView closeButton = rootView.findViewById(R.id.closeButton);
- TextView startDateDescView = rootView.findViewById(R.id.startDateDescView);
- TextView endDateDescView = rootView.findViewById(R.id.endDateDescView);
- startDateDescView.setText(startDesc + "日期");
- endDateDescView.setText(endDesc + "日期");
- selectDoneButton.setChangeAlphaWhenPress(true);
- selectDoneButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mOnClickListener != null) {
- String startDate = mList.get(startGroupPosition)
- .getList()
- .get(startChildPosition)
- .getDate();
- String endDate = mList.get(endGroupPosition)
- .getList()
- .get(endChildPosition)
- .getDate();
- mOnClickListener.getDate(startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition);
- }
- DatePopupWindow.this.dismiss();
- }
- });
- closeButton.setOnClickListener(v -> DatePopupWindow.this.dismiss());
- clearButton.setOnClickListener(v -> {
- initView();//重置当前view
- setDefaultSelect();//选中初始状态值
- });
- LinearLayoutManager manager = new LinearLayoutManager(activity);
- manager.setOrientation(LinearLayoutManager.VERTICAL);
- mList = new ArrayList<>();
- mDateAdapter = new DateAdapter(mList);
- dateRecyclerView.setLayoutManager(manager);
- dateRecyclerView.setAdapter(mDateAdapter);
- dateRecyclerView.setItemViewCacheSize(200);
- dateRecyclerView.setHasFixedSize(true);
- dateRecyclerView.setNestedScrollingEnabled(false);
- initData();
- }
-
- private void initData() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);//当前日期转date
- try {
- if (currentDate == null) {
- return;
- }
- mSetDate = dateFormat.parse(currentDate);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //初始化日期
- Calendar c = Calendar.getInstance();
- c.setTime(mSetDate);
- int firstM = c.get(Calendar.MONTH) + 1;//获取月份 月份是从0开始,需要+1
- int days = c.get(Calendar.DATE);//日期
- int week = c.get(Calendar.DAY_OF_WEEK);//周几
- //获取当前这个月最大天数
- int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- DateInfo month = new DateInfo();
- List dayList = new ArrayList<>();
- month.setDate(c.get(Calendar.YEAR) + "年" + firstM + "月");
- //当前月第一天是周几
- int w = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < w; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- dayList.add(dayInfo);
- }
- //计算当前月的天数
- for (int i = 1; i <= maxDay; i++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName(i + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + i);
- int c_year = Integer.parseInt(currentDate.split("-")[0]);
- int c_month = Integer.parseInt(currentDate.split("-")[1]);
- int c_day = Integer.parseInt(currentDate.split("-")[2]);
- if (c_year == c.get(Calendar.YEAR) && c_month == (c.get(Calendar.MONTH) + 1) && c_day == i) {
- childPosition = dayList.size();
- }
- //设置日期是否可选择
- dayInfo.setEnable(i >= days);
- dayList.add(dayInfo);
- }
- month.setList(dayList);
- mList.add(month);
- //获取下2个月的数据
- for (int i = 1; i <= 2; i++) {
- //当前月份循环减1
- c.add(Calendar.MONTH, 1);
- DateInfo nextMonth = new DateInfo();
- List nextDayList = new ArrayList<>();
- int maxDays = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- nextMonth.setDate(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月");
- //周几
- int weeks = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < weeks; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- nextDayList.add(dayInfo);
- }
- //该月的所有日期
- for (int j = 0; j < maxDays; j++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName((j + 1) + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + (j + 1));
- dayInfo.setEnable((j + 1) <= days || i != 2);
- nextDayList.add(dayInfo);
- }
- nextMonth.setList(nextDayList);
- mList.add(nextMonth);
- }
- mDateAdapter.updateData();
- }
-
- private void setInitSelect() {
- if (0 <= this.startGroupPosition && this.startGroupPosition < mList.size() &&
- 0 <= this.endGroupPosition && this.endGroupPosition < mList.size()) {
- int maxStartChild = mList.get(this.startGroupPosition).getList().size();
- int maxEndChild = mList.get(this.endGroupPosition).getList().size();
- if (0 <= this.startChildPosition && this.startChildPosition < maxStartChild &&
- 0 <= this.endChildPosition && this.endChildPosition < maxEndChild) {
- setInit();
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- }
-
- private void setInit() {
- mList.get(this.startGroupPosition).getList().get(this.startChildPosition).setStatus(1);
- mList.get(this.endGroupPosition).getList().get(this.endChildPosition).setStatus(2);
- mDateAdapter.notifyDataSetChanged();
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- dateRecyclerView.scrollToPosition(this.startGroupPosition);
- }
-
- //设置日历标明当前日期的状态
- private void setDefaultSelect() {
- if (childPosition == -1) return;
- String date = mList.get(0).getList().get(childPosition).getDate();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Date curDate = null;
- try {
- curDate = sdf.parse(formatDate(date));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- if (curDate == null) return;
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(curDate);
- calendar.add(Calendar.DATE, 1);
-
- int year = Integer.parseInt(date.split("-")[0]);
- int month = Integer.parseInt(date.split("-")[1]);
- if (year == calendar.get(Calendar.YEAR) && month == calendar.get(Calendar.MONTH) + 1
- && childPosition < mList.get(0).getList().size() - 1) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 0;
- this.endChildPosition = childPosition - 1;
- setInit();
- } else {
- for (int i = 0; i < mList.get(1).getList().size(); i++) {
- if (!TextUtils.isEmpty(mList.get(1).getList().get(i).getDate())) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 1;
- this.endChildPosition = i;
- setInit();
- break;
- }
- }
- }
- }
-
- /**
- * 设置起始时间和结束时间的选中标识,或者设置不选中
- *
- * @param startDate
- * @param endDate
- * @param status 选中设置为true 设置不选中false
- */
- @SuppressLint("SetTextI18n")
- private void getOffsetDate(String startDate, String endDate, boolean status) {
- //更新开始日期和结束日期的信息和状态
- Calendar sCalendar = CalendarUtil.toDate(startDate);
- Calendar eCalendar = CalendarUtil.toDate(endDate);
- startDateView.setText((sCalendar.get(Calendar.MONTH) + 1) + "月" + sCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(startDate));
- endDateView.setText((eCalendar.get(Calendar.MONTH) + 1) + "月" + eCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- endWeekView.setText("周" + CalendarUtil.getWeekByFormat(endDate));
- int daysOffset = Integer.parseInt(CalendarUtil.getTwoDay(endDate, startDate));
- if (daysOffset < 0) return;
- if (dayFlag) {
- sumTimeView.setText("共" + (daysOffset + 1) + "天");
- } else {
- sumTimeView.setText("共" + daysOffset + "晚");
- }
- //更改结束日期和完成按钮状态
- endDateLayout.setVisibility(View.VISIBLE);
- hintTextTextView.setVisibility(View.GONE);
- initButton("完成", true);
-
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Calendar c = Calendar.getInstance();
- DayInfo info = mList.get(startGroupPosition).getList().get(startChildPosition);
- try {
- c.setTime(sdf.parse(info.getDate()));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //根据2个时间的相差天数去循环
- for (int i = 0; i < daysOffset; i++) {
- //下一天(目标天)
- c.add(Calendar.DATE, 1);
- //改天的日期(目标天)
- String d = c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE);
- //循环group列表
- for (int j = 0; j < mList.size(); j++) {
- //获取该月的随机一个dayInfo
- DayInfo dayInfo = mList.get(j).getList().get(mList.get(j).getList().size() - 1);
- boolean isCheck = false;
- //判断该天是否和目标天是否是同一个月
- if (!TextUtils.isEmpty(dayInfo.getDate())
- && Integer.parseInt(dayInfo.getDate().split("-")[0]) == (c.get(Calendar.YEAR))
- && Integer.parseInt(dayInfo.getDate().split("-")[1]) == ((c.get(Calendar.MONTH) + 1))) {
- //是同一个月,则循环该月多有天数
- for (int t = 0; t < mList.get(j).getList().size(); t++) {
- //找到该月的日期与目标日期相同,存在,设置选择标记
- if (mList.get(j).getList().get(t).getDate().equals(d)) {
- mList.get(j).getList().get(t).setSelect(status);
- isCheck = true;
- break;
- }
- }
- }
- if (isCheck) {
- mDateAdapter.notifyItemChanged(j);
- break;
- }
- }
- }
- }
-
- private String formatDate(String date) {
- if (TextUtils.isEmpty(date)) return "";
- return date.split("-")[0] +
- "-" +
- (date.split("-")[1].length() < 2 ? "0" + date.split("-")[1] : date.split("-")[1]) +
- "-" +
- (date.split("-")[2].length() < 2 ? "0" + date.split("-")[2] : date.split("-")[2]);
- }
-
- private void create(View view) {
- this.showAtLocation(view, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
- }
-
- /**
- * return startDate、endDate(格式:2012-12-10)
- * 选中完成后返回开始时间和结束时间
- * return startGroupPosition、startChildPosition、endGroupPosition、endChildPosition
- * 返回选中时间区间的状态标记,监听中接收后在builder中setInitSelect()方法中直接传出入(可用于记录上次选中的状态,用户再点击进入的时候恢复上一次的区间选中状态)
- */
- public interface DateOnClickListener {
- void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition);
- }
-
- public static class Builder {
- private final String date;
- private final Activity activity;
- private final View parentView;
- private String startDesc;
- private String endDesc;
- private boolean dayFlag = true;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private DateOnClickListener mOnClickListener = null;
-
- public Builder(Activity activity, Date date, View parentView) {
- this.date = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(date);
- this.activity = activity;
- this.parentView = parentView;
- this.startDesc = "开始";
- this.endDesc = "结束";
- this.dayFlag = true;
- }
-
- public DatePopupWindow builder() {
- return new DatePopupWindow(this);
- }
-
- public Builder setInitSelect(int startGroup, int startChild, int endGroup, int endChild) {
- this.startGroupPosition = startGroup;
- this.startChildPosition = startChild;
- this.endGroupPosition = endGroup;
- this.endChildPosition = endChild;
- return this;
- }
-
- public Builder setInitDay(boolean dayFlag) {
- this.dayFlag = dayFlag;
- if (dayFlag) {
- this.startDesc = "开始";
- this.endDesc = "结束";
- } else {
- this.startDesc = "入住";
- this.endDesc = "离开";
- }
- return this;
- }
-
- public Builder setDateOnClickListener(DateOnClickListener mlListener) {
- mOnClickListener = mlListener;
- return this;
- }
- }
-
- private class DateAdapter extends BaseQuickAdapter {
-
- DateAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date, data);
- }
-
- @Override
- public void onBindViewHolder(BaseViewHolder holder, int positions) {
- super.onBindViewHolder(holder, positions);
- TextView monthTitleView = holder.getView(R.id.monthTitleView);
- monthTitleView.setText(mList.get(positions).getDate());
- }
-
- @Override
- protected void convert(final BaseViewHolder helper, final DateInfo item) {
- RecyclerView monthRecyclerView = helper.getView(R.id.monthRecyclerView);
-
- GridLayoutManager manager = new GridLayoutManager(activity, 7);
- monthRecyclerView.setLayoutManager(manager);
- final TempAdapter groupAdapter = new TempAdapter(item.getList());
- monthRecyclerView.setAdapter(groupAdapter);
- monthRecyclerView.setItemViewCacheSize(200);
- monthRecyclerView.setHasFixedSize(true);
- monthRecyclerView.setNestedScrollingEnabled(false);
- groupAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
- @Override
- public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
- if (!item.getList().get(position).isEnable()) return;
- if (TextUtils.isEmpty(item.getList().get(position).getName())) return;
- if (TextUtils.isEmpty(item.getList().get(position).getDate())) return;
- int status = item.getList().get(position).getStatus();
- if (status == 0 &&
- startGroupPosition == -1 &&
- startChildPosition == -1 &&
- item.getList().get(position).isEnable()) {
- //开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
-
- startDateView.setText(CalendarUtil.FormatDateMD(item.getList().get(position).getDate()));
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- if (status == 0 && endGroupPosition == -1 && endChildPosition == -1) {
- int offset = Integer.parseInt(CalendarUtil.getTwoDay(item.getList().get(position).getDate()
- , mList.get(startGroupPosition).getList().get(startChildPosition).getDate()));
- //判断该离开日期是否比入住时间还小,是则重新设置入住时间。
- if (offset < 0) {
- //刷新上一个开始日期
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- //设置新的入开始日期
- item.getList().get(position).setStatus(1);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- adapter.notifyItemChanged(position);
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- item.getList().get(position).setStatus(2);
- adapter.notifyItemChanged(position);
- endGroupPosition = helper.getAdapterPosition();
- endChildPosition = position;
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- return;
- }
- //重置开始和结束时间,设置开始时间
- if (status == 0 && endGroupPosition != -1 && endChildPosition != -1 && startChildPosition != -1 && startGroupPosition != -1) {
- //重置开始和结束
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mList.get(endGroupPosition).getList().get(endChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- mDateAdapter.notifyItemChanged(endGroupPosition);
- //重置选择间区的状态
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), false);
- //设置开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
-
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- endGroupPosition = -1;
- endChildPosition = -1;
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- }
- }
- });
- }
-
- void updateData() {
- notifyDataSetChanged();
- }
- }
-
- private class TempAdapter extends BaseQuickAdapter {
- TempAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date_child, data);
- }
-
- @Override
- protected void convert(BaseViewHolder helper, DayInfo item) {
- String name = item.getName();
- boolean isSelect = item.isSelect();
- boolean isEnable = item.isEnable();
- int status = item.getStatus();
- helper.setText(R.id.dateView, name);
- //默认
- if (status == 0) {
- if (isSelect) {
- //选中
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else {
- //没选中状态
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.black));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.white));
- }
- } else if (status == 1) {
- //开始
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, startDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else if (status == 2) {
- //结束
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, endDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- }
- //设置当前日期前的样式,没选中,并状态为0情况下
- if (!isSelect && status == 0) {
- if (!isEnable) {
- //无效
- TextView textView = helper.getView(R.id.dateDelView);
- if (TextUtils.isEmpty(name)) {
- textView.setVisibility(View.GONE);
- } else {
- textView.setText(name);
- textView.setVisibility(View.VISIBLE);
- }
- textView.setTextColor(activity.getResources().getColor(R.color.mainThemeColor));
- helper.getView(R.id.dateView).setVisibility(View.GONE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- } else {
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- TextView textView = helper.getView(R.id.dateView);
- textView.setTextColor(activity.getResources().getColor(R.color.black));
- }
- }
- }
- }
-
- private class ShareDismissListener implements OnDismissListener {
- @Override
- public void onDismiss() {
- backgroundAlpha(activity);
- }
- }
-
- private void initButton(String msg, boolean enable) {
- selectDoneButton.setText(msg);
- if (enable) {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.mainThemeColor));
- } else {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.hintTextColor));
- }
- selectDoneButton.setEnabled(enable);
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java
deleted file mode 100755
index 9bffa8e..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-public class DayInfo {
- private String name;
- private boolean isEnable;
- private String date;
- private int status = 0;
- private boolean select;
-
- boolean isSelect() {
- return select;
- }
-
- void setSelect(boolean select) {
- this.select = select;
- }
-
- int getStatus() {
- return status;
- }
-
- void setStatus(int status) {
- this.status = status;
- }
-
- String getDate() {
- return date;
- }
-
- void setDate(String date) {
- this.date = date;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- boolean isEnable() {
- return isEnable;
- }
-
- void setEnable(boolean enable) {
- isEnable = enable;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java
deleted file mode 100755
index 7bc6dbf..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.util.AttributeSet;
-
-import androidx.annotation.Nullable;
-import androidx.appcompat.widget.AppCompatTextView;
-
-import com.casic.dcms.R;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
-
-/**
- * 不可选日期斜线
- */
-public class LineTextView extends AppCompatTextView {
- private Paint mPaint;
- private Context context;
-
- public LineTextView(Context context, @Nullable AttributeSet attrs) {
- super(context, attrs);
- this.context = context;
- mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
- mPaint.setStrokeWidth(QMUIDisplayHelper.dp2px(context, 1));
- mPaint.setColor(getResources().getColor(R.color.punishColor));
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- //斜线坐标
- int startX, startY, endX, endY;
-
- //视图宽高
- int width = getWidth();
- int height = getHeight();
-
- //计算坐标
- startX = width;
- startY = QMUIDisplayHelper.dp2px(context, 2);
- endX = 0;
- endY = height - QMUIDisplayHelper.dp2px(context, 3);
- //画斜线
- canvas.drawLine(startX, startY, endX, endY, mPaint);
- }
-}
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml b/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml
new file mode 100644
index 0000000..dbc008c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 13bc9ef..1416b2c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -28,7 +28,9 @@
+
+
@@ -60,7 +62,12 @@
+
+
+
+
+
@@ -80,7 +87,9 @@
+
+
diff --git a/app/build.gradle b/app/build.gradle
index a4ee6d9..2e1bb36 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -109,7 +109,6 @@
implementation 'com.amap.api:location:5.3.1'
//经纬度逆编码
implementation 'com.amap.api:search:8.1.0'
- implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
//桌面角标
implementation "me.leolin:ShortcutBadger:1.1.22@aar"
}
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
index 4a0b2bb..00f69ae 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
@@ -16,11 +16,11 @@
import com.casic.dcms.databinding.ActivityCleanRecordsBinding;
import com.casic.dcms.mvvm.model.CleanRecordBean;
import com.casic.dcms.mvvm.vm.ToiletViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
import com.casic.dcms.utils.StringHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -41,14 +41,8 @@
private RecordListAdapter adapter;
private WeakReferenceHandler weakReferenceHandler;
private int pageIndex = 1;
- private String start;
- private String end;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -63,7 +57,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class);
- toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex);
+ }
+
+ @Override
+ protected void onResume() {
+ obtainCleanRecordList("", "");
+ super.onResume();
}
@Override
@@ -71,23 +70,26 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(CleaningRecordsActivity.this, CalendarUtil.obtainLastTwoMonth(), view)
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
-
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
- obtainCleanRecordList();
+ obtainCleanRecordList(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +98,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +106,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
@@ -146,7 +148,7 @@
});
}
- private void obtainCleanRecordList() {
+ private void obtainCleanRecordList(String start, String end) {
toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex);
}
@@ -161,7 +163,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
index aa0d7a9..8741e2f 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
@@ -14,10 +14,10 @@
import com.casic.dcms.databinding.ActivityMaintainRecordBinding;
import com.casic.dcms.mvvm.model.MaintainRecordBean;
import com.casic.dcms.mvvm.vm.BridgeViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -37,15 +37,9 @@
private List dataBeans = new ArrayList<>();
private WeakReferenceHandler weakReferenceHandler;
private MaintainRecordAdapter adapter;
- private String start;
- private String end;
private int pageIndex = 1;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -60,8 +54,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class);
+ }
- obtainMaintainRecord();
+ @Override
+ protected void onResume() {
+ obtainMaintainRecord("", "");
+ super.onResume();
}
@Override
@@ -69,25 +67,28 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), view) //初始化
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
- //点击完成按钮后回调返回方法
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +97,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +105,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
@@ -145,7 +146,7 @@
});
}
- private void obtainMaintainRecord() {
+ private void obtainMaintainRecord(String start, String end) {
bridgeViewModel.obtainMaintainRecord(start, end, pageIndex);
}
@@ -160,7 +161,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
new file mode 100644
index 0000000..397a389
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
@@ -0,0 +1,220 @@
+package com.casic.dcms.widgets;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import androidx.fragment.app.FragmentManager;
+
+import com.casic.dcms.R;
+import com.casic.dcms.utils.LocaleConstant;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.utils.ColorUtil;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
+import com.pengxh.androidx.lite.utils.TimeOrDateUtil;
+import com.pengxh.androidx.lite.widget.EasyToast;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+public class DateSelectDialog extends Dialog {
+
+ private final Context ctx;
+ private final String title;
+ private final String negativeBtn;
+ private final String positiveBtn;
+ private final OnDialogButtonClickListener listener;
+ private final FragmentManager fragmentManager;
+ private final Type type;
+
+ private DateSelectDialog(Builder builder) {
+ super(builder.context);
+ this.ctx = builder.context;
+ this.title = builder.title;
+ this.negativeBtn = builder.negativeBtn;
+ this.positiveBtn = builder.positiveBtn;
+ this.listener = builder.listener;
+ this.fragmentManager = builder.fragmentManager;
+ this.type = builder.type;
+ }
+
+ public static class Builder {
+ private Context context;
+ private String title;
+ private String negativeBtn;
+ private String positiveBtn;
+ private OnDialogButtonClickListener listener;
+ private FragmentManager fragmentManager;
+ private Type type;
+
+ public Builder setContext(Context context) {
+ this.context = context;
+ return this;
+ }
+
+ public Builder setTitle(String title) {
+ this.title = title;
+ return this;
+ }
+
+ public Builder setNegativeButton(String name) {
+ this.negativeBtn = name;
+ return this;
+ }
+
+ public Builder setPositiveButton(String name) {
+ this.positiveBtn = name;
+ return this;
+ }
+
+ public Builder setOnDialogButtonClickListener(OnDialogButtonClickListener listener) {
+ this.listener = listener;
+ return this;
+ }
+
+ public Builder setFragmentManager(FragmentManager fragmentManager) {
+ this.fragmentManager = fragmentManager;
+ return this;
+ }
+
+ public Builder setCalendarType(Type calendarType) {
+ this.type = calendarType;
+ return this;
+ }
+
+ public DateSelectDialog build() {
+ return new DateSelectDialog(this);
+ }
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ DialogLayoutParam.resetParams(this, Gravity.CENTER, R.style.UserDefinedAnimation, 0.85);
+ setContentView(R.layout.dialog_select_date);
+ setCancelable(false);
+ setCanceledOnTouchOutside(false);
+
+
+ if (!TextUtils.isEmpty(title)) {
+ ((TextView) findViewById(R.id.dialogTitleView)).setText(title);
+ }
+
+ EditText startDateView = findViewById(R.id.startDateView);
+ startDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ startDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ EditText endDateView = findViewById(R.id.endDateView);
+ endDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ endDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ Button dialogCancelButton = findViewById(R.id.dialogCancelButton);
+ dialogCancelButton.setText(negativeBtn);
+ dialogCancelButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ listener.onCancelClick();
+ dismiss();
+ }
+ });
+
+ Button dialogConfirmButton = findViewById(R.id.dialogConfirmButton);
+ dialogConfirmButton.setText(positiveBtn);
+ dialogConfirmButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //判断其实时间和结束时间
+ String startDate = startDateView.getText().toString();
+ String endDate = endDateView.getText().toString();
+ if (isEarlierThanStart(startDate, endDate)) {
+ EasyToast.show(ctx, "结束时间不能早于开始时间");
+ return;
+ }
+ listener.onConfirmClick(startDate, endDate);
+ dismiss();
+ }
+ });
+ }
+
+ public interface OnDialogButtonClickListener {
+ void onConfirmClick(String startDate, String endDate);
+
+ void onCancelClick();
+ }
+
+ /**
+ * 判断时间是否早于当前时间
+ */
+ private boolean isEarlierThanStart(String start, String end) {
+ if (TextUtils.isEmpty(start) || TextUtils.isEmpty(end)) {
+ return false;
+ }
+ SimpleDateFormat dateFormat;
+ if (type == Type.ALL) {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
+ } else {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
+ }
+ try {
+ return dateFormat.parse(start).getTime() > dateFormat.parse(end).getTime();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
index b4e5dcb..c814a2b 100644
--- a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
+++ b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
@@ -2,19 +2,15 @@
import android.app.Dialog;
import android.content.Context;
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
+import android.widget.Button;
import android.widget.TextView;
import com.casic.dcms.R;
-import com.casic.dcms.base.BaseApplication;
import com.casic.dcms.utils.TimeOrDateUtil;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
import java.util.Timer;
import java.util.TimerTask;
@@ -37,16 +33,7 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
- //手动设置dialog宽度
- Window window = getWindow();
- window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
- window.getDecorView().setBackgroundColor(Color.TRANSPARENT);
- WindowManager.LayoutParams params = window.getAttributes();
- params.width = QMUIDisplayHelper.dp2px(BaseApplication.getInstance(), 300);
- params.height = WindowManager.LayoutParams.WRAP_CONTENT;
- window.setAttributes(params);
-
+ DialogLayoutParam.resetParams(this, 0.85);
setContentView(R.layout.dialog_sign_in);
timer = new Timer();
initView();
@@ -69,8 +56,8 @@
if (!TextUtils.isEmpty(address)) {
signInPlaceView.setText(address);
}
- TextView signInView = findViewById(R.id.signInView);
- signInView.setOnClickListener(this);
+ Button signInButton = findViewById(R.id.signInButton);
+ signInButton.setOnClickListener(this);
}
@Override
@@ -84,7 +71,7 @@
@Override
public void onClick(View view) {
int i = view.getId();
- if (i == R.id.signInView) {
+ if (i == R.id.signInButton) {
if (listener != null) {
listener.onViewClick();
}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
deleted file mode 100755
index 122b863..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import java.util.List;
-
-public class DateInfo {
- private String date;
- private List list;
-
- public String getDate() {
- return date;
- }
-
- public void setDate(String date) {
- this.date = date;
- }
-
- public List getList() {
- return list;
- }
-
- public void setList(List list) {
- this.list = list;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
deleted file mode 100755
index 7fdb45f..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
+++ /dev/null
@@ -1,647 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.Context;
-import android.graphics.drawable.BitmapDrawable;
-import android.text.TextUtils;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.LinearLayout;
-import android.widget.PopupWindow;
-import android.widget.TextView;
-
-import androidx.annotation.Nullable;
-import androidx.core.app.ActivityCompat;
-import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.utils.CalendarUtil;
-import com.chad.library.adapter.base.BaseQuickAdapter;
-import com.chad.library.adapter.base.BaseViewHolder;
-import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-
-@SuppressLint("SetTextI18n")
-public class DatePopupWindow extends PopupWindow {
- private static final String TAG = "DatePopupWindow";
- private final View rootView;
- private QMUIRoundButton selectDoneButton;
- private RecyclerView dateRecyclerView;
- private TextView hintTextTextView;
- private TextView endWeekView;
- private TextView endDateView;
- private LinearLayout endDateLayout;
- private TextView sumTimeView;
- private TextView startWeekView;
- private TextView startDateView;
-
- private final boolean dayFlag;
- private final Activity activity;
- private Date mSetDate;
- private final String currentDate;
- private final String startDesc;
- private final String endDesc;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private int childPosition = -1;//当天在列表中的子索引
- private DateAdapter mDateAdapter;
- private List mList;
- private final DateOnClickListener mOnClickListener;
-
- private DatePopupWindow(Builder builder) {
- this.activity = builder.activity;
- this.currentDate = builder.date;
- this.startDesc = builder.startDesc;
- this.endDesc = builder.endDesc;
- this.dayFlag = builder.dayFlag;
- this.startGroupPosition = builder.startGroupPosition;
- this.startChildPosition = builder.startChildPosition;
- this.endGroupPosition = builder.endGroupPosition;
- this.endChildPosition = builder.endChildPosition;
- this.mOnClickListener = builder.mOnClickListener;
-
- LayoutInflater inflater = (LayoutInflater) this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- rootView = inflater.inflate(R.layout.popu_date, null);
- this.setContentView(rootView);
- this.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setAnimationStyle(R.style.dialogWindowAnim);
- this.setFocusable(true);
- this.setBackgroundDrawable(new BitmapDrawable());
- this.setOnDismissListener(new ShareDismissListener());
- backgroundAlpha(activity);
-
- initView();
- setInitSelect();
- create(builder.parentView);
- }
-
- private void backgroundAlpha(Activity context) {
- WindowManager.LayoutParams lp = context.getWindow().getAttributes();
- lp.alpha = 1.0f; //0.0-1.0
- context.getWindow().setAttributes(lp);
- }
-
- private void initView() {
- selectDoneButton = rootView.findViewById(R.id.selectDoneButton);
- dateRecyclerView = rootView.findViewById(R.id.dateRecyclerView);
- hintTextTextView = rootView.findViewById(R.id.hintTextTextView);
- endWeekView = rootView.findViewById(R.id.endWeekView);
- endDateView = rootView.findViewById(R.id.endDateView);
- endDateLayout = rootView.findViewById(R.id.endDateLayout);
- sumTimeView = rootView.findViewById(R.id.sumTimeView);
- startWeekView = rootView.findViewById(R.id.startWeekView);
- startDateView = rootView.findViewById(R.id.startDateView);
- TextView clearButton = rootView.findViewById(R.id.clearButton);
- TextView closeButton = rootView.findViewById(R.id.closeButton);
- TextView startDateDescView = rootView.findViewById(R.id.startDateDescView);
- TextView endDateDescView = rootView.findViewById(R.id.endDateDescView);
- startDateDescView.setText(startDesc + "日期");
- endDateDescView.setText(endDesc + "日期");
- selectDoneButton.setChangeAlphaWhenPress(true);
- selectDoneButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mOnClickListener != null) {
- String startDate = mList.get(startGroupPosition)
- .getList()
- .get(startChildPosition)
- .getDate();
- String endDate = mList.get(endGroupPosition)
- .getList()
- .get(endChildPosition)
- .getDate();
- mOnClickListener.getDate(startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition);
- }
- DatePopupWindow.this.dismiss();
- }
- });
- closeButton.setOnClickListener(v -> DatePopupWindow.this.dismiss());
- clearButton.setOnClickListener(v -> {
- initView();//重置当前view
- setDefaultSelect();//选中初始状态值
- });
- LinearLayoutManager manager = new LinearLayoutManager(activity);
- manager.setOrientation(LinearLayoutManager.VERTICAL);
- mList = new ArrayList<>();
- mDateAdapter = new DateAdapter(mList);
- dateRecyclerView.setLayoutManager(manager);
- dateRecyclerView.setAdapter(mDateAdapter);
- dateRecyclerView.setItemViewCacheSize(200);
- dateRecyclerView.setHasFixedSize(true);
- dateRecyclerView.setNestedScrollingEnabled(false);
- initData();
- }
-
- private void initData() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);//当前日期转date
- try {
- if (currentDate == null) {
- return;
- }
- mSetDate = dateFormat.parse(currentDate);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //初始化日期
- Calendar c = Calendar.getInstance();
- c.setTime(mSetDate);
- int firstM = c.get(Calendar.MONTH) + 1;//获取月份 月份是从0开始,需要+1
- int days = c.get(Calendar.DATE);//日期
- int week = c.get(Calendar.DAY_OF_WEEK);//周几
- //获取当前这个月最大天数
- int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- DateInfo month = new DateInfo();
- List dayList = new ArrayList<>();
- month.setDate(c.get(Calendar.YEAR) + "年" + firstM + "月");
- //当前月第一天是周几
- int w = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < w; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- dayList.add(dayInfo);
- }
- //计算当前月的天数
- for (int i = 1; i <= maxDay; i++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName(i + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + i);
- int c_year = Integer.parseInt(currentDate.split("-")[0]);
- int c_month = Integer.parseInt(currentDate.split("-")[1]);
- int c_day = Integer.parseInt(currentDate.split("-")[2]);
- if (c_year == c.get(Calendar.YEAR) && c_month == (c.get(Calendar.MONTH) + 1) && c_day == i) {
- childPosition = dayList.size();
- }
- //设置日期是否可选择
- dayInfo.setEnable(i >= days);
- dayList.add(dayInfo);
- }
- month.setList(dayList);
- mList.add(month);
- //获取下2个月的数据
- for (int i = 1; i <= 2; i++) {
- //当前月份循环减1
- c.add(Calendar.MONTH, 1);
- DateInfo nextMonth = new DateInfo();
- List nextDayList = new ArrayList<>();
- int maxDays = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- nextMonth.setDate(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月");
- //周几
- int weeks = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < weeks; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- nextDayList.add(dayInfo);
- }
- //该月的所有日期
- for (int j = 0; j < maxDays; j++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName((j + 1) + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + (j + 1));
- dayInfo.setEnable((j + 1) <= days || i != 2);
- nextDayList.add(dayInfo);
- }
- nextMonth.setList(nextDayList);
- mList.add(nextMonth);
- }
- mDateAdapter.updateData();
- }
-
- private void setInitSelect() {
- if (0 <= this.startGroupPosition && this.startGroupPosition < mList.size() &&
- 0 <= this.endGroupPosition && this.endGroupPosition < mList.size()) {
- int maxStartChild = mList.get(this.startGroupPosition).getList().size();
- int maxEndChild = mList.get(this.endGroupPosition).getList().size();
- if (0 <= this.startChildPosition && this.startChildPosition < maxStartChild &&
- 0 <= this.endChildPosition && this.endChildPosition < maxEndChild) {
- setInit();
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- }
-
- private void setInit() {
- mList.get(this.startGroupPosition).getList().get(this.startChildPosition).setStatus(1);
- mList.get(this.endGroupPosition).getList().get(this.endChildPosition).setStatus(2);
- mDateAdapter.notifyDataSetChanged();
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- dateRecyclerView.scrollToPosition(this.startGroupPosition);
- }
-
- //设置日历标明当前日期的状态
- private void setDefaultSelect() {
- if (childPosition == -1) return;
- String date = mList.get(0).getList().get(childPosition).getDate();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Date curDate = null;
- try {
- curDate = sdf.parse(formatDate(date));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- if (curDate == null) return;
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(curDate);
- calendar.add(Calendar.DATE, 1);
-
- int year = Integer.parseInt(date.split("-")[0]);
- int month = Integer.parseInt(date.split("-")[1]);
- if (year == calendar.get(Calendar.YEAR) && month == calendar.get(Calendar.MONTH) + 1
- && childPosition < mList.get(0).getList().size() - 1) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 0;
- this.endChildPosition = childPosition - 1;
- setInit();
- } else {
- for (int i = 0; i < mList.get(1).getList().size(); i++) {
- if (!TextUtils.isEmpty(mList.get(1).getList().get(i).getDate())) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 1;
- this.endChildPosition = i;
- setInit();
- break;
- }
- }
- }
- }
-
- /**
- * 设置起始时间和结束时间的选中标识,或者设置不选中
- *
- * @param startDate
- * @param endDate
- * @param status 选中设置为true 设置不选中false
- */
- @SuppressLint("SetTextI18n")
- private void getOffsetDate(String startDate, String endDate, boolean status) {
- //更新开始日期和结束日期的信息和状态
- Calendar sCalendar = CalendarUtil.toDate(startDate);
- Calendar eCalendar = CalendarUtil.toDate(endDate);
- startDateView.setText((sCalendar.get(Calendar.MONTH) + 1) + "月" + sCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(startDate));
- endDateView.setText((eCalendar.get(Calendar.MONTH) + 1) + "月" + eCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- endWeekView.setText("周" + CalendarUtil.getWeekByFormat(endDate));
- int daysOffset = Integer.parseInt(CalendarUtil.getTwoDay(endDate, startDate));
- if (daysOffset < 0) return;
- if (dayFlag) {
- sumTimeView.setText("共" + (daysOffset + 1) + "天");
- } else {
- sumTimeView.setText("共" + daysOffset + "晚");
- }
- //更改结束日期和完成按钮状态
- endDateLayout.setVisibility(View.VISIBLE);
- hintTextTextView.setVisibility(View.GONE);
- initButton("完成", true);
-
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Calendar c = Calendar.getInstance();
- DayInfo info = mList.get(startGroupPosition).getList().get(startChildPosition);
- try {
- c.setTime(sdf.parse(info.getDate()));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //根据2个时间的相差天数去循环
- for (int i = 0; i < daysOffset; i++) {
- //下一天(目标天)
- c.add(Calendar.DATE, 1);
- //改天的日期(目标天)
- String d = c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE);
- //循环group列表
- for (int j = 0; j < mList.size(); j++) {
- //获取该月的随机一个dayInfo
- DayInfo dayInfo = mList.get(j).getList().get(mList.get(j).getList().size() - 1);
- boolean isCheck = false;
- //判断该天是否和目标天是否是同一个月
- if (!TextUtils.isEmpty(dayInfo.getDate())
- && Integer.parseInt(dayInfo.getDate().split("-")[0]) == (c.get(Calendar.YEAR))
- && Integer.parseInt(dayInfo.getDate().split("-")[1]) == ((c.get(Calendar.MONTH) + 1))) {
- //是同一个月,则循环该月多有天数
- for (int t = 0; t < mList.get(j).getList().size(); t++) {
- //找到该月的日期与目标日期相同,存在,设置选择标记
- if (mList.get(j).getList().get(t).getDate().equals(d)) {
- mList.get(j).getList().get(t).setSelect(status);
- isCheck = true;
- break;
- }
- }
- }
- if (isCheck) {
- mDateAdapter.notifyItemChanged(j);
- break;
- }
- }
- }
- }
-
- private String formatDate(String date) {
- if (TextUtils.isEmpty(date)) return "";
- return date.split("-")[0] +
- "-" +
- (date.split("-")[1].length() < 2 ? "0" + date.split("-")[1] : date.split("-")[1]) +
- "-" +
- (date.split("-")[2].length() < 2 ? "0" + date.split("-")[2] : date.split("-")[2]);
- }
-
- private void create(View view) {
- this.showAtLocation(view, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
- }
-
- /**
- * return startDate、endDate(格式:2012-12-10)
- * 选中完成后返回开始时间和结束时间
- * return startGroupPosition、startChildPosition、endGroupPosition、endChildPosition
- * 返回选中时间区间的状态标记,监听中接收后在builder中setInitSelect()方法中直接传出入(可用于记录上次选中的状态,用户再点击进入的时候恢复上一次的区间选中状态)
- */
- public interface DateOnClickListener {
- void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition);
- }
-
- public static class Builder {
- private final String date;
- private final Activity activity;
- private final View parentView;
- private String startDesc;
- private String endDesc;
- private boolean dayFlag = true;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private DateOnClickListener mOnClickListener = null;
-
- public Builder(Activity activity, Date date, View parentView) {
- this.date = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(date);
- this.activity = activity;
- this.parentView = parentView;
- this.startDesc = "开始";
- this.endDesc = "结束";
- this.dayFlag = true;
- }
-
- public DatePopupWindow builder() {
- return new DatePopupWindow(this);
- }
-
- public Builder setInitSelect(int startGroup, int startChild, int endGroup, int endChild) {
- this.startGroupPosition = startGroup;
- this.startChildPosition = startChild;
- this.endGroupPosition = endGroup;
- this.endChildPosition = endChild;
- return this;
- }
-
- public Builder setInitDay(boolean dayFlag) {
- this.dayFlag = dayFlag;
- if (dayFlag) {
- this.startDesc = "开始";
- this.endDesc = "结束";
- } else {
- this.startDesc = "入住";
- this.endDesc = "离开";
- }
- return this;
- }
-
- public Builder setDateOnClickListener(DateOnClickListener mlListener) {
- mOnClickListener = mlListener;
- return this;
- }
- }
-
- private class DateAdapter extends BaseQuickAdapter {
-
- DateAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date, data);
- }
-
- @Override
- public void onBindViewHolder(BaseViewHolder holder, int positions) {
- super.onBindViewHolder(holder, positions);
- TextView monthTitleView = holder.getView(R.id.monthTitleView);
- monthTitleView.setText(mList.get(positions).getDate());
- }
-
- @Override
- protected void convert(final BaseViewHolder helper, final DateInfo item) {
- RecyclerView monthRecyclerView = helper.getView(R.id.monthRecyclerView);
-
- GridLayoutManager manager = new GridLayoutManager(activity, 7);
- monthRecyclerView.setLayoutManager(manager);
- final TempAdapter groupAdapter = new TempAdapter(item.getList());
- monthRecyclerView.setAdapter(groupAdapter);
- monthRecyclerView.setItemViewCacheSize(200);
- monthRecyclerView.setHasFixedSize(true);
- monthRecyclerView.setNestedScrollingEnabled(false);
- groupAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
- @Override
- public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
- if (!item.getList().get(position).isEnable()) return;
- if (TextUtils.isEmpty(item.getList().get(position).getName())) return;
- if (TextUtils.isEmpty(item.getList().get(position).getDate())) return;
- int status = item.getList().get(position).getStatus();
- if (status == 0 &&
- startGroupPosition == -1 &&
- startChildPosition == -1 &&
- item.getList().get(position).isEnable()) {
- //开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
-
- startDateView.setText(CalendarUtil.FormatDateMD(item.getList().get(position).getDate()));
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- if (status == 0 && endGroupPosition == -1 && endChildPosition == -1) {
- int offset = Integer.parseInt(CalendarUtil.getTwoDay(item.getList().get(position).getDate()
- , mList.get(startGroupPosition).getList().get(startChildPosition).getDate()));
- //判断该离开日期是否比入住时间还小,是则重新设置入住时间。
- if (offset < 0) {
- //刷新上一个开始日期
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- //设置新的入开始日期
- item.getList().get(position).setStatus(1);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- adapter.notifyItemChanged(position);
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- item.getList().get(position).setStatus(2);
- adapter.notifyItemChanged(position);
- endGroupPosition = helper.getAdapterPosition();
- endChildPosition = position;
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- return;
- }
- //重置开始和结束时间,设置开始时间
- if (status == 0 && endGroupPosition != -1 && endChildPosition != -1 && startChildPosition != -1 && startGroupPosition != -1) {
- //重置开始和结束
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mList.get(endGroupPosition).getList().get(endChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- mDateAdapter.notifyItemChanged(endGroupPosition);
- //重置选择间区的状态
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), false);
- //设置开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
-
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- endGroupPosition = -1;
- endChildPosition = -1;
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- }
- }
- });
- }
-
- void updateData() {
- notifyDataSetChanged();
- }
- }
-
- private class TempAdapter extends BaseQuickAdapter {
- TempAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date_child, data);
- }
-
- @Override
- protected void convert(BaseViewHolder helper, DayInfo item) {
- String name = item.getName();
- boolean isSelect = item.isSelect();
- boolean isEnable = item.isEnable();
- int status = item.getStatus();
- helper.setText(R.id.dateView, name);
- //默认
- if (status == 0) {
- if (isSelect) {
- //选中
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else {
- //没选中状态
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.black));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.white));
- }
- } else if (status == 1) {
- //开始
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, startDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else if (status == 2) {
- //结束
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, endDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- }
- //设置当前日期前的样式,没选中,并状态为0情况下
- if (!isSelect && status == 0) {
- if (!isEnable) {
- //无效
- TextView textView = helper.getView(R.id.dateDelView);
- if (TextUtils.isEmpty(name)) {
- textView.setVisibility(View.GONE);
- } else {
- textView.setText(name);
- textView.setVisibility(View.VISIBLE);
- }
- textView.setTextColor(activity.getResources().getColor(R.color.mainThemeColor));
- helper.getView(R.id.dateView).setVisibility(View.GONE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- } else {
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- TextView textView = helper.getView(R.id.dateView);
- textView.setTextColor(activity.getResources().getColor(R.color.black));
- }
- }
- }
- }
-
- private class ShareDismissListener implements OnDismissListener {
- @Override
- public void onDismiss() {
- backgroundAlpha(activity);
- }
- }
-
- private void initButton(String msg, boolean enable) {
- selectDoneButton.setText(msg);
- if (enable) {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.mainThemeColor));
- } else {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.hintTextColor));
- }
- selectDoneButton.setEnabled(enable);
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java
deleted file mode 100755
index 9bffa8e..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-public class DayInfo {
- private String name;
- private boolean isEnable;
- private String date;
- private int status = 0;
- private boolean select;
-
- boolean isSelect() {
- return select;
- }
-
- void setSelect(boolean select) {
- this.select = select;
- }
-
- int getStatus() {
- return status;
- }
-
- void setStatus(int status) {
- this.status = status;
- }
-
- String getDate() {
- return date;
- }
-
- void setDate(String date) {
- this.date = date;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- boolean isEnable() {
- return isEnable;
- }
-
- void setEnable(boolean enable) {
- isEnable = enable;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java
deleted file mode 100755
index 7bc6dbf..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.util.AttributeSet;
-
-import androidx.annotation.Nullable;
-import androidx.appcompat.widget.AppCompatTextView;
-
-import com.casic.dcms.R;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
-
-/**
- * 不可选日期斜线
- */
-public class LineTextView extends AppCompatTextView {
- private Paint mPaint;
- private Context context;
-
- public LineTextView(Context context, @Nullable AttributeSet attrs) {
- super(context, attrs);
- this.context = context;
- mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
- mPaint.setStrokeWidth(QMUIDisplayHelper.dp2px(context, 1));
- mPaint.setColor(getResources().getColor(R.color.punishColor));
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- //斜线坐标
- int startX, startY, endX, endY;
-
- //视图宽高
- int width = getWidth();
- int height = getHeight();
-
- //计算坐标
- startX = width;
- startY = QMUIDisplayHelper.dp2px(context, 2);
- endX = 0;
- endY = height - QMUIDisplayHelper.dp2px(context, 3);
- //画斜线
- canvas.drawLine(startX, startY, endX, endY, mPaint);
- }
-}
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml b/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml
new file mode 100644
index 0000000..dbc008c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_left_right.xml b/app/src/main/res/drawable/ic_left_right.xml
new file mode 100644
index 0000000..e80b0f5
--- /dev/null
+++ b/app/src/main/res/drawable/ic_left_right.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 13bc9ef..1416b2c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -28,7 +28,9 @@
+
+
@@ -60,7 +62,12 @@
+
+
+
+
+
@@ -80,7 +87,9 @@
+
+
diff --git a/app/build.gradle b/app/build.gradle
index a4ee6d9..2e1bb36 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -109,7 +109,6 @@
implementation 'com.amap.api:location:5.3.1'
//经纬度逆编码
implementation 'com.amap.api:search:8.1.0'
- implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
//桌面角标
implementation "me.leolin:ShortcutBadger:1.1.22@aar"
}
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
index 4a0b2bb..00f69ae 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
@@ -16,11 +16,11 @@
import com.casic.dcms.databinding.ActivityCleanRecordsBinding;
import com.casic.dcms.mvvm.model.CleanRecordBean;
import com.casic.dcms.mvvm.vm.ToiletViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
import com.casic.dcms.utils.StringHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -41,14 +41,8 @@
private RecordListAdapter adapter;
private WeakReferenceHandler weakReferenceHandler;
private int pageIndex = 1;
- private String start;
- private String end;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -63,7 +57,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class);
- toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex);
+ }
+
+ @Override
+ protected void onResume() {
+ obtainCleanRecordList("", "");
+ super.onResume();
}
@Override
@@ -71,23 +70,26 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(CleaningRecordsActivity.this, CalendarUtil.obtainLastTwoMonth(), view)
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
-
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
- obtainCleanRecordList();
+ obtainCleanRecordList(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +98,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +106,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
@@ -146,7 +148,7 @@
});
}
- private void obtainCleanRecordList() {
+ private void obtainCleanRecordList(String start, String end) {
toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex);
}
@@ -161,7 +163,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
index aa0d7a9..8741e2f 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
@@ -14,10 +14,10 @@
import com.casic.dcms.databinding.ActivityMaintainRecordBinding;
import com.casic.dcms.mvvm.model.MaintainRecordBean;
import com.casic.dcms.mvvm.vm.BridgeViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -37,15 +37,9 @@
private List dataBeans = new ArrayList<>();
private WeakReferenceHandler weakReferenceHandler;
private MaintainRecordAdapter adapter;
- private String start;
- private String end;
private int pageIndex = 1;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -60,8 +54,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class);
+ }
- obtainMaintainRecord();
+ @Override
+ protected void onResume() {
+ obtainMaintainRecord("", "");
+ super.onResume();
}
@Override
@@ -69,25 +67,28 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), view) //初始化
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
- //点击完成按钮后回调返回方法
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +97,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +105,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
@@ -145,7 +146,7 @@
});
}
- private void obtainMaintainRecord() {
+ private void obtainMaintainRecord(String start, String end) {
bridgeViewModel.obtainMaintainRecord(start, end, pageIndex);
}
@@ -160,7 +161,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
new file mode 100644
index 0000000..397a389
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
@@ -0,0 +1,220 @@
+package com.casic.dcms.widgets;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import androidx.fragment.app.FragmentManager;
+
+import com.casic.dcms.R;
+import com.casic.dcms.utils.LocaleConstant;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.utils.ColorUtil;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
+import com.pengxh.androidx.lite.utils.TimeOrDateUtil;
+import com.pengxh.androidx.lite.widget.EasyToast;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+public class DateSelectDialog extends Dialog {
+
+ private final Context ctx;
+ private final String title;
+ private final String negativeBtn;
+ private final String positiveBtn;
+ private final OnDialogButtonClickListener listener;
+ private final FragmentManager fragmentManager;
+ private final Type type;
+
+ private DateSelectDialog(Builder builder) {
+ super(builder.context);
+ this.ctx = builder.context;
+ this.title = builder.title;
+ this.negativeBtn = builder.negativeBtn;
+ this.positiveBtn = builder.positiveBtn;
+ this.listener = builder.listener;
+ this.fragmentManager = builder.fragmentManager;
+ this.type = builder.type;
+ }
+
+ public static class Builder {
+ private Context context;
+ private String title;
+ private String negativeBtn;
+ private String positiveBtn;
+ private OnDialogButtonClickListener listener;
+ private FragmentManager fragmentManager;
+ private Type type;
+
+ public Builder setContext(Context context) {
+ this.context = context;
+ return this;
+ }
+
+ public Builder setTitle(String title) {
+ this.title = title;
+ return this;
+ }
+
+ public Builder setNegativeButton(String name) {
+ this.negativeBtn = name;
+ return this;
+ }
+
+ public Builder setPositiveButton(String name) {
+ this.positiveBtn = name;
+ return this;
+ }
+
+ public Builder setOnDialogButtonClickListener(OnDialogButtonClickListener listener) {
+ this.listener = listener;
+ return this;
+ }
+
+ public Builder setFragmentManager(FragmentManager fragmentManager) {
+ this.fragmentManager = fragmentManager;
+ return this;
+ }
+
+ public Builder setCalendarType(Type calendarType) {
+ this.type = calendarType;
+ return this;
+ }
+
+ public DateSelectDialog build() {
+ return new DateSelectDialog(this);
+ }
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ DialogLayoutParam.resetParams(this, Gravity.CENTER, R.style.UserDefinedAnimation, 0.85);
+ setContentView(R.layout.dialog_select_date);
+ setCancelable(false);
+ setCanceledOnTouchOutside(false);
+
+
+ if (!TextUtils.isEmpty(title)) {
+ ((TextView) findViewById(R.id.dialogTitleView)).setText(title);
+ }
+
+ EditText startDateView = findViewById(R.id.startDateView);
+ startDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ startDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ EditText endDateView = findViewById(R.id.endDateView);
+ endDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ endDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ Button dialogCancelButton = findViewById(R.id.dialogCancelButton);
+ dialogCancelButton.setText(negativeBtn);
+ dialogCancelButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ listener.onCancelClick();
+ dismiss();
+ }
+ });
+
+ Button dialogConfirmButton = findViewById(R.id.dialogConfirmButton);
+ dialogConfirmButton.setText(positiveBtn);
+ dialogConfirmButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //判断其实时间和结束时间
+ String startDate = startDateView.getText().toString();
+ String endDate = endDateView.getText().toString();
+ if (isEarlierThanStart(startDate, endDate)) {
+ EasyToast.show(ctx, "结束时间不能早于开始时间");
+ return;
+ }
+ listener.onConfirmClick(startDate, endDate);
+ dismiss();
+ }
+ });
+ }
+
+ public interface OnDialogButtonClickListener {
+ void onConfirmClick(String startDate, String endDate);
+
+ void onCancelClick();
+ }
+
+ /**
+ * 判断时间是否早于当前时间
+ */
+ private boolean isEarlierThanStart(String start, String end) {
+ if (TextUtils.isEmpty(start) || TextUtils.isEmpty(end)) {
+ return false;
+ }
+ SimpleDateFormat dateFormat;
+ if (type == Type.ALL) {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
+ } else {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
+ }
+ try {
+ return dateFormat.parse(start).getTime() > dateFormat.parse(end).getTime();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
index b4e5dcb..c814a2b 100644
--- a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
+++ b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
@@ -2,19 +2,15 @@
import android.app.Dialog;
import android.content.Context;
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
+import android.widget.Button;
import android.widget.TextView;
import com.casic.dcms.R;
-import com.casic.dcms.base.BaseApplication;
import com.casic.dcms.utils.TimeOrDateUtil;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
import java.util.Timer;
import java.util.TimerTask;
@@ -37,16 +33,7 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
- //手动设置dialog宽度
- Window window = getWindow();
- window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
- window.getDecorView().setBackgroundColor(Color.TRANSPARENT);
- WindowManager.LayoutParams params = window.getAttributes();
- params.width = QMUIDisplayHelper.dp2px(BaseApplication.getInstance(), 300);
- params.height = WindowManager.LayoutParams.WRAP_CONTENT;
- window.setAttributes(params);
-
+ DialogLayoutParam.resetParams(this, 0.85);
setContentView(R.layout.dialog_sign_in);
timer = new Timer();
initView();
@@ -69,8 +56,8 @@
if (!TextUtils.isEmpty(address)) {
signInPlaceView.setText(address);
}
- TextView signInView = findViewById(R.id.signInView);
- signInView.setOnClickListener(this);
+ Button signInButton = findViewById(R.id.signInButton);
+ signInButton.setOnClickListener(this);
}
@Override
@@ -84,7 +71,7 @@
@Override
public void onClick(View view) {
int i = view.getId();
- if (i == R.id.signInView) {
+ if (i == R.id.signInButton) {
if (listener != null) {
listener.onViewClick();
}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
deleted file mode 100755
index 122b863..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import java.util.List;
-
-public class DateInfo {
- private String date;
- private List list;
-
- public String getDate() {
- return date;
- }
-
- public void setDate(String date) {
- this.date = date;
- }
-
- public List getList() {
- return list;
- }
-
- public void setList(List list) {
- this.list = list;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
deleted file mode 100755
index 7fdb45f..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
+++ /dev/null
@@ -1,647 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.Context;
-import android.graphics.drawable.BitmapDrawable;
-import android.text.TextUtils;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.LinearLayout;
-import android.widget.PopupWindow;
-import android.widget.TextView;
-
-import androidx.annotation.Nullable;
-import androidx.core.app.ActivityCompat;
-import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.utils.CalendarUtil;
-import com.chad.library.adapter.base.BaseQuickAdapter;
-import com.chad.library.adapter.base.BaseViewHolder;
-import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-
-@SuppressLint("SetTextI18n")
-public class DatePopupWindow extends PopupWindow {
- private static final String TAG = "DatePopupWindow";
- private final View rootView;
- private QMUIRoundButton selectDoneButton;
- private RecyclerView dateRecyclerView;
- private TextView hintTextTextView;
- private TextView endWeekView;
- private TextView endDateView;
- private LinearLayout endDateLayout;
- private TextView sumTimeView;
- private TextView startWeekView;
- private TextView startDateView;
-
- private final boolean dayFlag;
- private final Activity activity;
- private Date mSetDate;
- private final String currentDate;
- private final String startDesc;
- private final String endDesc;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private int childPosition = -1;//当天在列表中的子索引
- private DateAdapter mDateAdapter;
- private List mList;
- private final DateOnClickListener mOnClickListener;
-
- private DatePopupWindow(Builder builder) {
- this.activity = builder.activity;
- this.currentDate = builder.date;
- this.startDesc = builder.startDesc;
- this.endDesc = builder.endDesc;
- this.dayFlag = builder.dayFlag;
- this.startGroupPosition = builder.startGroupPosition;
- this.startChildPosition = builder.startChildPosition;
- this.endGroupPosition = builder.endGroupPosition;
- this.endChildPosition = builder.endChildPosition;
- this.mOnClickListener = builder.mOnClickListener;
-
- LayoutInflater inflater = (LayoutInflater) this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- rootView = inflater.inflate(R.layout.popu_date, null);
- this.setContentView(rootView);
- this.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setAnimationStyle(R.style.dialogWindowAnim);
- this.setFocusable(true);
- this.setBackgroundDrawable(new BitmapDrawable());
- this.setOnDismissListener(new ShareDismissListener());
- backgroundAlpha(activity);
-
- initView();
- setInitSelect();
- create(builder.parentView);
- }
-
- private void backgroundAlpha(Activity context) {
- WindowManager.LayoutParams lp = context.getWindow().getAttributes();
- lp.alpha = 1.0f; //0.0-1.0
- context.getWindow().setAttributes(lp);
- }
-
- private void initView() {
- selectDoneButton = rootView.findViewById(R.id.selectDoneButton);
- dateRecyclerView = rootView.findViewById(R.id.dateRecyclerView);
- hintTextTextView = rootView.findViewById(R.id.hintTextTextView);
- endWeekView = rootView.findViewById(R.id.endWeekView);
- endDateView = rootView.findViewById(R.id.endDateView);
- endDateLayout = rootView.findViewById(R.id.endDateLayout);
- sumTimeView = rootView.findViewById(R.id.sumTimeView);
- startWeekView = rootView.findViewById(R.id.startWeekView);
- startDateView = rootView.findViewById(R.id.startDateView);
- TextView clearButton = rootView.findViewById(R.id.clearButton);
- TextView closeButton = rootView.findViewById(R.id.closeButton);
- TextView startDateDescView = rootView.findViewById(R.id.startDateDescView);
- TextView endDateDescView = rootView.findViewById(R.id.endDateDescView);
- startDateDescView.setText(startDesc + "日期");
- endDateDescView.setText(endDesc + "日期");
- selectDoneButton.setChangeAlphaWhenPress(true);
- selectDoneButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mOnClickListener != null) {
- String startDate = mList.get(startGroupPosition)
- .getList()
- .get(startChildPosition)
- .getDate();
- String endDate = mList.get(endGroupPosition)
- .getList()
- .get(endChildPosition)
- .getDate();
- mOnClickListener.getDate(startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition);
- }
- DatePopupWindow.this.dismiss();
- }
- });
- closeButton.setOnClickListener(v -> DatePopupWindow.this.dismiss());
- clearButton.setOnClickListener(v -> {
- initView();//重置当前view
- setDefaultSelect();//选中初始状态值
- });
- LinearLayoutManager manager = new LinearLayoutManager(activity);
- manager.setOrientation(LinearLayoutManager.VERTICAL);
- mList = new ArrayList<>();
- mDateAdapter = new DateAdapter(mList);
- dateRecyclerView.setLayoutManager(manager);
- dateRecyclerView.setAdapter(mDateAdapter);
- dateRecyclerView.setItemViewCacheSize(200);
- dateRecyclerView.setHasFixedSize(true);
- dateRecyclerView.setNestedScrollingEnabled(false);
- initData();
- }
-
- private void initData() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);//当前日期转date
- try {
- if (currentDate == null) {
- return;
- }
- mSetDate = dateFormat.parse(currentDate);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //初始化日期
- Calendar c = Calendar.getInstance();
- c.setTime(mSetDate);
- int firstM = c.get(Calendar.MONTH) + 1;//获取月份 月份是从0开始,需要+1
- int days = c.get(Calendar.DATE);//日期
- int week = c.get(Calendar.DAY_OF_WEEK);//周几
- //获取当前这个月最大天数
- int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- DateInfo month = new DateInfo();
- List dayList = new ArrayList<>();
- month.setDate(c.get(Calendar.YEAR) + "年" + firstM + "月");
- //当前月第一天是周几
- int w = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < w; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- dayList.add(dayInfo);
- }
- //计算当前月的天数
- for (int i = 1; i <= maxDay; i++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName(i + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + i);
- int c_year = Integer.parseInt(currentDate.split("-")[0]);
- int c_month = Integer.parseInt(currentDate.split("-")[1]);
- int c_day = Integer.parseInt(currentDate.split("-")[2]);
- if (c_year == c.get(Calendar.YEAR) && c_month == (c.get(Calendar.MONTH) + 1) && c_day == i) {
- childPosition = dayList.size();
- }
- //设置日期是否可选择
- dayInfo.setEnable(i >= days);
- dayList.add(dayInfo);
- }
- month.setList(dayList);
- mList.add(month);
- //获取下2个月的数据
- for (int i = 1; i <= 2; i++) {
- //当前月份循环减1
- c.add(Calendar.MONTH, 1);
- DateInfo nextMonth = new DateInfo();
- List nextDayList = new ArrayList<>();
- int maxDays = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- nextMonth.setDate(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月");
- //周几
- int weeks = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < weeks; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- nextDayList.add(dayInfo);
- }
- //该月的所有日期
- for (int j = 0; j < maxDays; j++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName((j + 1) + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + (j + 1));
- dayInfo.setEnable((j + 1) <= days || i != 2);
- nextDayList.add(dayInfo);
- }
- nextMonth.setList(nextDayList);
- mList.add(nextMonth);
- }
- mDateAdapter.updateData();
- }
-
- private void setInitSelect() {
- if (0 <= this.startGroupPosition && this.startGroupPosition < mList.size() &&
- 0 <= this.endGroupPosition && this.endGroupPosition < mList.size()) {
- int maxStartChild = mList.get(this.startGroupPosition).getList().size();
- int maxEndChild = mList.get(this.endGroupPosition).getList().size();
- if (0 <= this.startChildPosition && this.startChildPosition < maxStartChild &&
- 0 <= this.endChildPosition && this.endChildPosition < maxEndChild) {
- setInit();
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- }
-
- private void setInit() {
- mList.get(this.startGroupPosition).getList().get(this.startChildPosition).setStatus(1);
- mList.get(this.endGroupPosition).getList().get(this.endChildPosition).setStatus(2);
- mDateAdapter.notifyDataSetChanged();
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- dateRecyclerView.scrollToPosition(this.startGroupPosition);
- }
-
- //设置日历标明当前日期的状态
- private void setDefaultSelect() {
- if (childPosition == -1) return;
- String date = mList.get(0).getList().get(childPosition).getDate();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Date curDate = null;
- try {
- curDate = sdf.parse(formatDate(date));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- if (curDate == null) return;
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(curDate);
- calendar.add(Calendar.DATE, 1);
-
- int year = Integer.parseInt(date.split("-")[0]);
- int month = Integer.parseInt(date.split("-")[1]);
- if (year == calendar.get(Calendar.YEAR) && month == calendar.get(Calendar.MONTH) + 1
- && childPosition < mList.get(0).getList().size() - 1) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 0;
- this.endChildPosition = childPosition - 1;
- setInit();
- } else {
- for (int i = 0; i < mList.get(1).getList().size(); i++) {
- if (!TextUtils.isEmpty(mList.get(1).getList().get(i).getDate())) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 1;
- this.endChildPosition = i;
- setInit();
- break;
- }
- }
- }
- }
-
- /**
- * 设置起始时间和结束时间的选中标识,或者设置不选中
- *
- * @param startDate
- * @param endDate
- * @param status 选中设置为true 设置不选中false
- */
- @SuppressLint("SetTextI18n")
- private void getOffsetDate(String startDate, String endDate, boolean status) {
- //更新开始日期和结束日期的信息和状态
- Calendar sCalendar = CalendarUtil.toDate(startDate);
- Calendar eCalendar = CalendarUtil.toDate(endDate);
- startDateView.setText((sCalendar.get(Calendar.MONTH) + 1) + "月" + sCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(startDate));
- endDateView.setText((eCalendar.get(Calendar.MONTH) + 1) + "月" + eCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- endWeekView.setText("周" + CalendarUtil.getWeekByFormat(endDate));
- int daysOffset = Integer.parseInt(CalendarUtil.getTwoDay(endDate, startDate));
- if (daysOffset < 0) return;
- if (dayFlag) {
- sumTimeView.setText("共" + (daysOffset + 1) + "天");
- } else {
- sumTimeView.setText("共" + daysOffset + "晚");
- }
- //更改结束日期和完成按钮状态
- endDateLayout.setVisibility(View.VISIBLE);
- hintTextTextView.setVisibility(View.GONE);
- initButton("完成", true);
-
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Calendar c = Calendar.getInstance();
- DayInfo info = mList.get(startGroupPosition).getList().get(startChildPosition);
- try {
- c.setTime(sdf.parse(info.getDate()));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //根据2个时间的相差天数去循环
- for (int i = 0; i < daysOffset; i++) {
- //下一天(目标天)
- c.add(Calendar.DATE, 1);
- //改天的日期(目标天)
- String d = c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE);
- //循环group列表
- for (int j = 0; j < mList.size(); j++) {
- //获取该月的随机一个dayInfo
- DayInfo dayInfo = mList.get(j).getList().get(mList.get(j).getList().size() - 1);
- boolean isCheck = false;
- //判断该天是否和目标天是否是同一个月
- if (!TextUtils.isEmpty(dayInfo.getDate())
- && Integer.parseInt(dayInfo.getDate().split("-")[0]) == (c.get(Calendar.YEAR))
- && Integer.parseInt(dayInfo.getDate().split("-")[1]) == ((c.get(Calendar.MONTH) + 1))) {
- //是同一个月,则循环该月多有天数
- for (int t = 0; t < mList.get(j).getList().size(); t++) {
- //找到该月的日期与目标日期相同,存在,设置选择标记
- if (mList.get(j).getList().get(t).getDate().equals(d)) {
- mList.get(j).getList().get(t).setSelect(status);
- isCheck = true;
- break;
- }
- }
- }
- if (isCheck) {
- mDateAdapter.notifyItemChanged(j);
- break;
- }
- }
- }
- }
-
- private String formatDate(String date) {
- if (TextUtils.isEmpty(date)) return "";
- return date.split("-")[0] +
- "-" +
- (date.split("-")[1].length() < 2 ? "0" + date.split("-")[1] : date.split("-")[1]) +
- "-" +
- (date.split("-")[2].length() < 2 ? "0" + date.split("-")[2] : date.split("-")[2]);
- }
-
- private void create(View view) {
- this.showAtLocation(view, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
- }
-
- /**
- * return startDate、endDate(格式:2012-12-10)
- * 选中完成后返回开始时间和结束时间
- * return startGroupPosition、startChildPosition、endGroupPosition、endChildPosition
- * 返回选中时间区间的状态标记,监听中接收后在builder中setInitSelect()方法中直接传出入(可用于记录上次选中的状态,用户再点击进入的时候恢复上一次的区间选中状态)
- */
- public interface DateOnClickListener {
- void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition);
- }
-
- public static class Builder {
- private final String date;
- private final Activity activity;
- private final View parentView;
- private String startDesc;
- private String endDesc;
- private boolean dayFlag = true;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private DateOnClickListener mOnClickListener = null;
-
- public Builder(Activity activity, Date date, View parentView) {
- this.date = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(date);
- this.activity = activity;
- this.parentView = parentView;
- this.startDesc = "开始";
- this.endDesc = "结束";
- this.dayFlag = true;
- }
-
- public DatePopupWindow builder() {
- return new DatePopupWindow(this);
- }
-
- public Builder setInitSelect(int startGroup, int startChild, int endGroup, int endChild) {
- this.startGroupPosition = startGroup;
- this.startChildPosition = startChild;
- this.endGroupPosition = endGroup;
- this.endChildPosition = endChild;
- return this;
- }
-
- public Builder setInitDay(boolean dayFlag) {
- this.dayFlag = dayFlag;
- if (dayFlag) {
- this.startDesc = "开始";
- this.endDesc = "结束";
- } else {
- this.startDesc = "入住";
- this.endDesc = "离开";
- }
- return this;
- }
-
- public Builder setDateOnClickListener(DateOnClickListener mlListener) {
- mOnClickListener = mlListener;
- return this;
- }
- }
-
- private class DateAdapter extends BaseQuickAdapter {
-
- DateAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date, data);
- }
-
- @Override
- public void onBindViewHolder(BaseViewHolder holder, int positions) {
- super.onBindViewHolder(holder, positions);
- TextView monthTitleView = holder.getView(R.id.monthTitleView);
- monthTitleView.setText(mList.get(positions).getDate());
- }
-
- @Override
- protected void convert(final BaseViewHolder helper, final DateInfo item) {
- RecyclerView monthRecyclerView = helper.getView(R.id.monthRecyclerView);
-
- GridLayoutManager manager = new GridLayoutManager(activity, 7);
- monthRecyclerView.setLayoutManager(manager);
- final TempAdapter groupAdapter = new TempAdapter(item.getList());
- monthRecyclerView.setAdapter(groupAdapter);
- monthRecyclerView.setItemViewCacheSize(200);
- monthRecyclerView.setHasFixedSize(true);
- monthRecyclerView.setNestedScrollingEnabled(false);
- groupAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
- @Override
- public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
- if (!item.getList().get(position).isEnable()) return;
- if (TextUtils.isEmpty(item.getList().get(position).getName())) return;
- if (TextUtils.isEmpty(item.getList().get(position).getDate())) return;
- int status = item.getList().get(position).getStatus();
- if (status == 0 &&
- startGroupPosition == -1 &&
- startChildPosition == -1 &&
- item.getList().get(position).isEnable()) {
- //开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
-
- startDateView.setText(CalendarUtil.FormatDateMD(item.getList().get(position).getDate()));
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- if (status == 0 && endGroupPosition == -1 && endChildPosition == -1) {
- int offset = Integer.parseInt(CalendarUtil.getTwoDay(item.getList().get(position).getDate()
- , mList.get(startGroupPosition).getList().get(startChildPosition).getDate()));
- //判断该离开日期是否比入住时间还小,是则重新设置入住时间。
- if (offset < 0) {
- //刷新上一个开始日期
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- //设置新的入开始日期
- item.getList().get(position).setStatus(1);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- adapter.notifyItemChanged(position);
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- item.getList().get(position).setStatus(2);
- adapter.notifyItemChanged(position);
- endGroupPosition = helper.getAdapterPosition();
- endChildPosition = position;
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- return;
- }
- //重置开始和结束时间,设置开始时间
- if (status == 0 && endGroupPosition != -1 && endChildPosition != -1 && startChildPosition != -1 && startGroupPosition != -1) {
- //重置开始和结束
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mList.get(endGroupPosition).getList().get(endChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- mDateAdapter.notifyItemChanged(endGroupPosition);
- //重置选择间区的状态
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), false);
- //设置开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
-
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- endGroupPosition = -1;
- endChildPosition = -1;
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- }
- }
- });
- }
-
- void updateData() {
- notifyDataSetChanged();
- }
- }
-
- private class TempAdapter extends BaseQuickAdapter {
- TempAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date_child, data);
- }
-
- @Override
- protected void convert(BaseViewHolder helper, DayInfo item) {
- String name = item.getName();
- boolean isSelect = item.isSelect();
- boolean isEnable = item.isEnable();
- int status = item.getStatus();
- helper.setText(R.id.dateView, name);
- //默认
- if (status == 0) {
- if (isSelect) {
- //选中
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else {
- //没选中状态
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.black));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.white));
- }
- } else if (status == 1) {
- //开始
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, startDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else if (status == 2) {
- //结束
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, endDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- }
- //设置当前日期前的样式,没选中,并状态为0情况下
- if (!isSelect && status == 0) {
- if (!isEnable) {
- //无效
- TextView textView = helper.getView(R.id.dateDelView);
- if (TextUtils.isEmpty(name)) {
- textView.setVisibility(View.GONE);
- } else {
- textView.setText(name);
- textView.setVisibility(View.VISIBLE);
- }
- textView.setTextColor(activity.getResources().getColor(R.color.mainThemeColor));
- helper.getView(R.id.dateView).setVisibility(View.GONE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- } else {
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- TextView textView = helper.getView(R.id.dateView);
- textView.setTextColor(activity.getResources().getColor(R.color.black));
- }
- }
- }
- }
-
- private class ShareDismissListener implements OnDismissListener {
- @Override
- public void onDismiss() {
- backgroundAlpha(activity);
- }
- }
-
- private void initButton(String msg, boolean enable) {
- selectDoneButton.setText(msg);
- if (enable) {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.mainThemeColor));
- } else {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.hintTextColor));
- }
- selectDoneButton.setEnabled(enable);
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java
deleted file mode 100755
index 9bffa8e..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-public class DayInfo {
- private String name;
- private boolean isEnable;
- private String date;
- private int status = 0;
- private boolean select;
-
- boolean isSelect() {
- return select;
- }
-
- void setSelect(boolean select) {
- this.select = select;
- }
-
- int getStatus() {
- return status;
- }
-
- void setStatus(int status) {
- this.status = status;
- }
-
- String getDate() {
- return date;
- }
-
- void setDate(String date) {
- this.date = date;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- boolean isEnable() {
- return isEnable;
- }
-
- void setEnable(boolean enable) {
- isEnable = enable;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java
deleted file mode 100755
index 7bc6dbf..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.util.AttributeSet;
-
-import androidx.annotation.Nullable;
-import androidx.appcompat.widget.AppCompatTextView;
-
-import com.casic.dcms.R;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
-
-/**
- * 不可选日期斜线
- */
-public class LineTextView extends AppCompatTextView {
- private Paint mPaint;
- private Context context;
-
- public LineTextView(Context context, @Nullable AttributeSet attrs) {
- super(context, attrs);
- this.context = context;
- mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
- mPaint.setStrokeWidth(QMUIDisplayHelper.dp2px(context, 1));
- mPaint.setColor(getResources().getColor(R.color.punishColor));
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- //斜线坐标
- int startX, startY, endX, endY;
-
- //视图宽高
- int width = getWidth();
- int height = getHeight();
-
- //计算坐标
- startX = width;
- startY = QMUIDisplayHelper.dp2px(context, 2);
- endX = 0;
- endY = height - QMUIDisplayHelper.dp2px(context, 3);
- //画斜线
- canvas.drawLine(startX, startY, endX, endY, mPaint);
- }
-}
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml b/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml
new file mode 100644
index 0000000..dbc008c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_left_right.xml b/app/src/main/res/drawable/ic_left_right.xml
new file mode 100644
index 0000000..e80b0f5
--- /dev/null
+++ b/app/src/main/res/drawable/ic_left_right.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_sign.xml b/app/src/main/res/drawable/ic_sign.xml
index f914440..8e3e973 100644
--- a/app/src/main/res/drawable/ic_sign.xml
+++ b/app/src/main/res/drawable/ic_sign.xml
@@ -4,9 +4,9 @@
android:viewportWidth="1024"
android:viewportHeight="1024">
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 13bc9ef..1416b2c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -28,7 +28,9 @@
+
+
@@ -60,7 +62,12 @@
+
+
+
+
+
@@ -80,7 +87,9 @@
+
+
diff --git a/app/build.gradle b/app/build.gradle
index a4ee6d9..2e1bb36 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -109,7 +109,6 @@
implementation 'com.amap.api:location:5.3.1'
//经纬度逆编码
implementation 'com.amap.api:search:8.1.0'
- implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
//桌面角标
implementation "me.leolin:ShortcutBadger:1.1.22@aar"
}
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
index 4a0b2bb..00f69ae 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
@@ -16,11 +16,11 @@
import com.casic.dcms.databinding.ActivityCleanRecordsBinding;
import com.casic.dcms.mvvm.model.CleanRecordBean;
import com.casic.dcms.mvvm.vm.ToiletViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
import com.casic.dcms.utils.StringHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -41,14 +41,8 @@
private RecordListAdapter adapter;
private WeakReferenceHandler weakReferenceHandler;
private int pageIndex = 1;
- private String start;
- private String end;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -63,7 +57,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class);
- toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex);
+ }
+
+ @Override
+ protected void onResume() {
+ obtainCleanRecordList("", "");
+ super.onResume();
}
@Override
@@ -71,23 +70,26 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(CleaningRecordsActivity.this, CalendarUtil.obtainLastTwoMonth(), view)
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
-
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
- obtainCleanRecordList();
+ obtainCleanRecordList(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +98,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +106,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
@@ -146,7 +148,7 @@
});
}
- private void obtainCleanRecordList() {
+ private void obtainCleanRecordList(String start, String end) {
toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex);
}
@@ -161,7 +163,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
index aa0d7a9..8741e2f 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
@@ -14,10 +14,10 @@
import com.casic.dcms.databinding.ActivityMaintainRecordBinding;
import com.casic.dcms.mvvm.model.MaintainRecordBean;
import com.casic.dcms.mvvm.vm.BridgeViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -37,15 +37,9 @@
private List dataBeans = new ArrayList<>();
private WeakReferenceHandler weakReferenceHandler;
private MaintainRecordAdapter adapter;
- private String start;
- private String end;
private int pageIndex = 1;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -60,8 +54,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class);
+ }
- obtainMaintainRecord();
+ @Override
+ protected void onResume() {
+ obtainMaintainRecord("", "");
+ super.onResume();
}
@Override
@@ -69,25 +67,28 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), view) //初始化
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
- //点击完成按钮后回调返回方法
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +97,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +105,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
@@ -145,7 +146,7 @@
});
}
- private void obtainMaintainRecord() {
+ private void obtainMaintainRecord(String start, String end) {
bridgeViewModel.obtainMaintainRecord(start, end, pageIndex);
}
@@ -160,7 +161,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
new file mode 100644
index 0000000..397a389
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
@@ -0,0 +1,220 @@
+package com.casic.dcms.widgets;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import androidx.fragment.app.FragmentManager;
+
+import com.casic.dcms.R;
+import com.casic.dcms.utils.LocaleConstant;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.utils.ColorUtil;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
+import com.pengxh.androidx.lite.utils.TimeOrDateUtil;
+import com.pengxh.androidx.lite.widget.EasyToast;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+public class DateSelectDialog extends Dialog {
+
+ private final Context ctx;
+ private final String title;
+ private final String negativeBtn;
+ private final String positiveBtn;
+ private final OnDialogButtonClickListener listener;
+ private final FragmentManager fragmentManager;
+ private final Type type;
+
+ private DateSelectDialog(Builder builder) {
+ super(builder.context);
+ this.ctx = builder.context;
+ this.title = builder.title;
+ this.negativeBtn = builder.negativeBtn;
+ this.positiveBtn = builder.positiveBtn;
+ this.listener = builder.listener;
+ this.fragmentManager = builder.fragmentManager;
+ this.type = builder.type;
+ }
+
+ public static class Builder {
+ private Context context;
+ private String title;
+ private String negativeBtn;
+ private String positiveBtn;
+ private OnDialogButtonClickListener listener;
+ private FragmentManager fragmentManager;
+ private Type type;
+
+ public Builder setContext(Context context) {
+ this.context = context;
+ return this;
+ }
+
+ public Builder setTitle(String title) {
+ this.title = title;
+ return this;
+ }
+
+ public Builder setNegativeButton(String name) {
+ this.negativeBtn = name;
+ return this;
+ }
+
+ public Builder setPositiveButton(String name) {
+ this.positiveBtn = name;
+ return this;
+ }
+
+ public Builder setOnDialogButtonClickListener(OnDialogButtonClickListener listener) {
+ this.listener = listener;
+ return this;
+ }
+
+ public Builder setFragmentManager(FragmentManager fragmentManager) {
+ this.fragmentManager = fragmentManager;
+ return this;
+ }
+
+ public Builder setCalendarType(Type calendarType) {
+ this.type = calendarType;
+ return this;
+ }
+
+ public DateSelectDialog build() {
+ return new DateSelectDialog(this);
+ }
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ DialogLayoutParam.resetParams(this, Gravity.CENTER, R.style.UserDefinedAnimation, 0.85);
+ setContentView(R.layout.dialog_select_date);
+ setCancelable(false);
+ setCanceledOnTouchOutside(false);
+
+
+ if (!TextUtils.isEmpty(title)) {
+ ((TextView) findViewById(R.id.dialogTitleView)).setText(title);
+ }
+
+ EditText startDateView = findViewById(R.id.startDateView);
+ startDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ startDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ EditText endDateView = findViewById(R.id.endDateView);
+ endDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ endDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ Button dialogCancelButton = findViewById(R.id.dialogCancelButton);
+ dialogCancelButton.setText(negativeBtn);
+ dialogCancelButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ listener.onCancelClick();
+ dismiss();
+ }
+ });
+
+ Button dialogConfirmButton = findViewById(R.id.dialogConfirmButton);
+ dialogConfirmButton.setText(positiveBtn);
+ dialogConfirmButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //判断其实时间和结束时间
+ String startDate = startDateView.getText().toString();
+ String endDate = endDateView.getText().toString();
+ if (isEarlierThanStart(startDate, endDate)) {
+ EasyToast.show(ctx, "结束时间不能早于开始时间");
+ return;
+ }
+ listener.onConfirmClick(startDate, endDate);
+ dismiss();
+ }
+ });
+ }
+
+ public interface OnDialogButtonClickListener {
+ void onConfirmClick(String startDate, String endDate);
+
+ void onCancelClick();
+ }
+
+ /**
+ * 判断时间是否早于当前时间
+ */
+ private boolean isEarlierThanStart(String start, String end) {
+ if (TextUtils.isEmpty(start) || TextUtils.isEmpty(end)) {
+ return false;
+ }
+ SimpleDateFormat dateFormat;
+ if (type == Type.ALL) {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
+ } else {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
+ }
+ try {
+ return dateFormat.parse(start).getTime() > dateFormat.parse(end).getTime();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
index b4e5dcb..c814a2b 100644
--- a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
+++ b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
@@ -2,19 +2,15 @@
import android.app.Dialog;
import android.content.Context;
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
+import android.widget.Button;
import android.widget.TextView;
import com.casic.dcms.R;
-import com.casic.dcms.base.BaseApplication;
import com.casic.dcms.utils.TimeOrDateUtil;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
import java.util.Timer;
import java.util.TimerTask;
@@ -37,16 +33,7 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
- //手动设置dialog宽度
- Window window = getWindow();
- window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
- window.getDecorView().setBackgroundColor(Color.TRANSPARENT);
- WindowManager.LayoutParams params = window.getAttributes();
- params.width = QMUIDisplayHelper.dp2px(BaseApplication.getInstance(), 300);
- params.height = WindowManager.LayoutParams.WRAP_CONTENT;
- window.setAttributes(params);
-
+ DialogLayoutParam.resetParams(this, 0.85);
setContentView(R.layout.dialog_sign_in);
timer = new Timer();
initView();
@@ -69,8 +56,8 @@
if (!TextUtils.isEmpty(address)) {
signInPlaceView.setText(address);
}
- TextView signInView = findViewById(R.id.signInView);
- signInView.setOnClickListener(this);
+ Button signInButton = findViewById(R.id.signInButton);
+ signInButton.setOnClickListener(this);
}
@Override
@@ -84,7 +71,7 @@
@Override
public void onClick(View view) {
int i = view.getId();
- if (i == R.id.signInView) {
+ if (i == R.id.signInButton) {
if (listener != null) {
listener.onViewClick();
}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
deleted file mode 100755
index 122b863..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import java.util.List;
-
-public class DateInfo {
- private String date;
- private List list;
-
- public String getDate() {
- return date;
- }
-
- public void setDate(String date) {
- this.date = date;
- }
-
- public List getList() {
- return list;
- }
-
- public void setList(List list) {
- this.list = list;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
deleted file mode 100755
index 7fdb45f..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
+++ /dev/null
@@ -1,647 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.Context;
-import android.graphics.drawable.BitmapDrawable;
-import android.text.TextUtils;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.LinearLayout;
-import android.widget.PopupWindow;
-import android.widget.TextView;
-
-import androidx.annotation.Nullable;
-import androidx.core.app.ActivityCompat;
-import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.utils.CalendarUtil;
-import com.chad.library.adapter.base.BaseQuickAdapter;
-import com.chad.library.adapter.base.BaseViewHolder;
-import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-
-@SuppressLint("SetTextI18n")
-public class DatePopupWindow extends PopupWindow {
- private static final String TAG = "DatePopupWindow";
- private final View rootView;
- private QMUIRoundButton selectDoneButton;
- private RecyclerView dateRecyclerView;
- private TextView hintTextTextView;
- private TextView endWeekView;
- private TextView endDateView;
- private LinearLayout endDateLayout;
- private TextView sumTimeView;
- private TextView startWeekView;
- private TextView startDateView;
-
- private final boolean dayFlag;
- private final Activity activity;
- private Date mSetDate;
- private final String currentDate;
- private final String startDesc;
- private final String endDesc;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private int childPosition = -1;//当天在列表中的子索引
- private DateAdapter mDateAdapter;
- private List mList;
- private final DateOnClickListener mOnClickListener;
-
- private DatePopupWindow(Builder builder) {
- this.activity = builder.activity;
- this.currentDate = builder.date;
- this.startDesc = builder.startDesc;
- this.endDesc = builder.endDesc;
- this.dayFlag = builder.dayFlag;
- this.startGroupPosition = builder.startGroupPosition;
- this.startChildPosition = builder.startChildPosition;
- this.endGroupPosition = builder.endGroupPosition;
- this.endChildPosition = builder.endChildPosition;
- this.mOnClickListener = builder.mOnClickListener;
-
- LayoutInflater inflater = (LayoutInflater) this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- rootView = inflater.inflate(R.layout.popu_date, null);
- this.setContentView(rootView);
- this.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setAnimationStyle(R.style.dialogWindowAnim);
- this.setFocusable(true);
- this.setBackgroundDrawable(new BitmapDrawable());
- this.setOnDismissListener(new ShareDismissListener());
- backgroundAlpha(activity);
-
- initView();
- setInitSelect();
- create(builder.parentView);
- }
-
- private void backgroundAlpha(Activity context) {
- WindowManager.LayoutParams lp = context.getWindow().getAttributes();
- lp.alpha = 1.0f; //0.0-1.0
- context.getWindow().setAttributes(lp);
- }
-
- private void initView() {
- selectDoneButton = rootView.findViewById(R.id.selectDoneButton);
- dateRecyclerView = rootView.findViewById(R.id.dateRecyclerView);
- hintTextTextView = rootView.findViewById(R.id.hintTextTextView);
- endWeekView = rootView.findViewById(R.id.endWeekView);
- endDateView = rootView.findViewById(R.id.endDateView);
- endDateLayout = rootView.findViewById(R.id.endDateLayout);
- sumTimeView = rootView.findViewById(R.id.sumTimeView);
- startWeekView = rootView.findViewById(R.id.startWeekView);
- startDateView = rootView.findViewById(R.id.startDateView);
- TextView clearButton = rootView.findViewById(R.id.clearButton);
- TextView closeButton = rootView.findViewById(R.id.closeButton);
- TextView startDateDescView = rootView.findViewById(R.id.startDateDescView);
- TextView endDateDescView = rootView.findViewById(R.id.endDateDescView);
- startDateDescView.setText(startDesc + "日期");
- endDateDescView.setText(endDesc + "日期");
- selectDoneButton.setChangeAlphaWhenPress(true);
- selectDoneButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mOnClickListener != null) {
- String startDate = mList.get(startGroupPosition)
- .getList()
- .get(startChildPosition)
- .getDate();
- String endDate = mList.get(endGroupPosition)
- .getList()
- .get(endChildPosition)
- .getDate();
- mOnClickListener.getDate(startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition);
- }
- DatePopupWindow.this.dismiss();
- }
- });
- closeButton.setOnClickListener(v -> DatePopupWindow.this.dismiss());
- clearButton.setOnClickListener(v -> {
- initView();//重置当前view
- setDefaultSelect();//选中初始状态值
- });
- LinearLayoutManager manager = new LinearLayoutManager(activity);
- manager.setOrientation(LinearLayoutManager.VERTICAL);
- mList = new ArrayList<>();
- mDateAdapter = new DateAdapter(mList);
- dateRecyclerView.setLayoutManager(manager);
- dateRecyclerView.setAdapter(mDateAdapter);
- dateRecyclerView.setItemViewCacheSize(200);
- dateRecyclerView.setHasFixedSize(true);
- dateRecyclerView.setNestedScrollingEnabled(false);
- initData();
- }
-
- private void initData() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);//当前日期转date
- try {
- if (currentDate == null) {
- return;
- }
- mSetDate = dateFormat.parse(currentDate);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //初始化日期
- Calendar c = Calendar.getInstance();
- c.setTime(mSetDate);
- int firstM = c.get(Calendar.MONTH) + 1;//获取月份 月份是从0开始,需要+1
- int days = c.get(Calendar.DATE);//日期
- int week = c.get(Calendar.DAY_OF_WEEK);//周几
- //获取当前这个月最大天数
- int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- DateInfo month = new DateInfo();
- List dayList = new ArrayList<>();
- month.setDate(c.get(Calendar.YEAR) + "年" + firstM + "月");
- //当前月第一天是周几
- int w = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < w; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- dayList.add(dayInfo);
- }
- //计算当前月的天数
- for (int i = 1; i <= maxDay; i++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName(i + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + i);
- int c_year = Integer.parseInt(currentDate.split("-")[0]);
- int c_month = Integer.parseInt(currentDate.split("-")[1]);
- int c_day = Integer.parseInt(currentDate.split("-")[2]);
- if (c_year == c.get(Calendar.YEAR) && c_month == (c.get(Calendar.MONTH) + 1) && c_day == i) {
- childPosition = dayList.size();
- }
- //设置日期是否可选择
- dayInfo.setEnable(i >= days);
- dayList.add(dayInfo);
- }
- month.setList(dayList);
- mList.add(month);
- //获取下2个月的数据
- for (int i = 1; i <= 2; i++) {
- //当前月份循环减1
- c.add(Calendar.MONTH, 1);
- DateInfo nextMonth = new DateInfo();
- List nextDayList = new ArrayList<>();
- int maxDays = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- nextMonth.setDate(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月");
- //周几
- int weeks = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < weeks; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- nextDayList.add(dayInfo);
- }
- //该月的所有日期
- for (int j = 0; j < maxDays; j++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName((j + 1) + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + (j + 1));
- dayInfo.setEnable((j + 1) <= days || i != 2);
- nextDayList.add(dayInfo);
- }
- nextMonth.setList(nextDayList);
- mList.add(nextMonth);
- }
- mDateAdapter.updateData();
- }
-
- private void setInitSelect() {
- if (0 <= this.startGroupPosition && this.startGroupPosition < mList.size() &&
- 0 <= this.endGroupPosition && this.endGroupPosition < mList.size()) {
- int maxStartChild = mList.get(this.startGroupPosition).getList().size();
- int maxEndChild = mList.get(this.endGroupPosition).getList().size();
- if (0 <= this.startChildPosition && this.startChildPosition < maxStartChild &&
- 0 <= this.endChildPosition && this.endChildPosition < maxEndChild) {
- setInit();
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- }
-
- private void setInit() {
- mList.get(this.startGroupPosition).getList().get(this.startChildPosition).setStatus(1);
- mList.get(this.endGroupPosition).getList().get(this.endChildPosition).setStatus(2);
- mDateAdapter.notifyDataSetChanged();
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- dateRecyclerView.scrollToPosition(this.startGroupPosition);
- }
-
- //设置日历标明当前日期的状态
- private void setDefaultSelect() {
- if (childPosition == -1) return;
- String date = mList.get(0).getList().get(childPosition).getDate();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Date curDate = null;
- try {
- curDate = sdf.parse(formatDate(date));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- if (curDate == null) return;
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(curDate);
- calendar.add(Calendar.DATE, 1);
-
- int year = Integer.parseInt(date.split("-")[0]);
- int month = Integer.parseInt(date.split("-")[1]);
- if (year == calendar.get(Calendar.YEAR) && month == calendar.get(Calendar.MONTH) + 1
- && childPosition < mList.get(0).getList().size() - 1) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 0;
- this.endChildPosition = childPosition - 1;
- setInit();
- } else {
- for (int i = 0; i < mList.get(1).getList().size(); i++) {
- if (!TextUtils.isEmpty(mList.get(1).getList().get(i).getDate())) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 1;
- this.endChildPosition = i;
- setInit();
- break;
- }
- }
- }
- }
-
- /**
- * 设置起始时间和结束时间的选中标识,或者设置不选中
- *
- * @param startDate
- * @param endDate
- * @param status 选中设置为true 设置不选中false
- */
- @SuppressLint("SetTextI18n")
- private void getOffsetDate(String startDate, String endDate, boolean status) {
- //更新开始日期和结束日期的信息和状态
- Calendar sCalendar = CalendarUtil.toDate(startDate);
- Calendar eCalendar = CalendarUtil.toDate(endDate);
- startDateView.setText((sCalendar.get(Calendar.MONTH) + 1) + "月" + sCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(startDate));
- endDateView.setText((eCalendar.get(Calendar.MONTH) + 1) + "月" + eCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- endWeekView.setText("周" + CalendarUtil.getWeekByFormat(endDate));
- int daysOffset = Integer.parseInt(CalendarUtil.getTwoDay(endDate, startDate));
- if (daysOffset < 0) return;
- if (dayFlag) {
- sumTimeView.setText("共" + (daysOffset + 1) + "天");
- } else {
- sumTimeView.setText("共" + daysOffset + "晚");
- }
- //更改结束日期和完成按钮状态
- endDateLayout.setVisibility(View.VISIBLE);
- hintTextTextView.setVisibility(View.GONE);
- initButton("完成", true);
-
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Calendar c = Calendar.getInstance();
- DayInfo info = mList.get(startGroupPosition).getList().get(startChildPosition);
- try {
- c.setTime(sdf.parse(info.getDate()));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //根据2个时间的相差天数去循环
- for (int i = 0; i < daysOffset; i++) {
- //下一天(目标天)
- c.add(Calendar.DATE, 1);
- //改天的日期(目标天)
- String d = c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE);
- //循环group列表
- for (int j = 0; j < mList.size(); j++) {
- //获取该月的随机一个dayInfo
- DayInfo dayInfo = mList.get(j).getList().get(mList.get(j).getList().size() - 1);
- boolean isCheck = false;
- //判断该天是否和目标天是否是同一个月
- if (!TextUtils.isEmpty(dayInfo.getDate())
- && Integer.parseInt(dayInfo.getDate().split("-")[0]) == (c.get(Calendar.YEAR))
- && Integer.parseInt(dayInfo.getDate().split("-")[1]) == ((c.get(Calendar.MONTH) + 1))) {
- //是同一个月,则循环该月多有天数
- for (int t = 0; t < mList.get(j).getList().size(); t++) {
- //找到该月的日期与目标日期相同,存在,设置选择标记
- if (mList.get(j).getList().get(t).getDate().equals(d)) {
- mList.get(j).getList().get(t).setSelect(status);
- isCheck = true;
- break;
- }
- }
- }
- if (isCheck) {
- mDateAdapter.notifyItemChanged(j);
- break;
- }
- }
- }
- }
-
- private String formatDate(String date) {
- if (TextUtils.isEmpty(date)) return "";
- return date.split("-")[0] +
- "-" +
- (date.split("-")[1].length() < 2 ? "0" + date.split("-")[1] : date.split("-")[1]) +
- "-" +
- (date.split("-")[2].length() < 2 ? "0" + date.split("-")[2] : date.split("-")[2]);
- }
-
- private void create(View view) {
- this.showAtLocation(view, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
- }
-
- /**
- * return startDate、endDate(格式:2012-12-10)
- * 选中完成后返回开始时间和结束时间
- * return startGroupPosition、startChildPosition、endGroupPosition、endChildPosition
- * 返回选中时间区间的状态标记,监听中接收后在builder中setInitSelect()方法中直接传出入(可用于记录上次选中的状态,用户再点击进入的时候恢复上一次的区间选中状态)
- */
- public interface DateOnClickListener {
- void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition);
- }
-
- public static class Builder {
- private final String date;
- private final Activity activity;
- private final View parentView;
- private String startDesc;
- private String endDesc;
- private boolean dayFlag = true;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private DateOnClickListener mOnClickListener = null;
-
- public Builder(Activity activity, Date date, View parentView) {
- this.date = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(date);
- this.activity = activity;
- this.parentView = parentView;
- this.startDesc = "开始";
- this.endDesc = "结束";
- this.dayFlag = true;
- }
-
- public DatePopupWindow builder() {
- return new DatePopupWindow(this);
- }
-
- public Builder setInitSelect(int startGroup, int startChild, int endGroup, int endChild) {
- this.startGroupPosition = startGroup;
- this.startChildPosition = startChild;
- this.endGroupPosition = endGroup;
- this.endChildPosition = endChild;
- return this;
- }
-
- public Builder setInitDay(boolean dayFlag) {
- this.dayFlag = dayFlag;
- if (dayFlag) {
- this.startDesc = "开始";
- this.endDesc = "结束";
- } else {
- this.startDesc = "入住";
- this.endDesc = "离开";
- }
- return this;
- }
-
- public Builder setDateOnClickListener(DateOnClickListener mlListener) {
- mOnClickListener = mlListener;
- return this;
- }
- }
-
- private class DateAdapter extends BaseQuickAdapter {
-
- DateAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date, data);
- }
-
- @Override
- public void onBindViewHolder(BaseViewHolder holder, int positions) {
- super.onBindViewHolder(holder, positions);
- TextView monthTitleView = holder.getView(R.id.monthTitleView);
- monthTitleView.setText(mList.get(positions).getDate());
- }
-
- @Override
- protected void convert(final BaseViewHolder helper, final DateInfo item) {
- RecyclerView monthRecyclerView = helper.getView(R.id.monthRecyclerView);
-
- GridLayoutManager manager = new GridLayoutManager(activity, 7);
- monthRecyclerView.setLayoutManager(manager);
- final TempAdapter groupAdapter = new TempAdapter(item.getList());
- monthRecyclerView.setAdapter(groupAdapter);
- monthRecyclerView.setItemViewCacheSize(200);
- monthRecyclerView.setHasFixedSize(true);
- monthRecyclerView.setNestedScrollingEnabled(false);
- groupAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
- @Override
- public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
- if (!item.getList().get(position).isEnable()) return;
- if (TextUtils.isEmpty(item.getList().get(position).getName())) return;
- if (TextUtils.isEmpty(item.getList().get(position).getDate())) return;
- int status = item.getList().get(position).getStatus();
- if (status == 0 &&
- startGroupPosition == -1 &&
- startChildPosition == -1 &&
- item.getList().get(position).isEnable()) {
- //开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
-
- startDateView.setText(CalendarUtil.FormatDateMD(item.getList().get(position).getDate()));
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- if (status == 0 && endGroupPosition == -1 && endChildPosition == -1) {
- int offset = Integer.parseInt(CalendarUtil.getTwoDay(item.getList().get(position).getDate()
- , mList.get(startGroupPosition).getList().get(startChildPosition).getDate()));
- //判断该离开日期是否比入住时间还小,是则重新设置入住时间。
- if (offset < 0) {
- //刷新上一个开始日期
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- //设置新的入开始日期
- item.getList().get(position).setStatus(1);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- adapter.notifyItemChanged(position);
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- item.getList().get(position).setStatus(2);
- adapter.notifyItemChanged(position);
- endGroupPosition = helper.getAdapterPosition();
- endChildPosition = position;
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- return;
- }
- //重置开始和结束时间,设置开始时间
- if (status == 0 && endGroupPosition != -1 && endChildPosition != -1 && startChildPosition != -1 && startGroupPosition != -1) {
- //重置开始和结束
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mList.get(endGroupPosition).getList().get(endChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- mDateAdapter.notifyItemChanged(endGroupPosition);
- //重置选择间区的状态
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), false);
- //设置开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
-
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- endGroupPosition = -1;
- endChildPosition = -1;
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- }
- }
- });
- }
-
- void updateData() {
- notifyDataSetChanged();
- }
- }
-
- private class TempAdapter extends BaseQuickAdapter {
- TempAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date_child, data);
- }
-
- @Override
- protected void convert(BaseViewHolder helper, DayInfo item) {
- String name = item.getName();
- boolean isSelect = item.isSelect();
- boolean isEnable = item.isEnable();
- int status = item.getStatus();
- helper.setText(R.id.dateView, name);
- //默认
- if (status == 0) {
- if (isSelect) {
- //选中
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else {
- //没选中状态
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.black));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.white));
- }
- } else if (status == 1) {
- //开始
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, startDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else if (status == 2) {
- //结束
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, endDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- }
- //设置当前日期前的样式,没选中,并状态为0情况下
- if (!isSelect && status == 0) {
- if (!isEnable) {
- //无效
- TextView textView = helper.getView(R.id.dateDelView);
- if (TextUtils.isEmpty(name)) {
- textView.setVisibility(View.GONE);
- } else {
- textView.setText(name);
- textView.setVisibility(View.VISIBLE);
- }
- textView.setTextColor(activity.getResources().getColor(R.color.mainThemeColor));
- helper.getView(R.id.dateView).setVisibility(View.GONE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- } else {
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- TextView textView = helper.getView(R.id.dateView);
- textView.setTextColor(activity.getResources().getColor(R.color.black));
- }
- }
- }
- }
-
- private class ShareDismissListener implements OnDismissListener {
- @Override
- public void onDismiss() {
- backgroundAlpha(activity);
- }
- }
-
- private void initButton(String msg, boolean enable) {
- selectDoneButton.setText(msg);
- if (enable) {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.mainThemeColor));
- } else {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.hintTextColor));
- }
- selectDoneButton.setEnabled(enable);
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java
deleted file mode 100755
index 9bffa8e..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-public class DayInfo {
- private String name;
- private boolean isEnable;
- private String date;
- private int status = 0;
- private boolean select;
-
- boolean isSelect() {
- return select;
- }
-
- void setSelect(boolean select) {
- this.select = select;
- }
-
- int getStatus() {
- return status;
- }
-
- void setStatus(int status) {
- this.status = status;
- }
-
- String getDate() {
- return date;
- }
-
- void setDate(String date) {
- this.date = date;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- boolean isEnable() {
- return isEnable;
- }
-
- void setEnable(boolean enable) {
- isEnable = enable;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java
deleted file mode 100755
index 7bc6dbf..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.util.AttributeSet;
-
-import androidx.annotation.Nullable;
-import androidx.appcompat.widget.AppCompatTextView;
-
-import com.casic.dcms.R;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
-
-/**
- * 不可选日期斜线
- */
-public class LineTextView extends AppCompatTextView {
- private Paint mPaint;
- private Context context;
-
- public LineTextView(Context context, @Nullable AttributeSet attrs) {
- super(context, attrs);
- this.context = context;
- mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
- mPaint.setStrokeWidth(QMUIDisplayHelper.dp2px(context, 1));
- mPaint.setColor(getResources().getColor(R.color.punishColor));
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- //斜线坐标
- int startX, startY, endX, endY;
-
- //视图宽高
- int width = getWidth();
- int height = getHeight();
-
- //计算坐标
- startX = width;
- startY = QMUIDisplayHelper.dp2px(context, 2);
- endX = 0;
- endY = height - QMUIDisplayHelper.dp2px(context, 3);
- //画斜线
- canvas.drawLine(startX, startY, endX, endY, mPaint);
- }
-}
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml b/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml
new file mode 100644
index 0000000..dbc008c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_left_right.xml b/app/src/main/res/drawable/ic_left_right.xml
new file mode 100644
index 0000000..e80b0f5
--- /dev/null
+++ b/app/src/main/res/drawable/ic_left_right.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_sign.xml b/app/src/main/res/drawable/ic_sign.xml
index f914440..8e3e973 100644
--- a/app/src/main/res/drawable/ic_sign.xml
+++ b/app/src/main/res/drawable/ic_sign.xml
@@ -4,9 +4,9 @@
android:viewportWidth="1024"
android:viewportHeight="1024">
diff --git a/app/src/main/res/layout/adapter_select_date.xml b/app/src/main/res/layout/adapter_select_date.xml
deleted file mode 100644
index 9e22615..0000000
--- a/app/src/main/res/layout/adapter_select_date.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 13bc9ef..1416b2c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -28,7 +28,9 @@
+
+
@@ -60,7 +62,12 @@
+
+
+
+
+
@@ -80,7 +87,9 @@
+
+
diff --git a/app/build.gradle b/app/build.gradle
index a4ee6d9..2e1bb36 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -109,7 +109,6 @@
implementation 'com.amap.api:location:5.3.1'
//经纬度逆编码
implementation 'com.amap.api:search:8.1.0'
- implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
//桌面角标
implementation "me.leolin:ShortcutBadger:1.1.22@aar"
}
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
index 4a0b2bb..00f69ae 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
@@ -16,11 +16,11 @@
import com.casic.dcms.databinding.ActivityCleanRecordsBinding;
import com.casic.dcms.mvvm.model.CleanRecordBean;
import com.casic.dcms.mvvm.vm.ToiletViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
import com.casic.dcms.utils.StringHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -41,14 +41,8 @@
private RecordListAdapter adapter;
private WeakReferenceHandler weakReferenceHandler;
private int pageIndex = 1;
- private String start;
- private String end;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -63,7 +57,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class);
- toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex);
+ }
+
+ @Override
+ protected void onResume() {
+ obtainCleanRecordList("", "");
+ super.onResume();
}
@Override
@@ -71,23 +70,26 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(CleaningRecordsActivity.this, CalendarUtil.obtainLastTwoMonth(), view)
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
-
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
- obtainCleanRecordList();
+ obtainCleanRecordList(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +98,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +106,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
@@ -146,7 +148,7 @@
});
}
- private void obtainCleanRecordList() {
+ private void obtainCleanRecordList(String start, String end) {
toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex);
}
@@ -161,7 +163,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
index aa0d7a9..8741e2f 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
@@ -14,10 +14,10 @@
import com.casic.dcms.databinding.ActivityMaintainRecordBinding;
import com.casic.dcms.mvvm.model.MaintainRecordBean;
import com.casic.dcms.mvvm.vm.BridgeViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -37,15 +37,9 @@
private List dataBeans = new ArrayList<>();
private WeakReferenceHandler weakReferenceHandler;
private MaintainRecordAdapter adapter;
- private String start;
- private String end;
private int pageIndex = 1;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -60,8 +54,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class);
+ }
- obtainMaintainRecord();
+ @Override
+ protected void onResume() {
+ obtainMaintainRecord("", "");
+ super.onResume();
}
@Override
@@ -69,25 +67,28 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), view) //初始化
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
- //点击完成按钮后回调返回方法
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +97,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +105,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
@@ -145,7 +146,7 @@
});
}
- private void obtainMaintainRecord() {
+ private void obtainMaintainRecord(String start, String end) {
bridgeViewModel.obtainMaintainRecord(start, end, pageIndex);
}
@@ -160,7 +161,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
new file mode 100644
index 0000000..397a389
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
@@ -0,0 +1,220 @@
+package com.casic.dcms.widgets;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import androidx.fragment.app.FragmentManager;
+
+import com.casic.dcms.R;
+import com.casic.dcms.utils.LocaleConstant;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.utils.ColorUtil;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
+import com.pengxh.androidx.lite.utils.TimeOrDateUtil;
+import com.pengxh.androidx.lite.widget.EasyToast;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+public class DateSelectDialog extends Dialog {
+
+ private final Context ctx;
+ private final String title;
+ private final String negativeBtn;
+ private final String positiveBtn;
+ private final OnDialogButtonClickListener listener;
+ private final FragmentManager fragmentManager;
+ private final Type type;
+
+ private DateSelectDialog(Builder builder) {
+ super(builder.context);
+ this.ctx = builder.context;
+ this.title = builder.title;
+ this.negativeBtn = builder.negativeBtn;
+ this.positiveBtn = builder.positiveBtn;
+ this.listener = builder.listener;
+ this.fragmentManager = builder.fragmentManager;
+ this.type = builder.type;
+ }
+
+ public static class Builder {
+ private Context context;
+ private String title;
+ private String negativeBtn;
+ private String positiveBtn;
+ private OnDialogButtonClickListener listener;
+ private FragmentManager fragmentManager;
+ private Type type;
+
+ public Builder setContext(Context context) {
+ this.context = context;
+ return this;
+ }
+
+ public Builder setTitle(String title) {
+ this.title = title;
+ return this;
+ }
+
+ public Builder setNegativeButton(String name) {
+ this.negativeBtn = name;
+ return this;
+ }
+
+ public Builder setPositiveButton(String name) {
+ this.positiveBtn = name;
+ return this;
+ }
+
+ public Builder setOnDialogButtonClickListener(OnDialogButtonClickListener listener) {
+ this.listener = listener;
+ return this;
+ }
+
+ public Builder setFragmentManager(FragmentManager fragmentManager) {
+ this.fragmentManager = fragmentManager;
+ return this;
+ }
+
+ public Builder setCalendarType(Type calendarType) {
+ this.type = calendarType;
+ return this;
+ }
+
+ public DateSelectDialog build() {
+ return new DateSelectDialog(this);
+ }
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ DialogLayoutParam.resetParams(this, Gravity.CENTER, R.style.UserDefinedAnimation, 0.85);
+ setContentView(R.layout.dialog_select_date);
+ setCancelable(false);
+ setCanceledOnTouchOutside(false);
+
+
+ if (!TextUtils.isEmpty(title)) {
+ ((TextView) findViewById(R.id.dialogTitleView)).setText(title);
+ }
+
+ EditText startDateView = findViewById(R.id.startDateView);
+ startDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ startDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ EditText endDateView = findViewById(R.id.endDateView);
+ endDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ endDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ Button dialogCancelButton = findViewById(R.id.dialogCancelButton);
+ dialogCancelButton.setText(negativeBtn);
+ dialogCancelButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ listener.onCancelClick();
+ dismiss();
+ }
+ });
+
+ Button dialogConfirmButton = findViewById(R.id.dialogConfirmButton);
+ dialogConfirmButton.setText(positiveBtn);
+ dialogConfirmButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //判断其实时间和结束时间
+ String startDate = startDateView.getText().toString();
+ String endDate = endDateView.getText().toString();
+ if (isEarlierThanStart(startDate, endDate)) {
+ EasyToast.show(ctx, "结束时间不能早于开始时间");
+ return;
+ }
+ listener.onConfirmClick(startDate, endDate);
+ dismiss();
+ }
+ });
+ }
+
+ public interface OnDialogButtonClickListener {
+ void onConfirmClick(String startDate, String endDate);
+
+ void onCancelClick();
+ }
+
+ /**
+ * 判断时间是否早于当前时间
+ */
+ private boolean isEarlierThanStart(String start, String end) {
+ if (TextUtils.isEmpty(start) || TextUtils.isEmpty(end)) {
+ return false;
+ }
+ SimpleDateFormat dateFormat;
+ if (type == Type.ALL) {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
+ } else {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
+ }
+ try {
+ return dateFormat.parse(start).getTime() > dateFormat.parse(end).getTime();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
index b4e5dcb..c814a2b 100644
--- a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
+++ b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
@@ -2,19 +2,15 @@
import android.app.Dialog;
import android.content.Context;
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
+import android.widget.Button;
import android.widget.TextView;
import com.casic.dcms.R;
-import com.casic.dcms.base.BaseApplication;
import com.casic.dcms.utils.TimeOrDateUtil;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
import java.util.Timer;
import java.util.TimerTask;
@@ -37,16 +33,7 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
- //手动设置dialog宽度
- Window window = getWindow();
- window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
- window.getDecorView().setBackgroundColor(Color.TRANSPARENT);
- WindowManager.LayoutParams params = window.getAttributes();
- params.width = QMUIDisplayHelper.dp2px(BaseApplication.getInstance(), 300);
- params.height = WindowManager.LayoutParams.WRAP_CONTENT;
- window.setAttributes(params);
-
+ DialogLayoutParam.resetParams(this, 0.85);
setContentView(R.layout.dialog_sign_in);
timer = new Timer();
initView();
@@ -69,8 +56,8 @@
if (!TextUtils.isEmpty(address)) {
signInPlaceView.setText(address);
}
- TextView signInView = findViewById(R.id.signInView);
- signInView.setOnClickListener(this);
+ Button signInButton = findViewById(R.id.signInButton);
+ signInButton.setOnClickListener(this);
}
@Override
@@ -84,7 +71,7 @@
@Override
public void onClick(View view) {
int i = view.getId();
- if (i == R.id.signInView) {
+ if (i == R.id.signInButton) {
if (listener != null) {
listener.onViewClick();
}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
deleted file mode 100755
index 122b863..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import java.util.List;
-
-public class DateInfo {
- private String date;
- private List list;
-
- public String getDate() {
- return date;
- }
-
- public void setDate(String date) {
- this.date = date;
- }
-
- public List getList() {
- return list;
- }
-
- public void setList(List list) {
- this.list = list;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
deleted file mode 100755
index 7fdb45f..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
+++ /dev/null
@@ -1,647 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.Context;
-import android.graphics.drawable.BitmapDrawable;
-import android.text.TextUtils;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.LinearLayout;
-import android.widget.PopupWindow;
-import android.widget.TextView;
-
-import androidx.annotation.Nullable;
-import androidx.core.app.ActivityCompat;
-import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.utils.CalendarUtil;
-import com.chad.library.adapter.base.BaseQuickAdapter;
-import com.chad.library.adapter.base.BaseViewHolder;
-import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-
-@SuppressLint("SetTextI18n")
-public class DatePopupWindow extends PopupWindow {
- private static final String TAG = "DatePopupWindow";
- private final View rootView;
- private QMUIRoundButton selectDoneButton;
- private RecyclerView dateRecyclerView;
- private TextView hintTextTextView;
- private TextView endWeekView;
- private TextView endDateView;
- private LinearLayout endDateLayout;
- private TextView sumTimeView;
- private TextView startWeekView;
- private TextView startDateView;
-
- private final boolean dayFlag;
- private final Activity activity;
- private Date mSetDate;
- private final String currentDate;
- private final String startDesc;
- private final String endDesc;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private int childPosition = -1;//当天在列表中的子索引
- private DateAdapter mDateAdapter;
- private List mList;
- private final DateOnClickListener mOnClickListener;
-
- private DatePopupWindow(Builder builder) {
- this.activity = builder.activity;
- this.currentDate = builder.date;
- this.startDesc = builder.startDesc;
- this.endDesc = builder.endDesc;
- this.dayFlag = builder.dayFlag;
- this.startGroupPosition = builder.startGroupPosition;
- this.startChildPosition = builder.startChildPosition;
- this.endGroupPosition = builder.endGroupPosition;
- this.endChildPosition = builder.endChildPosition;
- this.mOnClickListener = builder.mOnClickListener;
-
- LayoutInflater inflater = (LayoutInflater) this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- rootView = inflater.inflate(R.layout.popu_date, null);
- this.setContentView(rootView);
- this.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setAnimationStyle(R.style.dialogWindowAnim);
- this.setFocusable(true);
- this.setBackgroundDrawable(new BitmapDrawable());
- this.setOnDismissListener(new ShareDismissListener());
- backgroundAlpha(activity);
-
- initView();
- setInitSelect();
- create(builder.parentView);
- }
-
- private void backgroundAlpha(Activity context) {
- WindowManager.LayoutParams lp = context.getWindow().getAttributes();
- lp.alpha = 1.0f; //0.0-1.0
- context.getWindow().setAttributes(lp);
- }
-
- private void initView() {
- selectDoneButton = rootView.findViewById(R.id.selectDoneButton);
- dateRecyclerView = rootView.findViewById(R.id.dateRecyclerView);
- hintTextTextView = rootView.findViewById(R.id.hintTextTextView);
- endWeekView = rootView.findViewById(R.id.endWeekView);
- endDateView = rootView.findViewById(R.id.endDateView);
- endDateLayout = rootView.findViewById(R.id.endDateLayout);
- sumTimeView = rootView.findViewById(R.id.sumTimeView);
- startWeekView = rootView.findViewById(R.id.startWeekView);
- startDateView = rootView.findViewById(R.id.startDateView);
- TextView clearButton = rootView.findViewById(R.id.clearButton);
- TextView closeButton = rootView.findViewById(R.id.closeButton);
- TextView startDateDescView = rootView.findViewById(R.id.startDateDescView);
- TextView endDateDescView = rootView.findViewById(R.id.endDateDescView);
- startDateDescView.setText(startDesc + "日期");
- endDateDescView.setText(endDesc + "日期");
- selectDoneButton.setChangeAlphaWhenPress(true);
- selectDoneButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mOnClickListener != null) {
- String startDate = mList.get(startGroupPosition)
- .getList()
- .get(startChildPosition)
- .getDate();
- String endDate = mList.get(endGroupPosition)
- .getList()
- .get(endChildPosition)
- .getDate();
- mOnClickListener.getDate(startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition);
- }
- DatePopupWindow.this.dismiss();
- }
- });
- closeButton.setOnClickListener(v -> DatePopupWindow.this.dismiss());
- clearButton.setOnClickListener(v -> {
- initView();//重置当前view
- setDefaultSelect();//选中初始状态值
- });
- LinearLayoutManager manager = new LinearLayoutManager(activity);
- manager.setOrientation(LinearLayoutManager.VERTICAL);
- mList = new ArrayList<>();
- mDateAdapter = new DateAdapter(mList);
- dateRecyclerView.setLayoutManager(manager);
- dateRecyclerView.setAdapter(mDateAdapter);
- dateRecyclerView.setItemViewCacheSize(200);
- dateRecyclerView.setHasFixedSize(true);
- dateRecyclerView.setNestedScrollingEnabled(false);
- initData();
- }
-
- private void initData() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);//当前日期转date
- try {
- if (currentDate == null) {
- return;
- }
- mSetDate = dateFormat.parse(currentDate);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //初始化日期
- Calendar c = Calendar.getInstance();
- c.setTime(mSetDate);
- int firstM = c.get(Calendar.MONTH) + 1;//获取月份 月份是从0开始,需要+1
- int days = c.get(Calendar.DATE);//日期
- int week = c.get(Calendar.DAY_OF_WEEK);//周几
- //获取当前这个月最大天数
- int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- DateInfo month = new DateInfo();
- List dayList = new ArrayList<>();
- month.setDate(c.get(Calendar.YEAR) + "年" + firstM + "月");
- //当前月第一天是周几
- int w = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < w; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- dayList.add(dayInfo);
- }
- //计算当前月的天数
- for (int i = 1; i <= maxDay; i++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName(i + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + i);
- int c_year = Integer.parseInt(currentDate.split("-")[0]);
- int c_month = Integer.parseInt(currentDate.split("-")[1]);
- int c_day = Integer.parseInt(currentDate.split("-")[2]);
- if (c_year == c.get(Calendar.YEAR) && c_month == (c.get(Calendar.MONTH) + 1) && c_day == i) {
- childPosition = dayList.size();
- }
- //设置日期是否可选择
- dayInfo.setEnable(i >= days);
- dayList.add(dayInfo);
- }
- month.setList(dayList);
- mList.add(month);
- //获取下2个月的数据
- for (int i = 1; i <= 2; i++) {
- //当前月份循环减1
- c.add(Calendar.MONTH, 1);
- DateInfo nextMonth = new DateInfo();
- List nextDayList = new ArrayList<>();
- int maxDays = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- nextMonth.setDate(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月");
- //周几
- int weeks = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < weeks; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- nextDayList.add(dayInfo);
- }
- //该月的所有日期
- for (int j = 0; j < maxDays; j++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName((j + 1) + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + (j + 1));
- dayInfo.setEnable((j + 1) <= days || i != 2);
- nextDayList.add(dayInfo);
- }
- nextMonth.setList(nextDayList);
- mList.add(nextMonth);
- }
- mDateAdapter.updateData();
- }
-
- private void setInitSelect() {
- if (0 <= this.startGroupPosition && this.startGroupPosition < mList.size() &&
- 0 <= this.endGroupPosition && this.endGroupPosition < mList.size()) {
- int maxStartChild = mList.get(this.startGroupPosition).getList().size();
- int maxEndChild = mList.get(this.endGroupPosition).getList().size();
- if (0 <= this.startChildPosition && this.startChildPosition < maxStartChild &&
- 0 <= this.endChildPosition && this.endChildPosition < maxEndChild) {
- setInit();
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- }
-
- private void setInit() {
- mList.get(this.startGroupPosition).getList().get(this.startChildPosition).setStatus(1);
- mList.get(this.endGroupPosition).getList().get(this.endChildPosition).setStatus(2);
- mDateAdapter.notifyDataSetChanged();
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- dateRecyclerView.scrollToPosition(this.startGroupPosition);
- }
-
- //设置日历标明当前日期的状态
- private void setDefaultSelect() {
- if (childPosition == -1) return;
- String date = mList.get(0).getList().get(childPosition).getDate();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Date curDate = null;
- try {
- curDate = sdf.parse(formatDate(date));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- if (curDate == null) return;
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(curDate);
- calendar.add(Calendar.DATE, 1);
-
- int year = Integer.parseInt(date.split("-")[0]);
- int month = Integer.parseInt(date.split("-")[1]);
- if (year == calendar.get(Calendar.YEAR) && month == calendar.get(Calendar.MONTH) + 1
- && childPosition < mList.get(0).getList().size() - 1) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 0;
- this.endChildPosition = childPosition - 1;
- setInit();
- } else {
- for (int i = 0; i < mList.get(1).getList().size(); i++) {
- if (!TextUtils.isEmpty(mList.get(1).getList().get(i).getDate())) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 1;
- this.endChildPosition = i;
- setInit();
- break;
- }
- }
- }
- }
-
- /**
- * 设置起始时间和结束时间的选中标识,或者设置不选中
- *
- * @param startDate
- * @param endDate
- * @param status 选中设置为true 设置不选中false
- */
- @SuppressLint("SetTextI18n")
- private void getOffsetDate(String startDate, String endDate, boolean status) {
- //更新开始日期和结束日期的信息和状态
- Calendar sCalendar = CalendarUtil.toDate(startDate);
- Calendar eCalendar = CalendarUtil.toDate(endDate);
- startDateView.setText((sCalendar.get(Calendar.MONTH) + 1) + "月" + sCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(startDate));
- endDateView.setText((eCalendar.get(Calendar.MONTH) + 1) + "月" + eCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- endWeekView.setText("周" + CalendarUtil.getWeekByFormat(endDate));
- int daysOffset = Integer.parseInt(CalendarUtil.getTwoDay(endDate, startDate));
- if (daysOffset < 0) return;
- if (dayFlag) {
- sumTimeView.setText("共" + (daysOffset + 1) + "天");
- } else {
- sumTimeView.setText("共" + daysOffset + "晚");
- }
- //更改结束日期和完成按钮状态
- endDateLayout.setVisibility(View.VISIBLE);
- hintTextTextView.setVisibility(View.GONE);
- initButton("完成", true);
-
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Calendar c = Calendar.getInstance();
- DayInfo info = mList.get(startGroupPosition).getList().get(startChildPosition);
- try {
- c.setTime(sdf.parse(info.getDate()));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //根据2个时间的相差天数去循环
- for (int i = 0; i < daysOffset; i++) {
- //下一天(目标天)
- c.add(Calendar.DATE, 1);
- //改天的日期(目标天)
- String d = c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE);
- //循环group列表
- for (int j = 0; j < mList.size(); j++) {
- //获取该月的随机一个dayInfo
- DayInfo dayInfo = mList.get(j).getList().get(mList.get(j).getList().size() - 1);
- boolean isCheck = false;
- //判断该天是否和目标天是否是同一个月
- if (!TextUtils.isEmpty(dayInfo.getDate())
- && Integer.parseInt(dayInfo.getDate().split("-")[0]) == (c.get(Calendar.YEAR))
- && Integer.parseInt(dayInfo.getDate().split("-")[1]) == ((c.get(Calendar.MONTH) + 1))) {
- //是同一个月,则循环该月多有天数
- for (int t = 0; t < mList.get(j).getList().size(); t++) {
- //找到该月的日期与目标日期相同,存在,设置选择标记
- if (mList.get(j).getList().get(t).getDate().equals(d)) {
- mList.get(j).getList().get(t).setSelect(status);
- isCheck = true;
- break;
- }
- }
- }
- if (isCheck) {
- mDateAdapter.notifyItemChanged(j);
- break;
- }
- }
- }
- }
-
- private String formatDate(String date) {
- if (TextUtils.isEmpty(date)) return "";
- return date.split("-")[0] +
- "-" +
- (date.split("-")[1].length() < 2 ? "0" + date.split("-")[1] : date.split("-")[1]) +
- "-" +
- (date.split("-")[2].length() < 2 ? "0" + date.split("-")[2] : date.split("-")[2]);
- }
-
- private void create(View view) {
- this.showAtLocation(view, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
- }
-
- /**
- * return startDate、endDate(格式:2012-12-10)
- * 选中完成后返回开始时间和结束时间
- * return startGroupPosition、startChildPosition、endGroupPosition、endChildPosition
- * 返回选中时间区间的状态标记,监听中接收后在builder中setInitSelect()方法中直接传出入(可用于记录上次选中的状态,用户再点击进入的时候恢复上一次的区间选中状态)
- */
- public interface DateOnClickListener {
- void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition);
- }
-
- public static class Builder {
- private final String date;
- private final Activity activity;
- private final View parentView;
- private String startDesc;
- private String endDesc;
- private boolean dayFlag = true;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private DateOnClickListener mOnClickListener = null;
-
- public Builder(Activity activity, Date date, View parentView) {
- this.date = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(date);
- this.activity = activity;
- this.parentView = parentView;
- this.startDesc = "开始";
- this.endDesc = "结束";
- this.dayFlag = true;
- }
-
- public DatePopupWindow builder() {
- return new DatePopupWindow(this);
- }
-
- public Builder setInitSelect(int startGroup, int startChild, int endGroup, int endChild) {
- this.startGroupPosition = startGroup;
- this.startChildPosition = startChild;
- this.endGroupPosition = endGroup;
- this.endChildPosition = endChild;
- return this;
- }
-
- public Builder setInitDay(boolean dayFlag) {
- this.dayFlag = dayFlag;
- if (dayFlag) {
- this.startDesc = "开始";
- this.endDesc = "结束";
- } else {
- this.startDesc = "入住";
- this.endDesc = "离开";
- }
- return this;
- }
-
- public Builder setDateOnClickListener(DateOnClickListener mlListener) {
- mOnClickListener = mlListener;
- return this;
- }
- }
-
- private class DateAdapter extends BaseQuickAdapter {
-
- DateAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date, data);
- }
-
- @Override
- public void onBindViewHolder(BaseViewHolder holder, int positions) {
- super.onBindViewHolder(holder, positions);
- TextView monthTitleView = holder.getView(R.id.monthTitleView);
- monthTitleView.setText(mList.get(positions).getDate());
- }
-
- @Override
- protected void convert(final BaseViewHolder helper, final DateInfo item) {
- RecyclerView monthRecyclerView = helper.getView(R.id.monthRecyclerView);
-
- GridLayoutManager manager = new GridLayoutManager(activity, 7);
- monthRecyclerView.setLayoutManager(manager);
- final TempAdapter groupAdapter = new TempAdapter(item.getList());
- monthRecyclerView.setAdapter(groupAdapter);
- monthRecyclerView.setItemViewCacheSize(200);
- monthRecyclerView.setHasFixedSize(true);
- monthRecyclerView.setNestedScrollingEnabled(false);
- groupAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
- @Override
- public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
- if (!item.getList().get(position).isEnable()) return;
- if (TextUtils.isEmpty(item.getList().get(position).getName())) return;
- if (TextUtils.isEmpty(item.getList().get(position).getDate())) return;
- int status = item.getList().get(position).getStatus();
- if (status == 0 &&
- startGroupPosition == -1 &&
- startChildPosition == -1 &&
- item.getList().get(position).isEnable()) {
- //开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
-
- startDateView.setText(CalendarUtil.FormatDateMD(item.getList().get(position).getDate()));
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- if (status == 0 && endGroupPosition == -1 && endChildPosition == -1) {
- int offset = Integer.parseInt(CalendarUtil.getTwoDay(item.getList().get(position).getDate()
- , mList.get(startGroupPosition).getList().get(startChildPosition).getDate()));
- //判断该离开日期是否比入住时间还小,是则重新设置入住时间。
- if (offset < 0) {
- //刷新上一个开始日期
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- //设置新的入开始日期
- item.getList().get(position).setStatus(1);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- adapter.notifyItemChanged(position);
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- item.getList().get(position).setStatus(2);
- adapter.notifyItemChanged(position);
- endGroupPosition = helper.getAdapterPosition();
- endChildPosition = position;
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- return;
- }
- //重置开始和结束时间,设置开始时间
- if (status == 0 && endGroupPosition != -1 && endChildPosition != -1 && startChildPosition != -1 && startGroupPosition != -1) {
- //重置开始和结束
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mList.get(endGroupPosition).getList().get(endChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- mDateAdapter.notifyItemChanged(endGroupPosition);
- //重置选择间区的状态
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), false);
- //设置开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
-
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- endGroupPosition = -1;
- endChildPosition = -1;
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- }
- }
- });
- }
-
- void updateData() {
- notifyDataSetChanged();
- }
- }
-
- private class TempAdapter extends BaseQuickAdapter {
- TempAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date_child, data);
- }
-
- @Override
- protected void convert(BaseViewHolder helper, DayInfo item) {
- String name = item.getName();
- boolean isSelect = item.isSelect();
- boolean isEnable = item.isEnable();
- int status = item.getStatus();
- helper.setText(R.id.dateView, name);
- //默认
- if (status == 0) {
- if (isSelect) {
- //选中
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else {
- //没选中状态
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.black));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.white));
- }
- } else if (status == 1) {
- //开始
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, startDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else if (status == 2) {
- //结束
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, endDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- }
- //设置当前日期前的样式,没选中,并状态为0情况下
- if (!isSelect && status == 0) {
- if (!isEnable) {
- //无效
- TextView textView = helper.getView(R.id.dateDelView);
- if (TextUtils.isEmpty(name)) {
- textView.setVisibility(View.GONE);
- } else {
- textView.setText(name);
- textView.setVisibility(View.VISIBLE);
- }
- textView.setTextColor(activity.getResources().getColor(R.color.mainThemeColor));
- helper.getView(R.id.dateView).setVisibility(View.GONE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- } else {
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- TextView textView = helper.getView(R.id.dateView);
- textView.setTextColor(activity.getResources().getColor(R.color.black));
- }
- }
- }
- }
-
- private class ShareDismissListener implements OnDismissListener {
- @Override
- public void onDismiss() {
- backgroundAlpha(activity);
- }
- }
-
- private void initButton(String msg, boolean enable) {
- selectDoneButton.setText(msg);
- if (enable) {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.mainThemeColor));
- } else {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.hintTextColor));
- }
- selectDoneButton.setEnabled(enable);
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java
deleted file mode 100755
index 9bffa8e..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-public class DayInfo {
- private String name;
- private boolean isEnable;
- private String date;
- private int status = 0;
- private boolean select;
-
- boolean isSelect() {
- return select;
- }
-
- void setSelect(boolean select) {
- this.select = select;
- }
-
- int getStatus() {
- return status;
- }
-
- void setStatus(int status) {
- this.status = status;
- }
-
- String getDate() {
- return date;
- }
-
- void setDate(String date) {
- this.date = date;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- boolean isEnable() {
- return isEnable;
- }
-
- void setEnable(boolean enable) {
- isEnable = enable;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java
deleted file mode 100755
index 7bc6dbf..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.util.AttributeSet;
-
-import androidx.annotation.Nullable;
-import androidx.appcompat.widget.AppCompatTextView;
-
-import com.casic.dcms.R;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
-
-/**
- * 不可选日期斜线
- */
-public class LineTextView extends AppCompatTextView {
- private Paint mPaint;
- private Context context;
-
- public LineTextView(Context context, @Nullable AttributeSet attrs) {
- super(context, attrs);
- this.context = context;
- mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
- mPaint.setStrokeWidth(QMUIDisplayHelper.dp2px(context, 1));
- mPaint.setColor(getResources().getColor(R.color.punishColor));
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- //斜线坐标
- int startX, startY, endX, endY;
-
- //视图宽高
- int width = getWidth();
- int height = getHeight();
-
- //计算坐标
- startX = width;
- startY = QMUIDisplayHelper.dp2px(context, 2);
- endX = 0;
- endY = height - QMUIDisplayHelper.dp2px(context, 3);
- //画斜线
- canvas.drawLine(startX, startY, endX, endY, mPaint);
- }
-}
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml b/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml
new file mode 100644
index 0000000..dbc008c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_left_right.xml b/app/src/main/res/drawable/ic_left_right.xml
new file mode 100644
index 0000000..e80b0f5
--- /dev/null
+++ b/app/src/main/res/drawable/ic_left_right.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_sign.xml b/app/src/main/res/drawable/ic_sign.xml
index f914440..8e3e973 100644
--- a/app/src/main/res/drawable/ic_sign.xml
+++ b/app/src/main/res/drawable/ic_sign.xml
@@ -4,9 +4,9 @@
android:viewportWidth="1024"
android:viewportHeight="1024">
diff --git a/app/src/main/res/layout/adapter_select_date.xml b/app/src/main/res/layout/adapter_select_date.xml
deleted file mode 100644
index 9e22615..0000000
--- a/app/src/main/res/layout/adapter_select_date.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/adapter_select_date_child.xml b/app/src/main/res/layout/adapter_select_date_child.xml
deleted file mode 100644
index cb767de..0000000
--- a/app/src/main/res/layout/adapter_select_date_child.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 13bc9ef..1416b2c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -28,7 +28,9 @@
+
+
@@ -60,7 +62,12 @@
+
+
+
+
+
@@ -80,7 +87,9 @@
+
+
diff --git a/app/build.gradle b/app/build.gradle
index a4ee6d9..2e1bb36 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -109,7 +109,6 @@
implementation 'com.amap.api:location:5.3.1'
//经纬度逆编码
implementation 'com.amap.api:search:8.1.0'
- implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
//桌面角标
implementation "me.leolin:ShortcutBadger:1.1.22@aar"
}
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
index 4a0b2bb..00f69ae 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
@@ -16,11 +16,11 @@
import com.casic.dcms.databinding.ActivityCleanRecordsBinding;
import com.casic.dcms.mvvm.model.CleanRecordBean;
import com.casic.dcms.mvvm.vm.ToiletViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
import com.casic.dcms.utils.StringHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -41,14 +41,8 @@
private RecordListAdapter adapter;
private WeakReferenceHandler weakReferenceHandler;
private int pageIndex = 1;
- private String start;
- private String end;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -63,7 +57,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class);
- toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex);
+ }
+
+ @Override
+ protected void onResume() {
+ obtainCleanRecordList("", "");
+ super.onResume();
}
@Override
@@ -71,23 +70,26 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(CleaningRecordsActivity.this, CalendarUtil.obtainLastTwoMonth(), view)
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
-
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
- obtainCleanRecordList();
+ obtainCleanRecordList(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +98,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +106,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
@@ -146,7 +148,7 @@
});
}
- private void obtainCleanRecordList() {
+ private void obtainCleanRecordList(String start, String end) {
toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex);
}
@@ -161,7 +163,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
index aa0d7a9..8741e2f 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
@@ -14,10 +14,10 @@
import com.casic.dcms.databinding.ActivityMaintainRecordBinding;
import com.casic.dcms.mvvm.model.MaintainRecordBean;
import com.casic.dcms.mvvm.vm.BridgeViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -37,15 +37,9 @@
private List dataBeans = new ArrayList<>();
private WeakReferenceHandler weakReferenceHandler;
private MaintainRecordAdapter adapter;
- private String start;
- private String end;
private int pageIndex = 1;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -60,8 +54,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class);
+ }
- obtainMaintainRecord();
+ @Override
+ protected void onResume() {
+ obtainMaintainRecord("", "");
+ super.onResume();
}
@Override
@@ -69,25 +67,28 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), view) //初始化
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
- //点击完成按钮后回调返回方法
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +97,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +105,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
@@ -145,7 +146,7 @@
});
}
- private void obtainMaintainRecord() {
+ private void obtainMaintainRecord(String start, String end) {
bridgeViewModel.obtainMaintainRecord(start, end, pageIndex);
}
@@ -160,7 +161,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
new file mode 100644
index 0000000..397a389
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
@@ -0,0 +1,220 @@
+package com.casic.dcms.widgets;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import androidx.fragment.app.FragmentManager;
+
+import com.casic.dcms.R;
+import com.casic.dcms.utils.LocaleConstant;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.utils.ColorUtil;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
+import com.pengxh.androidx.lite.utils.TimeOrDateUtil;
+import com.pengxh.androidx.lite.widget.EasyToast;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+public class DateSelectDialog extends Dialog {
+
+ private final Context ctx;
+ private final String title;
+ private final String negativeBtn;
+ private final String positiveBtn;
+ private final OnDialogButtonClickListener listener;
+ private final FragmentManager fragmentManager;
+ private final Type type;
+
+ private DateSelectDialog(Builder builder) {
+ super(builder.context);
+ this.ctx = builder.context;
+ this.title = builder.title;
+ this.negativeBtn = builder.negativeBtn;
+ this.positiveBtn = builder.positiveBtn;
+ this.listener = builder.listener;
+ this.fragmentManager = builder.fragmentManager;
+ this.type = builder.type;
+ }
+
+ public static class Builder {
+ private Context context;
+ private String title;
+ private String negativeBtn;
+ private String positiveBtn;
+ private OnDialogButtonClickListener listener;
+ private FragmentManager fragmentManager;
+ private Type type;
+
+ public Builder setContext(Context context) {
+ this.context = context;
+ return this;
+ }
+
+ public Builder setTitle(String title) {
+ this.title = title;
+ return this;
+ }
+
+ public Builder setNegativeButton(String name) {
+ this.negativeBtn = name;
+ return this;
+ }
+
+ public Builder setPositiveButton(String name) {
+ this.positiveBtn = name;
+ return this;
+ }
+
+ public Builder setOnDialogButtonClickListener(OnDialogButtonClickListener listener) {
+ this.listener = listener;
+ return this;
+ }
+
+ public Builder setFragmentManager(FragmentManager fragmentManager) {
+ this.fragmentManager = fragmentManager;
+ return this;
+ }
+
+ public Builder setCalendarType(Type calendarType) {
+ this.type = calendarType;
+ return this;
+ }
+
+ public DateSelectDialog build() {
+ return new DateSelectDialog(this);
+ }
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ DialogLayoutParam.resetParams(this, Gravity.CENTER, R.style.UserDefinedAnimation, 0.85);
+ setContentView(R.layout.dialog_select_date);
+ setCancelable(false);
+ setCanceledOnTouchOutside(false);
+
+
+ if (!TextUtils.isEmpty(title)) {
+ ((TextView) findViewById(R.id.dialogTitleView)).setText(title);
+ }
+
+ EditText startDateView = findViewById(R.id.startDateView);
+ startDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ startDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ EditText endDateView = findViewById(R.id.endDateView);
+ endDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ endDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ Button dialogCancelButton = findViewById(R.id.dialogCancelButton);
+ dialogCancelButton.setText(negativeBtn);
+ dialogCancelButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ listener.onCancelClick();
+ dismiss();
+ }
+ });
+
+ Button dialogConfirmButton = findViewById(R.id.dialogConfirmButton);
+ dialogConfirmButton.setText(positiveBtn);
+ dialogConfirmButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //判断其实时间和结束时间
+ String startDate = startDateView.getText().toString();
+ String endDate = endDateView.getText().toString();
+ if (isEarlierThanStart(startDate, endDate)) {
+ EasyToast.show(ctx, "结束时间不能早于开始时间");
+ return;
+ }
+ listener.onConfirmClick(startDate, endDate);
+ dismiss();
+ }
+ });
+ }
+
+ public interface OnDialogButtonClickListener {
+ void onConfirmClick(String startDate, String endDate);
+
+ void onCancelClick();
+ }
+
+ /**
+ * 判断时间是否早于当前时间
+ */
+ private boolean isEarlierThanStart(String start, String end) {
+ if (TextUtils.isEmpty(start) || TextUtils.isEmpty(end)) {
+ return false;
+ }
+ SimpleDateFormat dateFormat;
+ if (type == Type.ALL) {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
+ } else {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
+ }
+ try {
+ return dateFormat.parse(start).getTime() > dateFormat.parse(end).getTime();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
index b4e5dcb..c814a2b 100644
--- a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
+++ b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
@@ -2,19 +2,15 @@
import android.app.Dialog;
import android.content.Context;
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
+import android.widget.Button;
import android.widget.TextView;
import com.casic.dcms.R;
-import com.casic.dcms.base.BaseApplication;
import com.casic.dcms.utils.TimeOrDateUtil;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
import java.util.Timer;
import java.util.TimerTask;
@@ -37,16 +33,7 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
- //手动设置dialog宽度
- Window window = getWindow();
- window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
- window.getDecorView().setBackgroundColor(Color.TRANSPARENT);
- WindowManager.LayoutParams params = window.getAttributes();
- params.width = QMUIDisplayHelper.dp2px(BaseApplication.getInstance(), 300);
- params.height = WindowManager.LayoutParams.WRAP_CONTENT;
- window.setAttributes(params);
-
+ DialogLayoutParam.resetParams(this, 0.85);
setContentView(R.layout.dialog_sign_in);
timer = new Timer();
initView();
@@ -69,8 +56,8 @@
if (!TextUtils.isEmpty(address)) {
signInPlaceView.setText(address);
}
- TextView signInView = findViewById(R.id.signInView);
- signInView.setOnClickListener(this);
+ Button signInButton = findViewById(R.id.signInButton);
+ signInButton.setOnClickListener(this);
}
@Override
@@ -84,7 +71,7 @@
@Override
public void onClick(View view) {
int i = view.getId();
- if (i == R.id.signInView) {
+ if (i == R.id.signInButton) {
if (listener != null) {
listener.onViewClick();
}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
deleted file mode 100755
index 122b863..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import java.util.List;
-
-public class DateInfo {
- private String date;
- private List list;
-
- public String getDate() {
- return date;
- }
-
- public void setDate(String date) {
- this.date = date;
- }
-
- public List getList() {
- return list;
- }
-
- public void setList(List list) {
- this.list = list;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
deleted file mode 100755
index 7fdb45f..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
+++ /dev/null
@@ -1,647 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.Context;
-import android.graphics.drawable.BitmapDrawable;
-import android.text.TextUtils;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.LinearLayout;
-import android.widget.PopupWindow;
-import android.widget.TextView;
-
-import androidx.annotation.Nullable;
-import androidx.core.app.ActivityCompat;
-import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.utils.CalendarUtil;
-import com.chad.library.adapter.base.BaseQuickAdapter;
-import com.chad.library.adapter.base.BaseViewHolder;
-import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-
-@SuppressLint("SetTextI18n")
-public class DatePopupWindow extends PopupWindow {
- private static final String TAG = "DatePopupWindow";
- private final View rootView;
- private QMUIRoundButton selectDoneButton;
- private RecyclerView dateRecyclerView;
- private TextView hintTextTextView;
- private TextView endWeekView;
- private TextView endDateView;
- private LinearLayout endDateLayout;
- private TextView sumTimeView;
- private TextView startWeekView;
- private TextView startDateView;
-
- private final boolean dayFlag;
- private final Activity activity;
- private Date mSetDate;
- private final String currentDate;
- private final String startDesc;
- private final String endDesc;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private int childPosition = -1;//当天在列表中的子索引
- private DateAdapter mDateAdapter;
- private List mList;
- private final DateOnClickListener mOnClickListener;
-
- private DatePopupWindow(Builder builder) {
- this.activity = builder.activity;
- this.currentDate = builder.date;
- this.startDesc = builder.startDesc;
- this.endDesc = builder.endDesc;
- this.dayFlag = builder.dayFlag;
- this.startGroupPosition = builder.startGroupPosition;
- this.startChildPosition = builder.startChildPosition;
- this.endGroupPosition = builder.endGroupPosition;
- this.endChildPosition = builder.endChildPosition;
- this.mOnClickListener = builder.mOnClickListener;
-
- LayoutInflater inflater = (LayoutInflater) this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- rootView = inflater.inflate(R.layout.popu_date, null);
- this.setContentView(rootView);
- this.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setAnimationStyle(R.style.dialogWindowAnim);
- this.setFocusable(true);
- this.setBackgroundDrawable(new BitmapDrawable());
- this.setOnDismissListener(new ShareDismissListener());
- backgroundAlpha(activity);
-
- initView();
- setInitSelect();
- create(builder.parentView);
- }
-
- private void backgroundAlpha(Activity context) {
- WindowManager.LayoutParams lp = context.getWindow().getAttributes();
- lp.alpha = 1.0f; //0.0-1.0
- context.getWindow().setAttributes(lp);
- }
-
- private void initView() {
- selectDoneButton = rootView.findViewById(R.id.selectDoneButton);
- dateRecyclerView = rootView.findViewById(R.id.dateRecyclerView);
- hintTextTextView = rootView.findViewById(R.id.hintTextTextView);
- endWeekView = rootView.findViewById(R.id.endWeekView);
- endDateView = rootView.findViewById(R.id.endDateView);
- endDateLayout = rootView.findViewById(R.id.endDateLayout);
- sumTimeView = rootView.findViewById(R.id.sumTimeView);
- startWeekView = rootView.findViewById(R.id.startWeekView);
- startDateView = rootView.findViewById(R.id.startDateView);
- TextView clearButton = rootView.findViewById(R.id.clearButton);
- TextView closeButton = rootView.findViewById(R.id.closeButton);
- TextView startDateDescView = rootView.findViewById(R.id.startDateDescView);
- TextView endDateDescView = rootView.findViewById(R.id.endDateDescView);
- startDateDescView.setText(startDesc + "日期");
- endDateDescView.setText(endDesc + "日期");
- selectDoneButton.setChangeAlphaWhenPress(true);
- selectDoneButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mOnClickListener != null) {
- String startDate = mList.get(startGroupPosition)
- .getList()
- .get(startChildPosition)
- .getDate();
- String endDate = mList.get(endGroupPosition)
- .getList()
- .get(endChildPosition)
- .getDate();
- mOnClickListener.getDate(startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition);
- }
- DatePopupWindow.this.dismiss();
- }
- });
- closeButton.setOnClickListener(v -> DatePopupWindow.this.dismiss());
- clearButton.setOnClickListener(v -> {
- initView();//重置当前view
- setDefaultSelect();//选中初始状态值
- });
- LinearLayoutManager manager = new LinearLayoutManager(activity);
- manager.setOrientation(LinearLayoutManager.VERTICAL);
- mList = new ArrayList<>();
- mDateAdapter = new DateAdapter(mList);
- dateRecyclerView.setLayoutManager(manager);
- dateRecyclerView.setAdapter(mDateAdapter);
- dateRecyclerView.setItemViewCacheSize(200);
- dateRecyclerView.setHasFixedSize(true);
- dateRecyclerView.setNestedScrollingEnabled(false);
- initData();
- }
-
- private void initData() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);//当前日期转date
- try {
- if (currentDate == null) {
- return;
- }
- mSetDate = dateFormat.parse(currentDate);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //初始化日期
- Calendar c = Calendar.getInstance();
- c.setTime(mSetDate);
- int firstM = c.get(Calendar.MONTH) + 1;//获取月份 月份是从0开始,需要+1
- int days = c.get(Calendar.DATE);//日期
- int week = c.get(Calendar.DAY_OF_WEEK);//周几
- //获取当前这个月最大天数
- int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- DateInfo month = new DateInfo();
- List dayList = new ArrayList<>();
- month.setDate(c.get(Calendar.YEAR) + "年" + firstM + "月");
- //当前月第一天是周几
- int w = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < w; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- dayList.add(dayInfo);
- }
- //计算当前月的天数
- for (int i = 1; i <= maxDay; i++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName(i + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + i);
- int c_year = Integer.parseInt(currentDate.split("-")[0]);
- int c_month = Integer.parseInt(currentDate.split("-")[1]);
- int c_day = Integer.parseInt(currentDate.split("-")[2]);
- if (c_year == c.get(Calendar.YEAR) && c_month == (c.get(Calendar.MONTH) + 1) && c_day == i) {
- childPosition = dayList.size();
- }
- //设置日期是否可选择
- dayInfo.setEnable(i >= days);
- dayList.add(dayInfo);
- }
- month.setList(dayList);
- mList.add(month);
- //获取下2个月的数据
- for (int i = 1; i <= 2; i++) {
- //当前月份循环减1
- c.add(Calendar.MONTH, 1);
- DateInfo nextMonth = new DateInfo();
- List nextDayList = new ArrayList<>();
- int maxDays = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- nextMonth.setDate(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月");
- //周几
- int weeks = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < weeks; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- nextDayList.add(dayInfo);
- }
- //该月的所有日期
- for (int j = 0; j < maxDays; j++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName((j + 1) + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + (j + 1));
- dayInfo.setEnable((j + 1) <= days || i != 2);
- nextDayList.add(dayInfo);
- }
- nextMonth.setList(nextDayList);
- mList.add(nextMonth);
- }
- mDateAdapter.updateData();
- }
-
- private void setInitSelect() {
- if (0 <= this.startGroupPosition && this.startGroupPosition < mList.size() &&
- 0 <= this.endGroupPosition && this.endGroupPosition < mList.size()) {
- int maxStartChild = mList.get(this.startGroupPosition).getList().size();
- int maxEndChild = mList.get(this.endGroupPosition).getList().size();
- if (0 <= this.startChildPosition && this.startChildPosition < maxStartChild &&
- 0 <= this.endChildPosition && this.endChildPosition < maxEndChild) {
- setInit();
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- }
-
- private void setInit() {
- mList.get(this.startGroupPosition).getList().get(this.startChildPosition).setStatus(1);
- mList.get(this.endGroupPosition).getList().get(this.endChildPosition).setStatus(2);
- mDateAdapter.notifyDataSetChanged();
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- dateRecyclerView.scrollToPosition(this.startGroupPosition);
- }
-
- //设置日历标明当前日期的状态
- private void setDefaultSelect() {
- if (childPosition == -1) return;
- String date = mList.get(0).getList().get(childPosition).getDate();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Date curDate = null;
- try {
- curDate = sdf.parse(formatDate(date));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- if (curDate == null) return;
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(curDate);
- calendar.add(Calendar.DATE, 1);
-
- int year = Integer.parseInt(date.split("-")[0]);
- int month = Integer.parseInt(date.split("-")[1]);
- if (year == calendar.get(Calendar.YEAR) && month == calendar.get(Calendar.MONTH) + 1
- && childPosition < mList.get(0).getList().size() - 1) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 0;
- this.endChildPosition = childPosition - 1;
- setInit();
- } else {
- for (int i = 0; i < mList.get(1).getList().size(); i++) {
- if (!TextUtils.isEmpty(mList.get(1).getList().get(i).getDate())) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 1;
- this.endChildPosition = i;
- setInit();
- break;
- }
- }
- }
- }
-
- /**
- * 设置起始时间和结束时间的选中标识,或者设置不选中
- *
- * @param startDate
- * @param endDate
- * @param status 选中设置为true 设置不选中false
- */
- @SuppressLint("SetTextI18n")
- private void getOffsetDate(String startDate, String endDate, boolean status) {
- //更新开始日期和结束日期的信息和状态
- Calendar sCalendar = CalendarUtil.toDate(startDate);
- Calendar eCalendar = CalendarUtil.toDate(endDate);
- startDateView.setText((sCalendar.get(Calendar.MONTH) + 1) + "月" + sCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(startDate));
- endDateView.setText((eCalendar.get(Calendar.MONTH) + 1) + "月" + eCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- endWeekView.setText("周" + CalendarUtil.getWeekByFormat(endDate));
- int daysOffset = Integer.parseInt(CalendarUtil.getTwoDay(endDate, startDate));
- if (daysOffset < 0) return;
- if (dayFlag) {
- sumTimeView.setText("共" + (daysOffset + 1) + "天");
- } else {
- sumTimeView.setText("共" + daysOffset + "晚");
- }
- //更改结束日期和完成按钮状态
- endDateLayout.setVisibility(View.VISIBLE);
- hintTextTextView.setVisibility(View.GONE);
- initButton("完成", true);
-
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Calendar c = Calendar.getInstance();
- DayInfo info = mList.get(startGroupPosition).getList().get(startChildPosition);
- try {
- c.setTime(sdf.parse(info.getDate()));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //根据2个时间的相差天数去循环
- for (int i = 0; i < daysOffset; i++) {
- //下一天(目标天)
- c.add(Calendar.DATE, 1);
- //改天的日期(目标天)
- String d = c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE);
- //循环group列表
- for (int j = 0; j < mList.size(); j++) {
- //获取该月的随机一个dayInfo
- DayInfo dayInfo = mList.get(j).getList().get(mList.get(j).getList().size() - 1);
- boolean isCheck = false;
- //判断该天是否和目标天是否是同一个月
- if (!TextUtils.isEmpty(dayInfo.getDate())
- && Integer.parseInt(dayInfo.getDate().split("-")[0]) == (c.get(Calendar.YEAR))
- && Integer.parseInt(dayInfo.getDate().split("-")[1]) == ((c.get(Calendar.MONTH) + 1))) {
- //是同一个月,则循环该月多有天数
- for (int t = 0; t < mList.get(j).getList().size(); t++) {
- //找到该月的日期与目标日期相同,存在,设置选择标记
- if (mList.get(j).getList().get(t).getDate().equals(d)) {
- mList.get(j).getList().get(t).setSelect(status);
- isCheck = true;
- break;
- }
- }
- }
- if (isCheck) {
- mDateAdapter.notifyItemChanged(j);
- break;
- }
- }
- }
- }
-
- private String formatDate(String date) {
- if (TextUtils.isEmpty(date)) return "";
- return date.split("-")[0] +
- "-" +
- (date.split("-")[1].length() < 2 ? "0" + date.split("-")[1] : date.split("-")[1]) +
- "-" +
- (date.split("-")[2].length() < 2 ? "0" + date.split("-")[2] : date.split("-")[2]);
- }
-
- private void create(View view) {
- this.showAtLocation(view, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
- }
-
- /**
- * return startDate、endDate(格式:2012-12-10)
- * 选中完成后返回开始时间和结束时间
- * return startGroupPosition、startChildPosition、endGroupPosition、endChildPosition
- * 返回选中时间区间的状态标记,监听中接收后在builder中setInitSelect()方法中直接传出入(可用于记录上次选中的状态,用户再点击进入的时候恢复上一次的区间选中状态)
- */
- public interface DateOnClickListener {
- void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition);
- }
-
- public static class Builder {
- private final String date;
- private final Activity activity;
- private final View parentView;
- private String startDesc;
- private String endDesc;
- private boolean dayFlag = true;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private DateOnClickListener mOnClickListener = null;
-
- public Builder(Activity activity, Date date, View parentView) {
- this.date = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(date);
- this.activity = activity;
- this.parentView = parentView;
- this.startDesc = "开始";
- this.endDesc = "结束";
- this.dayFlag = true;
- }
-
- public DatePopupWindow builder() {
- return new DatePopupWindow(this);
- }
-
- public Builder setInitSelect(int startGroup, int startChild, int endGroup, int endChild) {
- this.startGroupPosition = startGroup;
- this.startChildPosition = startChild;
- this.endGroupPosition = endGroup;
- this.endChildPosition = endChild;
- return this;
- }
-
- public Builder setInitDay(boolean dayFlag) {
- this.dayFlag = dayFlag;
- if (dayFlag) {
- this.startDesc = "开始";
- this.endDesc = "结束";
- } else {
- this.startDesc = "入住";
- this.endDesc = "离开";
- }
- return this;
- }
-
- public Builder setDateOnClickListener(DateOnClickListener mlListener) {
- mOnClickListener = mlListener;
- return this;
- }
- }
-
- private class DateAdapter extends BaseQuickAdapter {
-
- DateAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date, data);
- }
-
- @Override
- public void onBindViewHolder(BaseViewHolder holder, int positions) {
- super.onBindViewHolder(holder, positions);
- TextView monthTitleView = holder.getView(R.id.monthTitleView);
- monthTitleView.setText(mList.get(positions).getDate());
- }
-
- @Override
- protected void convert(final BaseViewHolder helper, final DateInfo item) {
- RecyclerView monthRecyclerView = helper.getView(R.id.monthRecyclerView);
-
- GridLayoutManager manager = new GridLayoutManager(activity, 7);
- monthRecyclerView.setLayoutManager(manager);
- final TempAdapter groupAdapter = new TempAdapter(item.getList());
- monthRecyclerView.setAdapter(groupAdapter);
- monthRecyclerView.setItemViewCacheSize(200);
- monthRecyclerView.setHasFixedSize(true);
- monthRecyclerView.setNestedScrollingEnabled(false);
- groupAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
- @Override
- public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
- if (!item.getList().get(position).isEnable()) return;
- if (TextUtils.isEmpty(item.getList().get(position).getName())) return;
- if (TextUtils.isEmpty(item.getList().get(position).getDate())) return;
- int status = item.getList().get(position).getStatus();
- if (status == 0 &&
- startGroupPosition == -1 &&
- startChildPosition == -1 &&
- item.getList().get(position).isEnable()) {
- //开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
-
- startDateView.setText(CalendarUtil.FormatDateMD(item.getList().get(position).getDate()));
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- if (status == 0 && endGroupPosition == -1 && endChildPosition == -1) {
- int offset = Integer.parseInt(CalendarUtil.getTwoDay(item.getList().get(position).getDate()
- , mList.get(startGroupPosition).getList().get(startChildPosition).getDate()));
- //判断该离开日期是否比入住时间还小,是则重新设置入住时间。
- if (offset < 0) {
- //刷新上一个开始日期
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- //设置新的入开始日期
- item.getList().get(position).setStatus(1);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- adapter.notifyItemChanged(position);
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- item.getList().get(position).setStatus(2);
- adapter.notifyItemChanged(position);
- endGroupPosition = helper.getAdapterPosition();
- endChildPosition = position;
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- return;
- }
- //重置开始和结束时间,设置开始时间
- if (status == 0 && endGroupPosition != -1 && endChildPosition != -1 && startChildPosition != -1 && startGroupPosition != -1) {
- //重置开始和结束
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mList.get(endGroupPosition).getList().get(endChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- mDateAdapter.notifyItemChanged(endGroupPosition);
- //重置选择间区的状态
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), false);
- //设置开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
-
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- endGroupPosition = -1;
- endChildPosition = -1;
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- }
- }
- });
- }
-
- void updateData() {
- notifyDataSetChanged();
- }
- }
-
- private class TempAdapter extends BaseQuickAdapter {
- TempAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date_child, data);
- }
-
- @Override
- protected void convert(BaseViewHolder helper, DayInfo item) {
- String name = item.getName();
- boolean isSelect = item.isSelect();
- boolean isEnable = item.isEnable();
- int status = item.getStatus();
- helper.setText(R.id.dateView, name);
- //默认
- if (status == 0) {
- if (isSelect) {
- //选中
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else {
- //没选中状态
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.black));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.white));
- }
- } else if (status == 1) {
- //开始
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, startDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else if (status == 2) {
- //结束
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, endDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- }
- //设置当前日期前的样式,没选中,并状态为0情况下
- if (!isSelect && status == 0) {
- if (!isEnable) {
- //无效
- TextView textView = helper.getView(R.id.dateDelView);
- if (TextUtils.isEmpty(name)) {
- textView.setVisibility(View.GONE);
- } else {
- textView.setText(name);
- textView.setVisibility(View.VISIBLE);
- }
- textView.setTextColor(activity.getResources().getColor(R.color.mainThemeColor));
- helper.getView(R.id.dateView).setVisibility(View.GONE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- } else {
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- TextView textView = helper.getView(R.id.dateView);
- textView.setTextColor(activity.getResources().getColor(R.color.black));
- }
- }
- }
- }
-
- private class ShareDismissListener implements OnDismissListener {
- @Override
- public void onDismiss() {
- backgroundAlpha(activity);
- }
- }
-
- private void initButton(String msg, boolean enable) {
- selectDoneButton.setText(msg);
- if (enable) {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.mainThemeColor));
- } else {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.hintTextColor));
- }
- selectDoneButton.setEnabled(enable);
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java
deleted file mode 100755
index 9bffa8e..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-public class DayInfo {
- private String name;
- private boolean isEnable;
- private String date;
- private int status = 0;
- private boolean select;
-
- boolean isSelect() {
- return select;
- }
-
- void setSelect(boolean select) {
- this.select = select;
- }
-
- int getStatus() {
- return status;
- }
-
- void setStatus(int status) {
- this.status = status;
- }
-
- String getDate() {
- return date;
- }
-
- void setDate(String date) {
- this.date = date;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- boolean isEnable() {
- return isEnable;
- }
-
- void setEnable(boolean enable) {
- isEnable = enable;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java
deleted file mode 100755
index 7bc6dbf..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.util.AttributeSet;
-
-import androidx.annotation.Nullable;
-import androidx.appcompat.widget.AppCompatTextView;
-
-import com.casic.dcms.R;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
-
-/**
- * 不可选日期斜线
- */
-public class LineTextView extends AppCompatTextView {
- private Paint mPaint;
- private Context context;
-
- public LineTextView(Context context, @Nullable AttributeSet attrs) {
- super(context, attrs);
- this.context = context;
- mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
- mPaint.setStrokeWidth(QMUIDisplayHelper.dp2px(context, 1));
- mPaint.setColor(getResources().getColor(R.color.punishColor));
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- //斜线坐标
- int startX, startY, endX, endY;
-
- //视图宽高
- int width = getWidth();
- int height = getHeight();
-
- //计算坐标
- startX = width;
- startY = QMUIDisplayHelper.dp2px(context, 2);
- endX = 0;
- endY = height - QMUIDisplayHelper.dp2px(context, 3);
- //画斜线
- canvas.drawLine(startX, startY, endX, endY, mPaint);
- }
-}
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml b/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml
new file mode 100644
index 0000000..dbc008c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_left_right.xml b/app/src/main/res/drawable/ic_left_right.xml
new file mode 100644
index 0000000..e80b0f5
--- /dev/null
+++ b/app/src/main/res/drawable/ic_left_right.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_sign.xml b/app/src/main/res/drawable/ic_sign.xml
index f914440..8e3e973 100644
--- a/app/src/main/res/drawable/ic_sign.xml
+++ b/app/src/main/res/drawable/ic_sign.xml
@@ -4,9 +4,9 @@
android:viewportWidth="1024"
android:viewportHeight="1024">
diff --git a/app/src/main/res/layout/adapter_select_date.xml b/app/src/main/res/layout/adapter_select_date.xml
deleted file mode 100644
index 9e22615..0000000
--- a/app/src/main/res/layout/adapter_select_date.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/adapter_select_date_child.xml b/app/src/main/res/layout/adapter_select_date_child.xml
deleted file mode 100644
index cb767de..0000000
--- a/app/src/main/res/layout/adapter_select_date_child.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_select_date.xml b/app/src/main/res/layout/dialog_select_date.xml
new file mode 100644
index 0000000..6ed2293
--- /dev/null
+++ b/app/src/main/res/layout/dialog_select_date.xml
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 13bc9ef..1416b2c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -28,7 +28,9 @@
+
+
@@ -60,7 +62,12 @@
+
+
+
+
+
@@ -80,7 +87,9 @@
+
+
diff --git a/app/build.gradle b/app/build.gradle
index a4ee6d9..2e1bb36 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -109,7 +109,6 @@
implementation 'com.amap.api:location:5.3.1'
//经纬度逆编码
implementation 'com.amap.api:search:8.1.0'
- implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
//桌面角标
implementation "me.leolin:ShortcutBadger:1.1.22@aar"
}
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
index 4a0b2bb..00f69ae 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
@@ -16,11 +16,11 @@
import com.casic.dcms.databinding.ActivityCleanRecordsBinding;
import com.casic.dcms.mvvm.model.CleanRecordBean;
import com.casic.dcms.mvvm.vm.ToiletViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
import com.casic.dcms.utils.StringHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -41,14 +41,8 @@
private RecordListAdapter adapter;
private WeakReferenceHandler weakReferenceHandler;
private int pageIndex = 1;
- private String start;
- private String end;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -63,7 +57,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class);
- toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex);
+ }
+
+ @Override
+ protected void onResume() {
+ obtainCleanRecordList("", "");
+ super.onResume();
}
@Override
@@ -71,23 +70,26 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(CleaningRecordsActivity.this, CalendarUtil.obtainLastTwoMonth(), view)
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
-
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
- obtainCleanRecordList();
+ obtainCleanRecordList(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +98,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +106,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
@@ -146,7 +148,7 @@
});
}
- private void obtainCleanRecordList() {
+ private void obtainCleanRecordList(String start, String end) {
toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex);
}
@@ -161,7 +163,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
index aa0d7a9..8741e2f 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
@@ -14,10 +14,10 @@
import com.casic.dcms.databinding.ActivityMaintainRecordBinding;
import com.casic.dcms.mvvm.model.MaintainRecordBean;
import com.casic.dcms.mvvm.vm.BridgeViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -37,15 +37,9 @@
private List dataBeans = new ArrayList<>();
private WeakReferenceHandler weakReferenceHandler;
private MaintainRecordAdapter adapter;
- private String start;
- private String end;
private int pageIndex = 1;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -60,8 +54,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class);
+ }
- obtainMaintainRecord();
+ @Override
+ protected void onResume() {
+ obtainMaintainRecord("", "");
+ super.onResume();
}
@Override
@@ -69,25 +67,28 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), view) //初始化
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
- //点击完成按钮后回调返回方法
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +97,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +105,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
@@ -145,7 +146,7 @@
});
}
- private void obtainMaintainRecord() {
+ private void obtainMaintainRecord(String start, String end) {
bridgeViewModel.obtainMaintainRecord(start, end, pageIndex);
}
@@ -160,7 +161,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
new file mode 100644
index 0000000..397a389
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
@@ -0,0 +1,220 @@
+package com.casic.dcms.widgets;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import androidx.fragment.app.FragmentManager;
+
+import com.casic.dcms.R;
+import com.casic.dcms.utils.LocaleConstant;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.utils.ColorUtil;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
+import com.pengxh.androidx.lite.utils.TimeOrDateUtil;
+import com.pengxh.androidx.lite.widget.EasyToast;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+public class DateSelectDialog extends Dialog {
+
+ private final Context ctx;
+ private final String title;
+ private final String negativeBtn;
+ private final String positiveBtn;
+ private final OnDialogButtonClickListener listener;
+ private final FragmentManager fragmentManager;
+ private final Type type;
+
+ private DateSelectDialog(Builder builder) {
+ super(builder.context);
+ this.ctx = builder.context;
+ this.title = builder.title;
+ this.negativeBtn = builder.negativeBtn;
+ this.positiveBtn = builder.positiveBtn;
+ this.listener = builder.listener;
+ this.fragmentManager = builder.fragmentManager;
+ this.type = builder.type;
+ }
+
+ public static class Builder {
+ private Context context;
+ private String title;
+ private String negativeBtn;
+ private String positiveBtn;
+ private OnDialogButtonClickListener listener;
+ private FragmentManager fragmentManager;
+ private Type type;
+
+ public Builder setContext(Context context) {
+ this.context = context;
+ return this;
+ }
+
+ public Builder setTitle(String title) {
+ this.title = title;
+ return this;
+ }
+
+ public Builder setNegativeButton(String name) {
+ this.negativeBtn = name;
+ return this;
+ }
+
+ public Builder setPositiveButton(String name) {
+ this.positiveBtn = name;
+ return this;
+ }
+
+ public Builder setOnDialogButtonClickListener(OnDialogButtonClickListener listener) {
+ this.listener = listener;
+ return this;
+ }
+
+ public Builder setFragmentManager(FragmentManager fragmentManager) {
+ this.fragmentManager = fragmentManager;
+ return this;
+ }
+
+ public Builder setCalendarType(Type calendarType) {
+ this.type = calendarType;
+ return this;
+ }
+
+ public DateSelectDialog build() {
+ return new DateSelectDialog(this);
+ }
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ DialogLayoutParam.resetParams(this, Gravity.CENTER, R.style.UserDefinedAnimation, 0.85);
+ setContentView(R.layout.dialog_select_date);
+ setCancelable(false);
+ setCanceledOnTouchOutside(false);
+
+
+ if (!TextUtils.isEmpty(title)) {
+ ((TextView) findViewById(R.id.dialogTitleView)).setText(title);
+ }
+
+ EditText startDateView = findViewById(R.id.startDateView);
+ startDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ startDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ EditText endDateView = findViewById(R.id.endDateView);
+ endDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ endDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ Button dialogCancelButton = findViewById(R.id.dialogCancelButton);
+ dialogCancelButton.setText(negativeBtn);
+ dialogCancelButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ listener.onCancelClick();
+ dismiss();
+ }
+ });
+
+ Button dialogConfirmButton = findViewById(R.id.dialogConfirmButton);
+ dialogConfirmButton.setText(positiveBtn);
+ dialogConfirmButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //判断其实时间和结束时间
+ String startDate = startDateView.getText().toString();
+ String endDate = endDateView.getText().toString();
+ if (isEarlierThanStart(startDate, endDate)) {
+ EasyToast.show(ctx, "结束时间不能早于开始时间");
+ return;
+ }
+ listener.onConfirmClick(startDate, endDate);
+ dismiss();
+ }
+ });
+ }
+
+ public interface OnDialogButtonClickListener {
+ void onConfirmClick(String startDate, String endDate);
+
+ void onCancelClick();
+ }
+
+ /**
+ * 判断时间是否早于当前时间
+ */
+ private boolean isEarlierThanStart(String start, String end) {
+ if (TextUtils.isEmpty(start) || TextUtils.isEmpty(end)) {
+ return false;
+ }
+ SimpleDateFormat dateFormat;
+ if (type == Type.ALL) {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
+ } else {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
+ }
+ try {
+ return dateFormat.parse(start).getTime() > dateFormat.parse(end).getTime();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
index b4e5dcb..c814a2b 100644
--- a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
+++ b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
@@ -2,19 +2,15 @@
import android.app.Dialog;
import android.content.Context;
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
+import android.widget.Button;
import android.widget.TextView;
import com.casic.dcms.R;
-import com.casic.dcms.base.BaseApplication;
import com.casic.dcms.utils.TimeOrDateUtil;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
import java.util.Timer;
import java.util.TimerTask;
@@ -37,16 +33,7 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
- //手动设置dialog宽度
- Window window = getWindow();
- window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
- window.getDecorView().setBackgroundColor(Color.TRANSPARENT);
- WindowManager.LayoutParams params = window.getAttributes();
- params.width = QMUIDisplayHelper.dp2px(BaseApplication.getInstance(), 300);
- params.height = WindowManager.LayoutParams.WRAP_CONTENT;
- window.setAttributes(params);
-
+ DialogLayoutParam.resetParams(this, 0.85);
setContentView(R.layout.dialog_sign_in);
timer = new Timer();
initView();
@@ -69,8 +56,8 @@
if (!TextUtils.isEmpty(address)) {
signInPlaceView.setText(address);
}
- TextView signInView = findViewById(R.id.signInView);
- signInView.setOnClickListener(this);
+ Button signInButton = findViewById(R.id.signInButton);
+ signInButton.setOnClickListener(this);
}
@Override
@@ -84,7 +71,7 @@
@Override
public void onClick(View view) {
int i = view.getId();
- if (i == R.id.signInView) {
+ if (i == R.id.signInButton) {
if (listener != null) {
listener.onViewClick();
}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
deleted file mode 100755
index 122b863..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import java.util.List;
-
-public class DateInfo {
- private String date;
- private List list;
-
- public String getDate() {
- return date;
- }
-
- public void setDate(String date) {
- this.date = date;
- }
-
- public List getList() {
- return list;
- }
-
- public void setList(List list) {
- this.list = list;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
deleted file mode 100755
index 7fdb45f..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
+++ /dev/null
@@ -1,647 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.Context;
-import android.graphics.drawable.BitmapDrawable;
-import android.text.TextUtils;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.LinearLayout;
-import android.widget.PopupWindow;
-import android.widget.TextView;
-
-import androidx.annotation.Nullable;
-import androidx.core.app.ActivityCompat;
-import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.utils.CalendarUtil;
-import com.chad.library.adapter.base.BaseQuickAdapter;
-import com.chad.library.adapter.base.BaseViewHolder;
-import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-
-@SuppressLint("SetTextI18n")
-public class DatePopupWindow extends PopupWindow {
- private static final String TAG = "DatePopupWindow";
- private final View rootView;
- private QMUIRoundButton selectDoneButton;
- private RecyclerView dateRecyclerView;
- private TextView hintTextTextView;
- private TextView endWeekView;
- private TextView endDateView;
- private LinearLayout endDateLayout;
- private TextView sumTimeView;
- private TextView startWeekView;
- private TextView startDateView;
-
- private final boolean dayFlag;
- private final Activity activity;
- private Date mSetDate;
- private final String currentDate;
- private final String startDesc;
- private final String endDesc;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private int childPosition = -1;//当天在列表中的子索引
- private DateAdapter mDateAdapter;
- private List mList;
- private final DateOnClickListener mOnClickListener;
-
- private DatePopupWindow(Builder builder) {
- this.activity = builder.activity;
- this.currentDate = builder.date;
- this.startDesc = builder.startDesc;
- this.endDesc = builder.endDesc;
- this.dayFlag = builder.dayFlag;
- this.startGroupPosition = builder.startGroupPosition;
- this.startChildPosition = builder.startChildPosition;
- this.endGroupPosition = builder.endGroupPosition;
- this.endChildPosition = builder.endChildPosition;
- this.mOnClickListener = builder.mOnClickListener;
-
- LayoutInflater inflater = (LayoutInflater) this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- rootView = inflater.inflate(R.layout.popu_date, null);
- this.setContentView(rootView);
- this.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setAnimationStyle(R.style.dialogWindowAnim);
- this.setFocusable(true);
- this.setBackgroundDrawable(new BitmapDrawable());
- this.setOnDismissListener(new ShareDismissListener());
- backgroundAlpha(activity);
-
- initView();
- setInitSelect();
- create(builder.parentView);
- }
-
- private void backgroundAlpha(Activity context) {
- WindowManager.LayoutParams lp = context.getWindow().getAttributes();
- lp.alpha = 1.0f; //0.0-1.0
- context.getWindow().setAttributes(lp);
- }
-
- private void initView() {
- selectDoneButton = rootView.findViewById(R.id.selectDoneButton);
- dateRecyclerView = rootView.findViewById(R.id.dateRecyclerView);
- hintTextTextView = rootView.findViewById(R.id.hintTextTextView);
- endWeekView = rootView.findViewById(R.id.endWeekView);
- endDateView = rootView.findViewById(R.id.endDateView);
- endDateLayout = rootView.findViewById(R.id.endDateLayout);
- sumTimeView = rootView.findViewById(R.id.sumTimeView);
- startWeekView = rootView.findViewById(R.id.startWeekView);
- startDateView = rootView.findViewById(R.id.startDateView);
- TextView clearButton = rootView.findViewById(R.id.clearButton);
- TextView closeButton = rootView.findViewById(R.id.closeButton);
- TextView startDateDescView = rootView.findViewById(R.id.startDateDescView);
- TextView endDateDescView = rootView.findViewById(R.id.endDateDescView);
- startDateDescView.setText(startDesc + "日期");
- endDateDescView.setText(endDesc + "日期");
- selectDoneButton.setChangeAlphaWhenPress(true);
- selectDoneButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mOnClickListener != null) {
- String startDate = mList.get(startGroupPosition)
- .getList()
- .get(startChildPosition)
- .getDate();
- String endDate = mList.get(endGroupPosition)
- .getList()
- .get(endChildPosition)
- .getDate();
- mOnClickListener.getDate(startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition);
- }
- DatePopupWindow.this.dismiss();
- }
- });
- closeButton.setOnClickListener(v -> DatePopupWindow.this.dismiss());
- clearButton.setOnClickListener(v -> {
- initView();//重置当前view
- setDefaultSelect();//选中初始状态值
- });
- LinearLayoutManager manager = new LinearLayoutManager(activity);
- manager.setOrientation(LinearLayoutManager.VERTICAL);
- mList = new ArrayList<>();
- mDateAdapter = new DateAdapter(mList);
- dateRecyclerView.setLayoutManager(manager);
- dateRecyclerView.setAdapter(mDateAdapter);
- dateRecyclerView.setItemViewCacheSize(200);
- dateRecyclerView.setHasFixedSize(true);
- dateRecyclerView.setNestedScrollingEnabled(false);
- initData();
- }
-
- private void initData() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);//当前日期转date
- try {
- if (currentDate == null) {
- return;
- }
- mSetDate = dateFormat.parse(currentDate);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //初始化日期
- Calendar c = Calendar.getInstance();
- c.setTime(mSetDate);
- int firstM = c.get(Calendar.MONTH) + 1;//获取月份 月份是从0开始,需要+1
- int days = c.get(Calendar.DATE);//日期
- int week = c.get(Calendar.DAY_OF_WEEK);//周几
- //获取当前这个月最大天数
- int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- DateInfo month = new DateInfo();
- List dayList = new ArrayList<>();
- month.setDate(c.get(Calendar.YEAR) + "年" + firstM + "月");
- //当前月第一天是周几
- int w = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < w; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- dayList.add(dayInfo);
- }
- //计算当前月的天数
- for (int i = 1; i <= maxDay; i++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName(i + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + i);
- int c_year = Integer.parseInt(currentDate.split("-")[0]);
- int c_month = Integer.parseInt(currentDate.split("-")[1]);
- int c_day = Integer.parseInt(currentDate.split("-")[2]);
- if (c_year == c.get(Calendar.YEAR) && c_month == (c.get(Calendar.MONTH) + 1) && c_day == i) {
- childPosition = dayList.size();
- }
- //设置日期是否可选择
- dayInfo.setEnable(i >= days);
- dayList.add(dayInfo);
- }
- month.setList(dayList);
- mList.add(month);
- //获取下2个月的数据
- for (int i = 1; i <= 2; i++) {
- //当前月份循环减1
- c.add(Calendar.MONTH, 1);
- DateInfo nextMonth = new DateInfo();
- List nextDayList = new ArrayList<>();
- int maxDays = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- nextMonth.setDate(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月");
- //周几
- int weeks = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < weeks; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- nextDayList.add(dayInfo);
- }
- //该月的所有日期
- for (int j = 0; j < maxDays; j++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName((j + 1) + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + (j + 1));
- dayInfo.setEnable((j + 1) <= days || i != 2);
- nextDayList.add(dayInfo);
- }
- nextMonth.setList(nextDayList);
- mList.add(nextMonth);
- }
- mDateAdapter.updateData();
- }
-
- private void setInitSelect() {
- if (0 <= this.startGroupPosition && this.startGroupPosition < mList.size() &&
- 0 <= this.endGroupPosition && this.endGroupPosition < mList.size()) {
- int maxStartChild = mList.get(this.startGroupPosition).getList().size();
- int maxEndChild = mList.get(this.endGroupPosition).getList().size();
- if (0 <= this.startChildPosition && this.startChildPosition < maxStartChild &&
- 0 <= this.endChildPosition && this.endChildPosition < maxEndChild) {
- setInit();
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- }
-
- private void setInit() {
- mList.get(this.startGroupPosition).getList().get(this.startChildPosition).setStatus(1);
- mList.get(this.endGroupPosition).getList().get(this.endChildPosition).setStatus(2);
- mDateAdapter.notifyDataSetChanged();
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- dateRecyclerView.scrollToPosition(this.startGroupPosition);
- }
-
- //设置日历标明当前日期的状态
- private void setDefaultSelect() {
- if (childPosition == -1) return;
- String date = mList.get(0).getList().get(childPosition).getDate();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Date curDate = null;
- try {
- curDate = sdf.parse(formatDate(date));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- if (curDate == null) return;
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(curDate);
- calendar.add(Calendar.DATE, 1);
-
- int year = Integer.parseInt(date.split("-")[0]);
- int month = Integer.parseInt(date.split("-")[1]);
- if (year == calendar.get(Calendar.YEAR) && month == calendar.get(Calendar.MONTH) + 1
- && childPosition < mList.get(0).getList().size() - 1) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 0;
- this.endChildPosition = childPosition - 1;
- setInit();
- } else {
- for (int i = 0; i < mList.get(1).getList().size(); i++) {
- if (!TextUtils.isEmpty(mList.get(1).getList().get(i).getDate())) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 1;
- this.endChildPosition = i;
- setInit();
- break;
- }
- }
- }
- }
-
- /**
- * 设置起始时间和结束时间的选中标识,或者设置不选中
- *
- * @param startDate
- * @param endDate
- * @param status 选中设置为true 设置不选中false
- */
- @SuppressLint("SetTextI18n")
- private void getOffsetDate(String startDate, String endDate, boolean status) {
- //更新开始日期和结束日期的信息和状态
- Calendar sCalendar = CalendarUtil.toDate(startDate);
- Calendar eCalendar = CalendarUtil.toDate(endDate);
- startDateView.setText((sCalendar.get(Calendar.MONTH) + 1) + "月" + sCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(startDate));
- endDateView.setText((eCalendar.get(Calendar.MONTH) + 1) + "月" + eCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- endWeekView.setText("周" + CalendarUtil.getWeekByFormat(endDate));
- int daysOffset = Integer.parseInt(CalendarUtil.getTwoDay(endDate, startDate));
- if (daysOffset < 0) return;
- if (dayFlag) {
- sumTimeView.setText("共" + (daysOffset + 1) + "天");
- } else {
- sumTimeView.setText("共" + daysOffset + "晚");
- }
- //更改结束日期和完成按钮状态
- endDateLayout.setVisibility(View.VISIBLE);
- hintTextTextView.setVisibility(View.GONE);
- initButton("完成", true);
-
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Calendar c = Calendar.getInstance();
- DayInfo info = mList.get(startGroupPosition).getList().get(startChildPosition);
- try {
- c.setTime(sdf.parse(info.getDate()));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //根据2个时间的相差天数去循环
- for (int i = 0; i < daysOffset; i++) {
- //下一天(目标天)
- c.add(Calendar.DATE, 1);
- //改天的日期(目标天)
- String d = c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE);
- //循环group列表
- for (int j = 0; j < mList.size(); j++) {
- //获取该月的随机一个dayInfo
- DayInfo dayInfo = mList.get(j).getList().get(mList.get(j).getList().size() - 1);
- boolean isCheck = false;
- //判断该天是否和目标天是否是同一个月
- if (!TextUtils.isEmpty(dayInfo.getDate())
- && Integer.parseInt(dayInfo.getDate().split("-")[0]) == (c.get(Calendar.YEAR))
- && Integer.parseInt(dayInfo.getDate().split("-")[1]) == ((c.get(Calendar.MONTH) + 1))) {
- //是同一个月,则循环该月多有天数
- for (int t = 0; t < mList.get(j).getList().size(); t++) {
- //找到该月的日期与目标日期相同,存在,设置选择标记
- if (mList.get(j).getList().get(t).getDate().equals(d)) {
- mList.get(j).getList().get(t).setSelect(status);
- isCheck = true;
- break;
- }
- }
- }
- if (isCheck) {
- mDateAdapter.notifyItemChanged(j);
- break;
- }
- }
- }
- }
-
- private String formatDate(String date) {
- if (TextUtils.isEmpty(date)) return "";
- return date.split("-")[0] +
- "-" +
- (date.split("-")[1].length() < 2 ? "0" + date.split("-")[1] : date.split("-")[1]) +
- "-" +
- (date.split("-")[2].length() < 2 ? "0" + date.split("-")[2] : date.split("-")[2]);
- }
-
- private void create(View view) {
- this.showAtLocation(view, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
- }
-
- /**
- * return startDate、endDate(格式:2012-12-10)
- * 选中完成后返回开始时间和结束时间
- * return startGroupPosition、startChildPosition、endGroupPosition、endChildPosition
- * 返回选中时间区间的状态标记,监听中接收后在builder中setInitSelect()方法中直接传出入(可用于记录上次选中的状态,用户再点击进入的时候恢复上一次的区间选中状态)
- */
- public interface DateOnClickListener {
- void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition);
- }
-
- public static class Builder {
- private final String date;
- private final Activity activity;
- private final View parentView;
- private String startDesc;
- private String endDesc;
- private boolean dayFlag = true;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private DateOnClickListener mOnClickListener = null;
-
- public Builder(Activity activity, Date date, View parentView) {
- this.date = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(date);
- this.activity = activity;
- this.parentView = parentView;
- this.startDesc = "开始";
- this.endDesc = "结束";
- this.dayFlag = true;
- }
-
- public DatePopupWindow builder() {
- return new DatePopupWindow(this);
- }
-
- public Builder setInitSelect(int startGroup, int startChild, int endGroup, int endChild) {
- this.startGroupPosition = startGroup;
- this.startChildPosition = startChild;
- this.endGroupPosition = endGroup;
- this.endChildPosition = endChild;
- return this;
- }
-
- public Builder setInitDay(boolean dayFlag) {
- this.dayFlag = dayFlag;
- if (dayFlag) {
- this.startDesc = "开始";
- this.endDesc = "结束";
- } else {
- this.startDesc = "入住";
- this.endDesc = "离开";
- }
- return this;
- }
-
- public Builder setDateOnClickListener(DateOnClickListener mlListener) {
- mOnClickListener = mlListener;
- return this;
- }
- }
-
- private class DateAdapter extends BaseQuickAdapter {
-
- DateAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date, data);
- }
-
- @Override
- public void onBindViewHolder(BaseViewHolder holder, int positions) {
- super.onBindViewHolder(holder, positions);
- TextView monthTitleView = holder.getView(R.id.monthTitleView);
- monthTitleView.setText(mList.get(positions).getDate());
- }
-
- @Override
- protected void convert(final BaseViewHolder helper, final DateInfo item) {
- RecyclerView monthRecyclerView = helper.getView(R.id.monthRecyclerView);
-
- GridLayoutManager manager = new GridLayoutManager(activity, 7);
- monthRecyclerView.setLayoutManager(manager);
- final TempAdapter groupAdapter = new TempAdapter(item.getList());
- monthRecyclerView.setAdapter(groupAdapter);
- monthRecyclerView.setItemViewCacheSize(200);
- monthRecyclerView.setHasFixedSize(true);
- monthRecyclerView.setNestedScrollingEnabled(false);
- groupAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
- @Override
- public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
- if (!item.getList().get(position).isEnable()) return;
- if (TextUtils.isEmpty(item.getList().get(position).getName())) return;
- if (TextUtils.isEmpty(item.getList().get(position).getDate())) return;
- int status = item.getList().get(position).getStatus();
- if (status == 0 &&
- startGroupPosition == -1 &&
- startChildPosition == -1 &&
- item.getList().get(position).isEnable()) {
- //开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
-
- startDateView.setText(CalendarUtil.FormatDateMD(item.getList().get(position).getDate()));
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- if (status == 0 && endGroupPosition == -1 && endChildPosition == -1) {
- int offset = Integer.parseInt(CalendarUtil.getTwoDay(item.getList().get(position).getDate()
- , mList.get(startGroupPosition).getList().get(startChildPosition).getDate()));
- //判断该离开日期是否比入住时间还小,是则重新设置入住时间。
- if (offset < 0) {
- //刷新上一个开始日期
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- //设置新的入开始日期
- item.getList().get(position).setStatus(1);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- adapter.notifyItemChanged(position);
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- item.getList().get(position).setStatus(2);
- adapter.notifyItemChanged(position);
- endGroupPosition = helper.getAdapterPosition();
- endChildPosition = position;
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- return;
- }
- //重置开始和结束时间,设置开始时间
- if (status == 0 && endGroupPosition != -1 && endChildPosition != -1 && startChildPosition != -1 && startGroupPosition != -1) {
- //重置开始和结束
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mList.get(endGroupPosition).getList().get(endChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- mDateAdapter.notifyItemChanged(endGroupPosition);
- //重置选择间区的状态
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), false);
- //设置开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
-
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- endGroupPosition = -1;
- endChildPosition = -1;
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- }
- }
- });
- }
-
- void updateData() {
- notifyDataSetChanged();
- }
- }
-
- private class TempAdapter extends BaseQuickAdapter {
- TempAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date_child, data);
- }
-
- @Override
- protected void convert(BaseViewHolder helper, DayInfo item) {
- String name = item.getName();
- boolean isSelect = item.isSelect();
- boolean isEnable = item.isEnable();
- int status = item.getStatus();
- helper.setText(R.id.dateView, name);
- //默认
- if (status == 0) {
- if (isSelect) {
- //选中
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else {
- //没选中状态
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.black));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.white));
- }
- } else if (status == 1) {
- //开始
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, startDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else if (status == 2) {
- //结束
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, endDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- }
- //设置当前日期前的样式,没选中,并状态为0情况下
- if (!isSelect && status == 0) {
- if (!isEnable) {
- //无效
- TextView textView = helper.getView(R.id.dateDelView);
- if (TextUtils.isEmpty(name)) {
- textView.setVisibility(View.GONE);
- } else {
- textView.setText(name);
- textView.setVisibility(View.VISIBLE);
- }
- textView.setTextColor(activity.getResources().getColor(R.color.mainThemeColor));
- helper.getView(R.id.dateView).setVisibility(View.GONE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- } else {
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- TextView textView = helper.getView(R.id.dateView);
- textView.setTextColor(activity.getResources().getColor(R.color.black));
- }
- }
- }
- }
-
- private class ShareDismissListener implements OnDismissListener {
- @Override
- public void onDismiss() {
- backgroundAlpha(activity);
- }
- }
-
- private void initButton(String msg, boolean enable) {
- selectDoneButton.setText(msg);
- if (enable) {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.mainThemeColor));
- } else {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.hintTextColor));
- }
- selectDoneButton.setEnabled(enable);
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java
deleted file mode 100755
index 9bffa8e..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-public class DayInfo {
- private String name;
- private boolean isEnable;
- private String date;
- private int status = 0;
- private boolean select;
-
- boolean isSelect() {
- return select;
- }
-
- void setSelect(boolean select) {
- this.select = select;
- }
-
- int getStatus() {
- return status;
- }
-
- void setStatus(int status) {
- this.status = status;
- }
-
- String getDate() {
- return date;
- }
-
- void setDate(String date) {
- this.date = date;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- boolean isEnable() {
- return isEnable;
- }
-
- void setEnable(boolean enable) {
- isEnable = enable;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java
deleted file mode 100755
index 7bc6dbf..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.util.AttributeSet;
-
-import androidx.annotation.Nullable;
-import androidx.appcompat.widget.AppCompatTextView;
-
-import com.casic.dcms.R;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
-
-/**
- * 不可选日期斜线
- */
-public class LineTextView extends AppCompatTextView {
- private Paint mPaint;
- private Context context;
-
- public LineTextView(Context context, @Nullable AttributeSet attrs) {
- super(context, attrs);
- this.context = context;
- mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
- mPaint.setStrokeWidth(QMUIDisplayHelper.dp2px(context, 1));
- mPaint.setColor(getResources().getColor(R.color.punishColor));
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- //斜线坐标
- int startX, startY, endX, endY;
-
- //视图宽高
- int width = getWidth();
- int height = getHeight();
-
- //计算坐标
- startX = width;
- startY = QMUIDisplayHelper.dp2px(context, 2);
- endX = 0;
- endY = height - QMUIDisplayHelper.dp2px(context, 3);
- //画斜线
- canvas.drawLine(startX, startY, endX, endY, mPaint);
- }
-}
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml b/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml
new file mode 100644
index 0000000..dbc008c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_left_right.xml b/app/src/main/res/drawable/ic_left_right.xml
new file mode 100644
index 0000000..e80b0f5
--- /dev/null
+++ b/app/src/main/res/drawable/ic_left_right.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_sign.xml b/app/src/main/res/drawable/ic_sign.xml
index f914440..8e3e973 100644
--- a/app/src/main/res/drawable/ic_sign.xml
+++ b/app/src/main/res/drawable/ic_sign.xml
@@ -4,9 +4,9 @@
android:viewportWidth="1024"
android:viewportHeight="1024">
diff --git a/app/src/main/res/layout/adapter_select_date.xml b/app/src/main/res/layout/adapter_select_date.xml
deleted file mode 100644
index 9e22615..0000000
--- a/app/src/main/res/layout/adapter_select_date.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/adapter_select_date_child.xml b/app/src/main/res/layout/adapter_select_date_child.xml
deleted file mode 100644
index cb767de..0000000
--- a/app/src/main/res/layout/adapter_select_date_child.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_select_date.xml b/app/src/main/res/layout/dialog_select_date.xml
new file mode 100644
index 0000000..6ed2293
--- /dev/null
+++ b/app/src/main/res/layout/dialog_select_date.xml
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_sign_in.xml b/app/src/main/res/layout/dialog_sign_in.xml
index 1318619..b4e5b2b 100644
--- a/app/src/main/res/layout/dialog_sign_in.xml
+++ b/app/src/main/res/layout/dialog_sign_in.xml
@@ -10,6 +10,7 @@
-
-
-
+
+
+ android:textColor="@color/blue"
+ android:textSize="@dimen/sp_16" />
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 13bc9ef..1416b2c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -28,7 +28,9 @@
+
+
@@ -60,7 +62,12 @@
+
+
+
+
+
@@ -80,7 +87,9 @@
+
+
diff --git a/app/build.gradle b/app/build.gradle
index a4ee6d9..2e1bb36 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -109,7 +109,6 @@
implementation 'com.amap.api:location:5.3.1'
//经纬度逆编码
implementation 'com.amap.api:search:8.1.0'
- implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
//桌面角标
implementation "me.leolin:ShortcutBadger:1.1.22@aar"
}
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
index 4a0b2bb..00f69ae 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
@@ -16,11 +16,11 @@
import com.casic.dcms.databinding.ActivityCleanRecordsBinding;
import com.casic.dcms.mvvm.model.CleanRecordBean;
import com.casic.dcms.mvvm.vm.ToiletViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
import com.casic.dcms.utils.StringHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -41,14 +41,8 @@
private RecordListAdapter adapter;
private WeakReferenceHandler weakReferenceHandler;
private int pageIndex = 1;
- private String start;
- private String end;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -63,7 +57,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class);
- toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex);
+ }
+
+ @Override
+ protected void onResume() {
+ obtainCleanRecordList("", "");
+ super.onResume();
}
@Override
@@ -71,23 +70,26 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(CleaningRecordsActivity.this, CalendarUtil.obtainLastTwoMonth(), view)
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
-
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
- obtainCleanRecordList();
+ obtainCleanRecordList(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +98,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +106,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
@@ -146,7 +148,7 @@
});
}
- private void obtainCleanRecordList() {
+ private void obtainCleanRecordList(String start, String end) {
toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex);
}
@@ -161,7 +163,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
index aa0d7a9..8741e2f 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
@@ -14,10 +14,10 @@
import com.casic.dcms.databinding.ActivityMaintainRecordBinding;
import com.casic.dcms.mvvm.model.MaintainRecordBean;
import com.casic.dcms.mvvm.vm.BridgeViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -37,15 +37,9 @@
private List dataBeans = new ArrayList<>();
private WeakReferenceHandler weakReferenceHandler;
private MaintainRecordAdapter adapter;
- private String start;
- private String end;
private int pageIndex = 1;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -60,8 +54,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class);
+ }
- obtainMaintainRecord();
+ @Override
+ protected void onResume() {
+ obtainMaintainRecord("", "");
+ super.onResume();
}
@Override
@@ -69,25 +67,28 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), view) //初始化
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
- //点击完成按钮后回调返回方法
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +97,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +105,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
@@ -145,7 +146,7 @@
});
}
- private void obtainMaintainRecord() {
+ private void obtainMaintainRecord(String start, String end) {
bridgeViewModel.obtainMaintainRecord(start, end, pageIndex);
}
@@ -160,7 +161,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
new file mode 100644
index 0000000..397a389
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
@@ -0,0 +1,220 @@
+package com.casic.dcms.widgets;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import androidx.fragment.app.FragmentManager;
+
+import com.casic.dcms.R;
+import com.casic.dcms.utils.LocaleConstant;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.utils.ColorUtil;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
+import com.pengxh.androidx.lite.utils.TimeOrDateUtil;
+import com.pengxh.androidx.lite.widget.EasyToast;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+public class DateSelectDialog extends Dialog {
+
+ private final Context ctx;
+ private final String title;
+ private final String negativeBtn;
+ private final String positiveBtn;
+ private final OnDialogButtonClickListener listener;
+ private final FragmentManager fragmentManager;
+ private final Type type;
+
+ private DateSelectDialog(Builder builder) {
+ super(builder.context);
+ this.ctx = builder.context;
+ this.title = builder.title;
+ this.negativeBtn = builder.negativeBtn;
+ this.positiveBtn = builder.positiveBtn;
+ this.listener = builder.listener;
+ this.fragmentManager = builder.fragmentManager;
+ this.type = builder.type;
+ }
+
+ public static class Builder {
+ private Context context;
+ private String title;
+ private String negativeBtn;
+ private String positiveBtn;
+ private OnDialogButtonClickListener listener;
+ private FragmentManager fragmentManager;
+ private Type type;
+
+ public Builder setContext(Context context) {
+ this.context = context;
+ return this;
+ }
+
+ public Builder setTitle(String title) {
+ this.title = title;
+ return this;
+ }
+
+ public Builder setNegativeButton(String name) {
+ this.negativeBtn = name;
+ return this;
+ }
+
+ public Builder setPositiveButton(String name) {
+ this.positiveBtn = name;
+ return this;
+ }
+
+ public Builder setOnDialogButtonClickListener(OnDialogButtonClickListener listener) {
+ this.listener = listener;
+ return this;
+ }
+
+ public Builder setFragmentManager(FragmentManager fragmentManager) {
+ this.fragmentManager = fragmentManager;
+ return this;
+ }
+
+ public Builder setCalendarType(Type calendarType) {
+ this.type = calendarType;
+ return this;
+ }
+
+ public DateSelectDialog build() {
+ return new DateSelectDialog(this);
+ }
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ DialogLayoutParam.resetParams(this, Gravity.CENTER, R.style.UserDefinedAnimation, 0.85);
+ setContentView(R.layout.dialog_select_date);
+ setCancelable(false);
+ setCanceledOnTouchOutside(false);
+
+
+ if (!TextUtils.isEmpty(title)) {
+ ((TextView) findViewById(R.id.dialogTitleView)).setText(title);
+ }
+
+ EditText startDateView = findViewById(R.id.startDateView);
+ startDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ startDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ EditText endDateView = findViewById(R.id.endDateView);
+ endDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ endDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ Button dialogCancelButton = findViewById(R.id.dialogCancelButton);
+ dialogCancelButton.setText(negativeBtn);
+ dialogCancelButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ listener.onCancelClick();
+ dismiss();
+ }
+ });
+
+ Button dialogConfirmButton = findViewById(R.id.dialogConfirmButton);
+ dialogConfirmButton.setText(positiveBtn);
+ dialogConfirmButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //判断其实时间和结束时间
+ String startDate = startDateView.getText().toString();
+ String endDate = endDateView.getText().toString();
+ if (isEarlierThanStart(startDate, endDate)) {
+ EasyToast.show(ctx, "结束时间不能早于开始时间");
+ return;
+ }
+ listener.onConfirmClick(startDate, endDate);
+ dismiss();
+ }
+ });
+ }
+
+ public interface OnDialogButtonClickListener {
+ void onConfirmClick(String startDate, String endDate);
+
+ void onCancelClick();
+ }
+
+ /**
+ * 判断时间是否早于当前时间
+ */
+ private boolean isEarlierThanStart(String start, String end) {
+ if (TextUtils.isEmpty(start) || TextUtils.isEmpty(end)) {
+ return false;
+ }
+ SimpleDateFormat dateFormat;
+ if (type == Type.ALL) {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
+ } else {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
+ }
+ try {
+ return dateFormat.parse(start).getTime() > dateFormat.parse(end).getTime();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
index b4e5dcb..c814a2b 100644
--- a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
+++ b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
@@ -2,19 +2,15 @@
import android.app.Dialog;
import android.content.Context;
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
+import android.widget.Button;
import android.widget.TextView;
import com.casic.dcms.R;
-import com.casic.dcms.base.BaseApplication;
import com.casic.dcms.utils.TimeOrDateUtil;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
import java.util.Timer;
import java.util.TimerTask;
@@ -37,16 +33,7 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
- //手动设置dialog宽度
- Window window = getWindow();
- window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
- window.getDecorView().setBackgroundColor(Color.TRANSPARENT);
- WindowManager.LayoutParams params = window.getAttributes();
- params.width = QMUIDisplayHelper.dp2px(BaseApplication.getInstance(), 300);
- params.height = WindowManager.LayoutParams.WRAP_CONTENT;
- window.setAttributes(params);
-
+ DialogLayoutParam.resetParams(this, 0.85);
setContentView(R.layout.dialog_sign_in);
timer = new Timer();
initView();
@@ -69,8 +56,8 @@
if (!TextUtils.isEmpty(address)) {
signInPlaceView.setText(address);
}
- TextView signInView = findViewById(R.id.signInView);
- signInView.setOnClickListener(this);
+ Button signInButton = findViewById(R.id.signInButton);
+ signInButton.setOnClickListener(this);
}
@Override
@@ -84,7 +71,7 @@
@Override
public void onClick(View view) {
int i = view.getId();
- if (i == R.id.signInView) {
+ if (i == R.id.signInButton) {
if (listener != null) {
listener.onViewClick();
}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
deleted file mode 100755
index 122b863..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import java.util.List;
-
-public class DateInfo {
- private String date;
- private List list;
-
- public String getDate() {
- return date;
- }
-
- public void setDate(String date) {
- this.date = date;
- }
-
- public List getList() {
- return list;
- }
-
- public void setList(List list) {
- this.list = list;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
deleted file mode 100755
index 7fdb45f..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
+++ /dev/null
@@ -1,647 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.Context;
-import android.graphics.drawable.BitmapDrawable;
-import android.text.TextUtils;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.LinearLayout;
-import android.widget.PopupWindow;
-import android.widget.TextView;
-
-import androidx.annotation.Nullable;
-import androidx.core.app.ActivityCompat;
-import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.utils.CalendarUtil;
-import com.chad.library.adapter.base.BaseQuickAdapter;
-import com.chad.library.adapter.base.BaseViewHolder;
-import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-
-@SuppressLint("SetTextI18n")
-public class DatePopupWindow extends PopupWindow {
- private static final String TAG = "DatePopupWindow";
- private final View rootView;
- private QMUIRoundButton selectDoneButton;
- private RecyclerView dateRecyclerView;
- private TextView hintTextTextView;
- private TextView endWeekView;
- private TextView endDateView;
- private LinearLayout endDateLayout;
- private TextView sumTimeView;
- private TextView startWeekView;
- private TextView startDateView;
-
- private final boolean dayFlag;
- private final Activity activity;
- private Date mSetDate;
- private final String currentDate;
- private final String startDesc;
- private final String endDesc;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private int childPosition = -1;//当天在列表中的子索引
- private DateAdapter mDateAdapter;
- private List mList;
- private final DateOnClickListener mOnClickListener;
-
- private DatePopupWindow(Builder builder) {
- this.activity = builder.activity;
- this.currentDate = builder.date;
- this.startDesc = builder.startDesc;
- this.endDesc = builder.endDesc;
- this.dayFlag = builder.dayFlag;
- this.startGroupPosition = builder.startGroupPosition;
- this.startChildPosition = builder.startChildPosition;
- this.endGroupPosition = builder.endGroupPosition;
- this.endChildPosition = builder.endChildPosition;
- this.mOnClickListener = builder.mOnClickListener;
-
- LayoutInflater inflater = (LayoutInflater) this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- rootView = inflater.inflate(R.layout.popu_date, null);
- this.setContentView(rootView);
- this.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setAnimationStyle(R.style.dialogWindowAnim);
- this.setFocusable(true);
- this.setBackgroundDrawable(new BitmapDrawable());
- this.setOnDismissListener(new ShareDismissListener());
- backgroundAlpha(activity);
-
- initView();
- setInitSelect();
- create(builder.parentView);
- }
-
- private void backgroundAlpha(Activity context) {
- WindowManager.LayoutParams lp = context.getWindow().getAttributes();
- lp.alpha = 1.0f; //0.0-1.0
- context.getWindow().setAttributes(lp);
- }
-
- private void initView() {
- selectDoneButton = rootView.findViewById(R.id.selectDoneButton);
- dateRecyclerView = rootView.findViewById(R.id.dateRecyclerView);
- hintTextTextView = rootView.findViewById(R.id.hintTextTextView);
- endWeekView = rootView.findViewById(R.id.endWeekView);
- endDateView = rootView.findViewById(R.id.endDateView);
- endDateLayout = rootView.findViewById(R.id.endDateLayout);
- sumTimeView = rootView.findViewById(R.id.sumTimeView);
- startWeekView = rootView.findViewById(R.id.startWeekView);
- startDateView = rootView.findViewById(R.id.startDateView);
- TextView clearButton = rootView.findViewById(R.id.clearButton);
- TextView closeButton = rootView.findViewById(R.id.closeButton);
- TextView startDateDescView = rootView.findViewById(R.id.startDateDescView);
- TextView endDateDescView = rootView.findViewById(R.id.endDateDescView);
- startDateDescView.setText(startDesc + "日期");
- endDateDescView.setText(endDesc + "日期");
- selectDoneButton.setChangeAlphaWhenPress(true);
- selectDoneButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mOnClickListener != null) {
- String startDate = mList.get(startGroupPosition)
- .getList()
- .get(startChildPosition)
- .getDate();
- String endDate = mList.get(endGroupPosition)
- .getList()
- .get(endChildPosition)
- .getDate();
- mOnClickListener.getDate(startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition);
- }
- DatePopupWindow.this.dismiss();
- }
- });
- closeButton.setOnClickListener(v -> DatePopupWindow.this.dismiss());
- clearButton.setOnClickListener(v -> {
- initView();//重置当前view
- setDefaultSelect();//选中初始状态值
- });
- LinearLayoutManager manager = new LinearLayoutManager(activity);
- manager.setOrientation(LinearLayoutManager.VERTICAL);
- mList = new ArrayList<>();
- mDateAdapter = new DateAdapter(mList);
- dateRecyclerView.setLayoutManager(manager);
- dateRecyclerView.setAdapter(mDateAdapter);
- dateRecyclerView.setItemViewCacheSize(200);
- dateRecyclerView.setHasFixedSize(true);
- dateRecyclerView.setNestedScrollingEnabled(false);
- initData();
- }
-
- private void initData() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);//当前日期转date
- try {
- if (currentDate == null) {
- return;
- }
- mSetDate = dateFormat.parse(currentDate);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //初始化日期
- Calendar c = Calendar.getInstance();
- c.setTime(mSetDate);
- int firstM = c.get(Calendar.MONTH) + 1;//获取月份 月份是从0开始,需要+1
- int days = c.get(Calendar.DATE);//日期
- int week = c.get(Calendar.DAY_OF_WEEK);//周几
- //获取当前这个月最大天数
- int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- DateInfo month = new DateInfo();
- List dayList = new ArrayList<>();
- month.setDate(c.get(Calendar.YEAR) + "年" + firstM + "月");
- //当前月第一天是周几
- int w = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < w; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- dayList.add(dayInfo);
- }
- //计算当前月的天数
- for (int i = 1; i <= maxDay; i++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName(i + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + i);
- int c_year = Integer.parseInt(currentDate.split("-")[0]);
- int c_month = Integer.parseInt(currentDate.split("-")[1]);
- int c_day = Integer.parseInt(currentDate.split("-")[2]);
- if (c_year == c.get(Calendar.YEAR) && c_month == (c.get(Calendar.MONTH) + 1) && c_day == i) {
- childPosition = dayList.size();
- }
- //设置日期是否可选择
- dayInfo.setEnable(i >= days);
- dayList.add(dayInfo);
- }
- month.setList(dayList);
- mList.add(month);
- //获取下2个月的数据
- for (int i = 1; i <= 2; i++) {
- //当前月份循环减1
- c.add(Calendar.MONTH, 1);
- DateInfo nextMonth = new DateInfo();
- List nextDayList = new ArrayList<>();
- int maxDays = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- nextMonth.setDate(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月");
- //周几
- int weeks = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < weeks; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- nextDayList.add(dayInfo);
- }
- //该月的所有日期
- for (int j = 0; j < maxDays; j++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName((j + 1) + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + (j + 1));
- dayInfo.setEnable((j + 1) <= days || i != 2);
- nextDayList.add(dayInfo);
- }
- nextMonth.setList(nextDayList);
- mList.add(nextMonth);
- }
- mDateAdapter.updateData();
- }
-
- private void setInitSelect() {
- if (0 <= this.startGroupPosition && this.startGroupPosition < mList.size() &&
- 0 <= this.endGroupPosition && this.endGroupPosition < mList.size()) {
- int maxStartChild = mList.get(this.startGroupPosition).getList().size();
- int maxEndChild = mList.get(this.endGroupPosition).getList().size();
- if (0 <= this.startChildPosition && this.startChildPosition < maxStartChild &&
- 0 <= this.endChildPosition && this.endChildPosition < maxEndChild) {
- setInit();
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- }
-
- private void setInit() {
- mList.get(this.startGroupPosition).getList().get(this.startChildPosition).setStatus(1);
- mList.get(this.endGroupPosition).getList().get(this.endChildPosition).setStatus(2);
- mDateAdapter.notifyDataSetChanged();
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- dateRecyclerView.scrollToPosition(this.startGroupPosition);
- }
-
- //设置日历标明当前日期的状态
- private void setDefaultSelect() {
- if (childPosition == -1) return;
- String date = mList.get(0).getList().get(childPosition).getDate();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Date curDate = null;
- try {
- curDate = sdf.parse(formatDate(date));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- if (curDate == null) return;
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(curDate);
- calendar.add(Calendar.DATE, 1);
-
- int year = Integer.parseInt(date.split("-")[0]);
- int month = Integer.parseInt(date.split("-")[1]);
- if (year == calendar.get(Calendar.YEAR) && month == calendar.get(Calendar.MONTH) + 1
- && childPosition < mList.get(0).getList().size() - 1) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 0;
- this.endChildPosition = childPosition - 1;
- setInit();
- } else {
- for (int i = 0; i < mList.get(1).getList().size(); i++) {
- if (!TextUtils.isEmpty(mList.get(1).getList().get(i).getDate())) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 1;
- this.endChildPosition = i;
- setInit();
- break;
- }
- }
- }
- }
-
- /**
- * 设置起始时间和结束时间的选中标识,或者设置不选中
- *
- * @param startDate
- * @param endDate
- * @param status 选中设置为true 设置不选中false
- */
- @SuppressLint("SetTextI18n")
- private void getOffsetDate(String startDate, String endDate, boolean status) {
- //更新开始日期和结束日期的信息和状态
- Calendar sCalendar = CalendarUtil.toDate(startDate);
- Calendar eCalendar = CalendarUtil.toDate(endDate);
- startDateView.setText((sCalendar.get(Calendar.MONTH) + 1) + "月" + sCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(startDate));
- endDateView.setText((eCalendar.get(Calendar.MONTH) + 1) + "月" + eCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- endWeekView.setText("周" + CalendarUtil.getWeekByFormat(endDate));
- int daysOffset = Integer.parseInt(CalendarUtil.getTwoDay(endDate, startDate));
- if (daysOffset < 0) return;
- if (dayFlag) {
- sumTimeView.setText("共" + (daysOffset + 1) + "天");
- } else {
- sumTimeView.setText("共" + daysOffset + "晚");
- }
- //更改结束日期和完成按钮状态
- endDateLayout.setVisibility(View.VISIBLE);
- hintTextTextView.setVisibility(View.GONE);
- initButton("完成", true);
-
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Calendar c = Calendar.getInstance();
- DayInfo info = mList.get(startGroupPosition).getList().get(startChildPosition);
- try {
- c.setTime(sdf.parse(info.getDate()));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //根据2个时间的相差天数去循环
- for (int i = 0; i < daysOffset; i++) {
- //下一天(目标天)
- c.add(Calendar.DATE, 1);
- //改天的日期(目标天)
- String d = c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE);
- //循环group列表
- for (int j = 0; j < mList.size(); j++) {
- //获取该月的随机一个dayInfo
- DayInfo dayInfo = mList.get(j).getList().get(mList.get(j).getList().size() - 1);
- boolean isCheck = false;
- //判断该天是否和目标天是否是同一个月
- if (!TextUtils.isEmpty(dayInfo.getDate())
- && Integer.parseInt(dayInfo.getDate().split("-")[0]) == (c.get(Calendar.YEAR))
- && Integer.parseInt(dayInfo.getDate().split("-")[1]) == ((c.get(Calendar.MONTH) + 1))) {
- //是同一个月,则循环该月多有天数
- for (int t = 0; t < mList.get(j).getList().size(); t++) {
- //找到该月的日期与目标日期相同,存在,设置选择标记
- if (mList.get(j).getList().get(t).getDate().equals(d)) {
- mList.get(j).getList().get(t).setSelect(status);
- isCheck = true;
- break;
- }
- }
- }
- if (isCheck) {
- mDateAdapter.notifyItemChanged(j);
- break;
- }
- }
- }
- }
-
- private String formatDate(String date) {
- if (TextUtils.isEmpty(date)) return "";
- return date.split("-")[0] +
- "-" +
- (date.split("-")[1].length() < 2 ? "0" + date.split("-")[1] : date.split("-")[1]) +
- "-" +
- (date.split("-")[2].length() < 2 ? "0" + date.split("-")[2] : date.split("-")[2]);
- }
-
- private void create(View view) {
- this.showAtLocation(view, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
- }
-
- /**
- * return startDate、endDate(格式:2012-12-10)
- * 选中完成后返回开始时间和结束时间
- * return startGroupPosition、startChildPosition、endGroupPosition、endChildPosition
- * 返回选中时间区间的状态标记,监听中接收后在builder中setInitSelect()方法中直接传出入(可用于记录上次选中的状态,用户再点击进入的时候恢复上一次的区间选中状态)
- */
- public interface DateOnClickListener {
- void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition);
- }
-
- public static class Builder {
- private final String date;
- private final Activity activity;
- private final View parentView;
- private String startDesc;
- private String endDesc;
- private boolean dayFlag = true;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private DateOnClickListener mOnClickListener = null;
-
- public Builder(Activity activity, Date date, View parentView) {
- this.date = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(date);
- this.activity = activity;
- this.parentView = parentView;
- this.startDesc = "开始";
- this.endDesc = "结束";
- this.dayFlag = true;
- }
-
- public DatePopupWindow builder() {
- return new DatePopupWindow(this);
- }
-
- public Builder setInitSelect(int startGroup, int startChild, int endGroup, int endChild) {
- this.startGroupPosition = startGroup;
- this.startChildPosition = startChild;
- this.endGroupPosition = endGroup;
- this.endChildPosition = endChild;
- return this;
- }
-
- public Builder setInitDay(boolean dayFlag) {
- this.dayFlag = dayFlag;
- if (dayFlag) {
- this.startDesc = "开始";
- this.endDesc = "结束";
- } else {
- this.startDesc = "入住";
- this.endDesc = "离开";
- }
- return this;
- }
-
- public Builder setDateOnClickListener(DateOnClickListener mlListener) {
- mOnClickListener = mlListener;
- return this;
- }
- }
-
- private class DateAdapter extends BaseQuickAdapter {
-
- DateAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date, data);
- }
-
- @Override
- public void onBindViewHolder(BaseViewHolder holder, int positions) {
- super.onBindViewHolder(holder, positions);
- TextView monthTitleView = holder.getView(R.id.monthTitleView);
- monthTitleView.setText(mList.get(positions).getDate());
- }
-
- @Override
- protected void convert(final BaseViewHolder helper, final DateInfo item) {
- RecyclerView monthRecyclerView = helper.getView(R.id.monthRecyclerView);
-
- GridLayoutManager manager = new GridLayoutManager(activity, 7);
- monthRecyclerView.setLayoutManager(manager);
- final TempAdapter groupAdapter = new TempAdapter(item.getList());
- monthRecyclerView.setAdapter(groupAdapter);
- monthRecyclerView.setItemViewCacheSize(200);
- monthRecyclerView.setHasFixedSize(true);
- monthRecyclerView.setNestedScrollingEnabled(false);
- groupAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
- @Override
- public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
- if (!item.getList().get(position).isEnable()) return;
- if (TextUtils.isEmpty(item.getList().get(position).getName())) return;
- if (TextUtils.isEmpty(item.getList().get(position).getDate())) return;
- int status = item.getList().get(position).getStatus();
- if (status == 0 &&
- startGroupPosition == -1 &&
- startChildPosition == -1 &&
- item.getList().get(position).isEnable()) {
- //开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
-
- startDateView.setText(CalendarUtil.FormatDateMD(item.getList().get(position).getDate()));
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- if (status == 0 && endGroupPosition == -1 && endChildPosition == -1) {
- int offset = Integer.parseInt(CalendarUtil.getTwoDay(item.getList().get(position).getDate()
- , mList.get(startGroupPosition).getList().get(startChildPosition).getDate()));
- //判断该离开日期是否比入住时间还小,是则重新设置入住时间。
- if (offset < 0) {
- //刷新上一个开始日期
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- //设置新的入开始日期
- item.getList().get(position).setStatus(1);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- adapter.notifyItemChanged(position);
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- item.getList().get(position).setStatus(2);
- adapter.notifyItemChanged(position);
- endGroupPosition = helper.getAdapterPosition();
- endChildPosition = position;
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- return;
- }
- //重置开始和结束时间,设置开始时间
- if (status == 0 && endGroupPosition != -1 && endChildPosition != -1 && startChildPosition != -1 && startGroupPosition != -1) {
- //重置开始和结束
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mList.get(endGroupPosition).getList().get(endChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- mDateAdapter.notifyItemChanged(endGroupPosition);
- //重置选择间区的状态
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), false);
- //设置开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
-
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- endGroupPosition = -1;
- endChildPosition = -1;
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- }
- }
- });
- }
-
- void updateData() {
- notifyDataSetChanged();
- }
- }
-
- private class TempAdapter extends BaseQuickAdapter {
- TempAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date_child, data);
- }
-
- @Override
- protected void convert(BaseViewHolder helper, DayInfo item) {
- String name = item.getName();
- boolean isSelect = item.isSelect();
- boolean isEnable = item.isEnable();
- int status = item.getStatus();
- helper.setText(R.id.dateView, name);
- //默认
- if (status == 0) {
- if (isSelect) {
- //选中
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else {
- //没选中状态
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.black));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.white));
- }
- } else if (status == 1) {
- //开始
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, startDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else if (status == 2) {
- //结束
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, endDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- }
- //设置当前日期前的样式,没选中,并状态为0情况下
- if (!isSelect && status == 0) {
- if (!isEnable) {
- //无效
- TextView textView = helper.getView(R.id.dateDelView);
- if (TextUtils.isEmpty(name)) {
- textView.setVisibility(View.GONE);
- } else {
- textView.setText(name);
- textView.setVisibility(View.VISIBLE);
- }
- textView.setTextColor(activity.getResources().getColor(R.color.mainThemeColor));
- helper.getView(R.id.dateView).setVisibility(View.GONE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- } else {
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- TextView textView = helper.getView(R.id.dateView);
- textView.setTextColor(activity.getResources().getColor(R.color.black));
- }
- }
- }
- }
-
- private class ShareDismissListener implements OnDismissListener {
- @Override
- public void onDismiss() {
- backgroundAlpha(activity);
- }
- }
-
- private void initButton(String msg, boolean enable) {
- selectDoneButton.setText(msg);
- if (enable) {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.mainThemeColor));
- } else {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.hintTextColor));
- }
- selectDoneButton.setEnabled(enable);
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java
deleted file mode 100755
index 9bffa8e..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-public class DayInfo {
- private String name;
- private boolean isEnable;
- private String date;
- private int status = 0;
- private boolean select;
-
- boolean isSelect() {
- return select;
- }
-
- void setSelect(boolean select) {
- this.select = select;
- }
-
- int getStatus() {
- return status;
- }
-
- void setStatus(int status) {
- this.status = status;
- }
-
- String getDate() {
- return date;
- }
-
- void setDate(String date) {
- this.date = date;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- boolean isEnable() {
- return isEnable;
- }
-
- void setEnable(boolean enable) {
- isEnable = enable;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java
deleted file mode 100755
index 7bc6dbf..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.util.AttributeSet;
-
-import androidx.annotation.Nullable;
-import androidx.appcompat.widget.AppCompatTextView;
-
-import com.casic.dcms.R;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
-
-/**
- * 不可选日期斜线
- */
-public class LineTextView extends AppCompatTextView {
- private Paint mPaint;
- private Context context;
-
- public LineTextView(Context context, @Nullable AttributeSet attrs) {
- super(context, attrs);
- this.context = context;
- mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
- mPaint.setStrokeWidth(QMUIDisplayHelper.dp2px(context, 1));
- mPaint.setColor(getResources().getColor(R.color.punishColor));
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- //斜线坐标
- int startX, startY, endX, endY;
-
- //视图宽高
- int width = getWidth();
- int height = getHeight();
-
- //计算坐标
- startX = width;
- startY = QMUIDisplayHelper.dp2px(context, 2);
- endX = 0;
- endY = height - QMUIDisplayHelper.dp2px(context, 3);
- //画斜线
- canvas.drawLine(startX, startY, endX, endY, mPaint);
- }
-}
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml b/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml
new file mode 100644
index 0000000..dbc008c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_left_right.xml b/app/src/main/res/drawable/ic_left_right.xml
new file mode 100644
index 0000000..e80b0f5
--- /dev/null
+++ b/app/src/main/res/drawable/ic_left_right.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_sign.xml b/app/src/main/res/drawable/ic_sign.xml
index f914440..8e3e973 100644
--- a/app/src/main/res/drawable/ic_sign.xml
+++ b/app/src/main/res/drawable/ic_sign.xml
@@ -4,9 +4,9 @@
android:viewportWidth="1024"
android:viewportHeight="1024">
diff --git a/app/src/main/res/layout/adapter_select_date.xml b/app/src/main/res/layout/adapter_select_date.xml
deleted file mode 100644
index 9e22615..0000000
--- a/app/src/main/res/layout/adapter_select_date.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/adapter_select_date_child.xml b/app/src/main/res/layout/adapter_select_date_child.xml
deleted file mode 100644
index cb767de..0000000
--- a/app/src/main/res/layout/adapter_select_date_child.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_select_date.xml b/app/src/main/res/layout/dialog_select_date.xml
new file mode 100644
index 0000000..6ed2293
--- /dev/null
+++ b/app/src/main/res/layout/dialog_select_date.xml
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_sign_in.xml b/app/src/main/res/layout/dialog_sign_in.xml
index 1318619..b4e5b2b 100644
--- a/app/src/main/res/layout/dialog_sign_in.xml
+++ b/app/src/main/res/layout/dialog_sign_in.xml
@@ -10,6 +10,7 @@
-
-
-
+
+
+ android:textColor="@color/blue"
+ android:textSize="@dimen/sp_16" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/popu_date.xml b/app/src/main/res/layout/popu_date.xml
deleted file mode 100644
index 3ded37c..0000000
--- a/app/src/main/res/layout/popu_date.xml
+++ /dev/null
@@ -1,209 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 13bc9ef..1416b2c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -28,7 +28,9 @@
+
+
@@ -60,7 +62,12 @@
+
+
+
+
+
@@ -80,7 +87,9 @@
+
+
diff --git a/app/build.gradle b/app/build.gradle
index a4ee6d9..2e1bb36 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -109,7 +109,6 @@
implementation 'com.amap.api:location:5.3.1'
//经纬度逆编码
implementation 'com.amap.api:search:8.1.0'
- implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
//桌面角标
implementation "me.leolin:ShortcutBadger:1.1.22@aar"
}
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
index 4a0b2bb..00f69ae 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java
@@ -16,11 +16,11 @@
import com.casic.dcms.databinding.ActivityCleanRecordsBinding;
import com.casic.dcms.mvvm.model.CleanRecordBean;
import com.casic.dcms.mvvm.vm.ToiletViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
import com.casic.dcms.utils.StringHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -41,14 +41,8 @@
private RecordListAdapter adapter;
private WeakReferenceHandler weakReferenceHandler;
private int pageIndex = 1;
- private String start;
- private String end;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -63,7 +57,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class);
- toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex);
+ }
+
+ @Override
+ protected void onResume() {
+ obtainCleanRecordList("", "");
+ super.onResume();
}
@Override
@@ -71,23 +70,26 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(CleaningRecordsActivity.this, CalendarUtil.obtainLastTwoMonth(), view)
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
-
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
- obtainCleanRecordList();
+ obtainCleanRecordList(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +98,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +106,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
@@ -146,7 +148,7 @@
});
}
- private void obtainCleanRecordList() {
+ private void obtainCleanRecordList(String start, String end) {
toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex);
}
@@ -161,7 +163,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainCleanRecordList();
+ obtainCleanRecordList("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
index aa0d7a9..8741e2f 100644
--- a/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
+++ b/app/src/main/java/com/casic/dcms/mvvm/view/MaintainRecordActivity.java
@@ -14,10 +14,10 @@
import com.casic.dcms.databinding.ActivityMaintainRecordBinding;
import com.casic.dcms.mvvm.model.MaintainRecordBean;
import com.casic.dcms.mvvm.vm.BridgeViewModel;
-import com.casic.dcms.utils.CalendarUtil;
import com.casic.dcms.utils.DialogHelper;
-import com.casic.dcms.widgets.datepicker.DatePopupWindow;
+import com.casic.dcms.widgets.DateSelectDialog;
import com.gyf.immersionbar.ImmersionBar;
+import com.jzxiang.pickerview.data.Type;
import com.pengxh.androidx.lite.base.AndroidxBaseActivity;
import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil;
import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
@@ -37,15 +37,9 @@
private List dataBeans = new ArrayList<>();
private WeakReferenceHandler weakReferenceHandler;
private MaintainRecordAdapter adapter;
- private String start;
- private String end;
private int pageIndex = 1;
private boolean isRefresh = false;
private boolean isLoadMore = false;
- private int startGroup = -1;
- private int endGroup = -1;
- private int startChild = -1;
- private int endChild = -1;
@Override
protected void setupTopBarLayout() {
@@ -60,8 +54,12 @@
protected void initData() {
weakReferenceHandler = new WeakReferenceHandler(callback);
bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class);
+ }
- obtainMaintainRecord();
+ @Override
+ protected void onResume() {
+ obtainMaintainRecord("", "");
+ super.onResume();
}
@Override
@@ -69,25 +67,28 @@
viewBinding.calendarView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- new DatePopupWindow.Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), view) //初始化
- .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态
- .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开
- .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {
+ new DateSelectDialog.Builder()
+ .setContext(context)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(new DateSelectDialog.OnDialogButtonClickListener() {
@Override
- public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) {
- start = startDate;
- end = endDate;
- //点击完成按钮后回调返回方法
- startGroup = startGroupPosition; //开始月份位置
- startChild = startChildPosition; //开始对应月份中日的位置
- endGroup = endGroupPosition; //结束月份位置
- endChild = endChildPosition; //结束对应月份中日的位置
+ public void onConfirmClick(String startDate, String endDate) {
viewBinding.dateView.setText(startDate + "~" + endDate);
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord(startDate, endDate);
}
- }).builder();
+
+ @Override
+ public void onCancelClick() {
+
+ }
+ })
+ .setFragmentManager(getSupportFragmentManager())
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show();
}
});
viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -96,7 +97,7 @@
isRefresh = true;
//刷新之后页码重置
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -104,7 +105,7 @@
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
isLoadMore = true;
pageIndex++;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
@@ -145,7 +146,7 @@
});
}
- private void obtainMaintainRecord() {
+ private void obtainMaintainRecord(String start, String end) {
bridgeViewModel.obtainMaintainRecord(start, end, pageIndex);
}
@@ -160,7 +161,7 @@
@Override
public void onClick(View v) {
pageIndex = 1;
- obtainMaintainRecord();
+ obtainMaintainRecord("", "");
}
});
} else {
diff --git a/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
new file mode 100644
index 0000000..397a389
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/widgets/DateSelectDialog.java
@@ -0,0 +1,220 @@
+package com.casic.dcms.widgets;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import androidx.fragment.app.FragmentManager;
+
+import com.casic.dcms.R;
+import com.casic.dcms.utils.LocaleConstant;
+import com.jzxiang.pickerview.TimePickerDialog;
+import com.jzxiang.pickerview.data.Type;
+import com.jzxiang.pickerview.listener.OnDateSetListener;
+import com.pengxh.androidx.lite.utils.ColorUtil;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
+import com.pengxh.androidx.lite.utils.TimeOrDateUtil;
+import com.pengxh.androidx.lite.widget.EasyToast;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+public class DateSelectDialog extends Dialog {
+
+ private final Context ctx;
+ private final String title;
+ private final String negativeBtn;
+ private final String positiveBtn;
+ private final OnDialogButtonClickListener listener;
+ private final FragmentManager fragmentManager;
+ private final Type type;
+
+ private DateSelectDialog(Builder builder) {
+ super(builder.context);
+ this.ctx = builder.context;
+ this.title = builder.title;
+ this.negativeBtn = builder.negativeBtn;
+ this.positiveBtn = builder.positiveBtn;
+ this.listener = builder.listener;
+ this.fragmentManager = builder.fragmentManager;
+ this.type = builder.type;
+ }
+
+ public static class Builder {
+ private Context context;
+ private String title;
+ private String negativeBtn;
+ private String positiveBtn;
+ private OnDialogButtonClickListener listener;
+ private FragmentManager fragmentManager;
+ private Type type;
+
+ public Builder setContext(Context context) {
+ this.context = context;
+ return this;
+ }
+
+ public Builder setTitle(String title) {
+ this.title = title;
+ return this;
+ }
+
+ public Builder setNegativeButton(String name) {
+ this.negativeBtn = name;
+ return this;
+ }
+
+ public Builder setPositiveButton(String name) {
+ this.positiveBtn = name;
+ return this;
+ }
+
+ public Builder setOnDialogButtonClickListener(OnDialogButtonClickListener listener) {
+ this.listener = listener;
+ return this;
+ }
+
+ public Builder setFragmentManager(FragmentManager fragmentManager) {
+ this.fragmentManager = fragmentManager;
+ return this;
+ }
+
+ public Builder setCalendarType(Type calendarType) {
+ this.type = calendarType;
+ return this;
+ }
+
+ public DateSelectDialog build() {
+ return new DateSelectDialog(this);
+ }
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ DialogLayoutParam.resetParams(this, Gravity.CENTER, R.style.UserDefinedAnimation, 0.85);
+ setContentView(R.layout.dialog_select_date);
+ setCancelable(false);
+ setCanceledOnTouchOutside(false);
+
+
+ if (!TextUtils.isEmpty(title)) {
+ ((TextView) findViewById(R.id.dialogTitleView)).setText(title);
+ }
+
+ EditText startDateView = findViewById(R.id.startDateView);
+ startDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ startDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ EditText endDateView = findViewById(R.id.endDateView);
+ endDateView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ new TimePickerDialog.Builder()
+ .setThemeColor(ColorUtil.convertColor(ctx, R.color.mainThemeColor))
+ .setTitleStringId("请选择起始时间")
+ .setWheelItemTextSize(16)
+ .setCyclic(false)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
+ .setMaxMillseconds(System.currentTimeMillis())
+ .setType(type)
+ .setCallBack(new OnDateSetListener() {
+ @Override
+ public void onDateSet(TimePickerDialog timePickerView, long millSeconds) {
+ String textValue;
+ if (type == Type.ALL) {
+ textValue = TimeOrDateUtil.timestampToCompleteDate(millSeconds);
+ } else {
+ textValue = TimeOrDateUtil.timestampToDate(millSeconds);
+ }
+ endDateView.setText(textValue);
+ }
+ }).build().show(fragmentManager, "DateSelectDialog");
+ }
+ });
+
+ Button dialogCancelButton = findViewById(R.id.dialogCancelButton);
+ dialogCancelButton.setText(negativeBtn);
+ dialogCancelButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ listener.onCancelClick();
+ dismiss();
+ }
+ });
+
+ Button dialogConfirmButton = findViewById(R.id.dialogConfirmButton);
+ dialogConfirmButton.setText(positiveBtn);
+ dialogConfirmButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //判断其实时间和结束时间
+ String startDate = startDateView.getText().toString();
+ String endDate = endDateView.getText().toString();
+ if (isEarlierThanStart(startDate, endDate)) {
+ EasyToast.show(ctx, "结束时间不能早于开始时间");
+ return;
+ }
+ listener.onConfirmClick(startDate, endDate);
+ dismiss();
+ }
+ });
+ }
+
+ public interface OnDialogButtonClickListener {
+ void onConfirmClick(String startDate, String endDate);
+
+ void onCancelClick();
+ }
+
+ /**
+ * 判断时间是否早于当前时间
+ */
+ private boolean isEarlierThanStart(String start, String end) {
+ if (TextUtils.isEmpty(start) || TextUtils.isEmpty(end)) {
+ return false;
+ }
+ SimpleDateFormat dateFormat;
+ if (type == Type.ALL) {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
+ } else {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
+ }
+ try {
+ return dateFormat.parse(start).getTime() > dateFormat.parse(end).getTime();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
index b4e5dcb..c814a2b 100644
--- a/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
+++ b/app/src/main/java/com/casic/dcms/widgets/SignInDialog.java
@@ -2,19 +2,15 @@
import android.app.Dialog;
import android.content.Context;
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
+import android.widget.Button;
import android.widget.TextView;
import com.casic.dcms.R;
-import com.casic.dcms.base.BaseApplication;
import com.casic.dcms.utils.TimeOrDateUtil;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
+import com.pengxh.androidx.lite.utils.DialogLayoutParam;
import java.util.Timer;
import java.util.TimerTask;
@@ -37,16 +33,7 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
- //手动设置dialog宽度
- Window window = getWindow();
- window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
- window.getDecorView().setBackgroundColor(Color.TRANSPARENT);
- WindowManager.LayoutParams params = window.getAttributes();
- params.width = QMUIDisplayHelper.dp2px(BaseApplication.getInstance(), 300);
- params.height = WindowManager.LayoutParams.WRAP_CONTENT;
- window.setAttributes(params);
-
+ DialogLayoutParam.resetParams(this, 0.85);
setContentView(R.layout.dialog_sign_in);
timer = new Timer();
initView();
@@ -69,8 +56,8 @@
if (!TextUtils.isEmpty(address)) {
signInPlaceView.setText(address);
}
- TextView signInView = findViewById(R.id.signInView);
- signInView.setOnClickListener(this);
+ Button signInButton = findViewById(R.id.signInButton);
+ signInButton.setOnClickListener(this);
}
@Override
@@ -84,7 +71,7 @@
@Override
public void onClick(View view) {
int i = view.getId();
- if (i == R.id.signInView) {
+ if (i == R.id.signInButton) {
if (listener != null) {
listener.onViewClick();
}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
deleted file mode 100755
index 122b863..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DateInfo.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import java.util.List;
-
-public class DateInfo {
- private String date;
- private List list;
-
- public String getDate() {
- return date;
- }
-
- public void setDate(String date) {
- this.date = date;
- }
-
- public List getList() {
- return list;
- }
-
- public void setList(List list) {
- this.list = list;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
deleted file mode 100755
index 7fdb45f..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java
+++ /dev/null
@@ -1,647 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.Context;
-import android.graphics.drawable.BitmapDrawable;
-import android.text.TextUtils;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.LinearLayout;
-import android.widget.PopupWindow;
-import android.widget.TextView;
-
-import androidx.annotation.Nullable;
-import androidx.core.app.ActivityCompat;
-import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.casic.dcms.R;
-import com.casic.dcms.utils.CalendarUtil;
-import com.chad.library.adapter.base.BaseQuickAdapter;
-import com.chad.library.adapter.base.BaseViewHolder;
-import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-
-@SuppressLint("SetTextI18n")
-public class DatePopupWindow extends PopupWindow {
- private static final String TAG = "DatePopupWindow";
- private final View rootView;
- private QMUIRoundButton selectDoneButton;
- private RecyclerView dateRecyclerView;
- private TextView hintTextTextView;
- private TextView endWeekView;
- private TextView endDateView;
- private LinearLayout endDateLayout;
- private TextView sumTimeView;
- private TextView startWeekView;
- private TextView startDateView;
-
- private final boolean dayFlag;
- private final Activity activity;
- private Date mSetDate;
- private final String currentDate;
- private final String startDesc;
- private final String endDesc;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private int childPosition = -1;//当天在列表中的子索引
- private DateAdapter mDateAdapter;
- private List mList;
- private final DateOnClickListener mOnClickListener;
-
- private DatePopupWindow(Builder builder) {
- this.activity = builder.activity;
- this.currentDate = builder.date;
- this.startDesc = builder.startDesc;
- this.endDesc = builder.endDesc;
- this.dayFlag = builder.dayFlag;
- this.startGroupPosition = builder.startGroupPosition;
- this.startChildPosition = builder.startChildPosition;
- this.endGroupPosition = builder.endGroupPosition;
- this.endChildPosition = builder.endChildPosition;
- this.mOnClickListener = builder.mOnClickListener;
-
- LayoutInflater inflater = (LayoutInflater) this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- rootView = inflater.inflate(R.layout.popu_date, null);
- this.setContentView(rootView);
- this.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
- this.setAnimationStyle(R.style.dialogWindowAnim);
- this.setFocusable(true);
- this.setBackgroundDrawable(new BitmapDrawable());
- this.setOnDismissListener(new ShareDismissListener());
- backgroundAlpha(activity);
-
- initView();
- setInitSelect();
- create(builder.parentView);
- }
-
- private void backgroundAlpha(Activity context) {
- WindowManager.LayoutParams lp = context.getWindow().getAttributes();
- lp.alpha = 1.0f; //0.0-1.0
- context.getWindow().setAttributes(lp);
- }
-
- private void initView() {
- selectDoneButton = rootView.findViewById(R.id.selectDoneButton);
- dateRecyclerView = rootView.findViewById(R.id.dateRecyclerView);
- hintTextTextView = rootView.findViewById(R.id.hintTextTextView);
- endWeekView = rootView.findViewById(R.id.endWeekView);
- endDateView = rootView.findViewById(R.id.endDateView);
- endDateLayout = rootView.findViewById(R.id.endDateLayout);
- sumTimeView = rootView.findViewById(R.id.sumTimeView);
- startWeekView = rootView.findViewById(R.id.startWeekView);
- startDateView = rootView.findViewById(R.id.startDateView);
- TextView clearButton = rootView.findViewById(R.id.clearButton);
- TextView closeButton = rootView.findViewById(R.id.closeButton);
- TextView startDateDescView = rootView.findViewById(R.id.startDateDescView);
- TextView endDateDescView = rootView.findViewById(R.id.endDateDescView);
- startDateDescView.setText(startDesc + "日期");
- endDateDescView.setText(endDesc + "日期");
- selectDoneButton.setChangeAlphaWhenPress(true);
- selectDoneButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mOnClickListener != null) {
- String startDate = mList.get(startGroupPosition)
- .getList()
- .get(startChildPosition)
- .getDate();
- String endDate = mList.get(endGroupPosition)
- .getList()
- .get(endChildPosition)
- .getDate();
- mOnClickListener.getDate(startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition);
- }
- DatePopupWindow.this.dismiss();
- }
- });
- closeButton.setOnClickListener(v -> DatePopupWindow.this.dismiss());
- clearButton.setOnClickListener(v -> {
- initView();//重置当前view
- setDefaultSelect();//选中初始状态值
- });
- LinearLayoutManager manager = new LinearLayoutManager(activity);
- manager.setOrientation(LinearLayoutManager.VERTICAL);
- mList = new ArrayList<>();
- mDateAdapter = new DateAdapter(mList);
- dateRecyclerView.setLayoutManager(manager);
- dateRecyclerView.setAdapter(mDateAdapter);
- dateRecyclerView.setItemViewCacheSize(200);
- dateRecyclerView.setHasFixedSize(true);
- dateRecyclerView.setNestedScrollingEnabled(false);
- initData();
- }
-
- private void initData() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);//当前日期转date
- try {
- if (currentDate == null) {
- return;
- }
- mSetDate = dateFormat.parse(currentDate);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //初始化日期
- Calendar c = Calendar.getInstance();
- c.setTime(mSetDate);
- int firstM = c.get(Calendar.MONTH) + 1;//获取月份 月份是从0开始,需要+1
- int days = c.get(Calendar.DATE);//日期
- int week = c.get(Calendar.DAY_OF_WEEK);//周几
- //获取当前这个月最大天数
- int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- DateInfo month = new DateInfo();
- List dayList = new ArrayList<>();
- month.setDate(c.get(Calendar.YEAR) + "年" + firstM + "月");
- //当前月第一天是周几
- int w = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < w; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- dayList.add(dayInfo);
- }
- //计算当前月的天数
- for (int i = 1; i <= maxDay; i++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName(i + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + i);
- int c_year = Integer.parseInt(currentDate.split("-")[0]);
- int c_month = Integer.parseInt(currentDate.split("-")[1]);
- int c_day = Integer.parseInt(currentDate.split("-")[2]);
- if (c_year == c.get(Calendar.YEAR) && c_month == (c.get(Calendar.MONTH) + 1) && c_day == i) {
- childPosition = dayList.size();
- }
- //设置日期是否可选择
- dayInfo.setEnable(i >= days);
- dayList.add(dayInfo);
- }
- month.setList(dayList);
- mList.add(month);
- //获取下2个月的数据
- for (int i = 1; i <= 2; i++) {
- //当前月份循环减1
- c.add(Calendar.MONTH, 1);
- DateInfo nextMonth = new DateInfo();
- List nextDayList = new ArrayList<>();
- int maxDays = c.getActualMaximum(Calendar.DAY_OF_MONTH);
- nextMonth.setDate(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月");
- //周几
- int weeks = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1;
- //根据该月的第一天,星期几,填充上个月的空白日期
- for (int t = 0; t < weeks; t++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName("");
- dayInfo.setEnable(false);
- dayInfo.setDate("");
- nextDayList.add(dayInfo);
- }
- //该月的所有日期
- for (int j = 0; j < maxDays; j++) {
- DayInfo dayInfo = new DayInfo();
- dayInfo.setName((j + 1) + "");
- dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + (j + 1));
- dayInfo.setEnable((j + 1) <= days || i != 2);
- nextDayList.add(dayInfo);
- }
- nextMonth.setList(nextDayList);
- mList.add(nextMonth);
- }
- mDateAdapter.updateData();
- }
-
- private void setInitSelect() {
- if (0 <= this.startGroupPosition && this.startGroupPosition < mList.size() &&
- 0 <= this.endGroupPosition && this.endGroupPosition < mList.size()) {
- int maxStartChild = mList.get(this.startGroupPosition).getList().size();
- int maxEndChild = mList.get(this.endGroupPosition).getList().size();
- if (0 <= this.startChildPosition && this.startChildPosition < maxStartChild &&
- 0 <= this.endChildPosition && this.endChildPosition < maxEndChild) {
- setInit();
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- } else {
- setDefaultSelect();//设置根据mDate设定今天和昨天日期
- }
- }
-
- private void setInit() {
- mList.get(this.startGroupPosition).getList().get(this.startChildPosition).setStatus(1);
- mList.get(this.endGroupPosition).getList().get(this.endChildPosition).setStatus(2);
- mDateAdapter.notifyDataSetChanged();
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- dateRecyclerView.scrollToPosition(this.startGroupPosition);
- }
-
- //设置日历标明当前日期的状态
- private void setDefaultSelect() {
- if (childPosition == -1) return;
- String date = mList.get(0).getList().get(childPosition).getDate();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Date curDate = null;
- try {
- curDate = sdf.parse(formatDate(date));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- if (curDate == null) return;
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(curDate);
- calendar.add(Calendar.DATE, 1);
-
- int year = Integer.parseInt(date.split("-")[0]);
- int month = Integer.parseInt(date.split("-")[1]);
- if (year == calendar.get(Calendar.YEAR) && month == calendar.get(Calendar.MONTH) + 1
- && childPosition < mList.get(0).getList().size() - 1) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 0;
- this.endChildPosition = childPosition - 1;
- setInit();
- } else {
- for (int i = 0; i < mList.get(1).getList().size(); i++) {
- if (!TextUtils.isEmpty(mList.get(1).getList().get(i).getDate())) {
- this.startGroupPosition = 0;
- this.startChildPosition = childPosition;
- this.endGroupPosition = 1;
- this.endChildPosition = i;
- setInit();
- break;
- }
- }
- }
- }
-
- /**
- * 设置起始时间和结束时间的选中标识,或者设置不选中
- *
- * @param startDate
- * @param endDate
- * @param status 选中设置为true 设置不选中false
- */
- @SuppressLint("SetTextI18n")
- private void getOffsetDate(String startDate, String endDate, boolean status) {
- //更新开始日期和结束日期的信息和状态
- Calendar sCalendar = CalendarUtil.toDate(startDate);
- Calendar eCalendar = CalendarUtil.toDate(endDate);
- startDateView.setText((sCalendar.get(Calendar.MONTH) + 1) + "月" + sCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(startDate));
- endDateView.setText((eCalendar.get(Calendar.MONTH) + 1) + "月" + eCalendar.get(Calendar.DAY_OF_MONTH) + "日");
- endWeekView.setText("周" + CalendarUtil.getWeekByFormat(endDate));
- int daysOffset = Integer.parseInt(CalendarUtil.getTwoDay(endDate, startDate));
- if (daysOffset < 0) return;
- if (dayFlag) {
- sumTimeView.setText("共" + (daysOffset + 1) + "天");
- } else {
- sumTimeView.setText("共" + daysOffset + "晚");
- }
- //更改结束日期和完成按钮状态
- endDateLayout.setVisibility(View.VISIBLE);
- hintTextTextView.setVisibility(View.GONE);
- initButton("完成", true);
-
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
- Calendar c = Calendar.getInstance();
- DayInfo info = mList.get(startGroupPosition).getList().get(startChildPosition);
- try {
- c.setTime(sdf.parse(info.getDate()));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //根据2个时间的相差天数去循环
- for (int i = 0; i < daysOffset; i++) {
- //下一天(目标天)
- c.add(Calendar.DATE, 1);
- //改天的日期(目标天)
- String d = c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE);
- //循环group列表
- for (int j = 0; j < mList.size(); j++) {
- //获取该月的随机一个dayInfo
- DayInfo dayInfo = mList.get(j).getList().get(mList.get(j).getList().size() - 1);
- boolean isCheck = false;
- //判断该天是否和目标天是否是同一个月
- if (!TextUtils.isEmpty(dayInfo.getDate())
- && Integer.parseInt(dayInfo.getDate().split("-")[0]) == (c.get(Calendar.YEAR))
- && Integer.parseInt(dayInfo.getDate().split("-")[1]) == ((c.get(Calendar.MONTH) + 1))) {
- //是同一个月,则循环该月多有天数
- for (int t = 0; t < mList.get(j).getList().size(); t++) {
- //找到该月的日期与目标日期相同,存在,设置选择标记
- if (mList.get(j).getList().get(t).getDate().equals(d)) {
- mList.get(j).getList().get(t).setSelect(status);
- isCheck = true;
- break;
- }
- }
- }
- if (isCheck) {
- mDateAdapter.notifyItemChanged(j);
- break;
- }
- }
- }
- }
-
- private String formatDate(String date) {
- if (TextUtils.isEmpty(date)) return "";
- return date.split("-")[0] +
- "-" +
- (date.split("-")[1].length() < 2 ? "0" + date.split("-")[1] : date.split("-")[1]) +
- "-" +
- (date.split("-")[2].length() < 2 ? "0" + date.split("-")[2] : date.split("-")[2]);
- }
-
- private void create(View view) {
- this.showAtLocation(view, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
- }
-
- /**
- * return startDate、endDate(格式:2012-12-10)
- * 选中完成后返回开始时间和结束时间
- * return startGroupPosition、startChildPosition、endGroupPosition、endChildPosition
- * 返回选中时间区间的状态标记,监听中接收后在builder中setInitSelect()方法中直接传出入(可用于记录上次选中的状态,用户再点击进入的时候恢复上一次的区间选中状态)
- */
- public interface DateOnClickListener {
- void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition);
- }
-
- public static class Builder {
- private final String date;
- private final Activity activity;
- private final View parentView;
- private String startDesc;
- private String endDesc;
- private boolean dayFlag = true;
- private int startGroupPosition = -1;
- private int endGroupPosition = -1;
- private int startChildPosition = -1;
- private int endChildPosition = -1;
- private DateOnClickListener mOnClickListener = null;
-
- public Builder(Activity activity, Date date, View parentView) {
- this.date = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(date);
- this.activity = activity;
- this.parentView = parentView;
- this.startDesc = "开始";
- this.endDesc = "结束";
- this.dayFlag = true;
- }
-
- public DatePopupWindow builder() {
- return new DatePopupWindow(this);
- }
-
- public Builder setInitSelect(int startGroup, int startChild, int endGroup, int endChild) {
- this.startGroupPosition = startGroup;
- this.startChildPosition = startChild;
- this.endGroupPosition = endGroup;
- this.endChildPosition = endChild;
- return this;
- }
-
- public Builder setInitDay(boolean dayFlag) {
- this.dayFlag = dayFlag;
- if (dayFlag) {
- this.startDesc = "开始";
- this.endDesc = "结束";
- } else {
- this.startDesc = "入住";
- this.endDesc = "离开";
- }
- return this;
- }
-
- public Builder setDateOnClickListener(DateOnClickListener mlListener) {
- mOnClickListener = mlListener;
- return this;
- }
- }
-
- private class DateAdapter extends BaseQuickAdapter {
-
- DateAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date, data);
- }
-
- @Override
- public void onBindViewHolder(BaseViewHolder holder, int positions) {
- super.onBindViewHolder(holder, positions);
- TextView monthTitleView = holder.getView(R.id.monthTitleView);
- monthTitleView.setText(mList.get(positions).getDate());
- }
-
- @Override
- protected void convert(final BaseViewHolder helper, final DateInfo item) {
- RecyclerView monthRecyclerView = helper.getView(R.id.monthRecyclerView);
-
- GridLayoutManager manager = new GridLayoutManager(activity, 7);
- monthRecyclerView.setLayoutManager(manager);
- final TempAdapter groupAdapter = new TempAdapter(item.getList());
- monthRecyclerView.setAdapter(groupAdapter);
- monthRecyclerView.setItemViewCacheSize(200);
- monthRecyclerView.setHasFixedSize(true);
- monthRecyclerView.setNestedScrollingEnabled(false);
- groupAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
- @Override
- public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
- if (!item.getList().get(position).isEnable()) return;
- if (TextUtils.isEmpty(item.getList().get(position).getName())) return;
- if (TextUtils.isEmpty(item.getList().get(position).getDate())) return;
- int status = item.getList().get(position).getStatus();
- if (status == 0 &&
- startGroupPosition == -1 &&
- startChildPosition == -1 &&
- item.getList().get(position).isEnable()) {
- //开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
-
- startDateView.setText(CalendarUtil.FormatDateMD(item.getList().get(position).getDate()));
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- if (status == 0 && endGroupPosition == -1 && endChildPosition == -1) {
- int offset = Integer.parseInt(CalendarUtil.getTwoDay(item.getList().get(position).getDate()
- , mList.get(startGroupPosition).getList().get(startChildPosition).getDate()));
- //判断该离开日期是否比入住时间还小,是则重新设置入住时间。
- if (offset < 0) {
- //刷新上一个开始日期
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- //设置新的入开始日期
- item.getList().get(position).setStatus(1);
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
- adapter.notifyItemChanged(position);
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- return;
- }
- //结束
- item.getList().get(position).setStatus(2);
- adapter.notifyItemChanged(position);
- endGroupPosition = helper.getAdapterPosition();
- endChildPosition = position;
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), true);
- return;
- }
- //重置开始和结束时间,设置开始时间
- if (status == 0 && endGroupPosition != -1 && endChildPosition != -1 && startChildPosition != -1 && startGroupPosition != -1) {
- //重置开始和结束
- mList.get(startGroupPosition).getList().get(startChildPosition).setStatus(0);
- mList.get(endGroupPosition).getList().get(endChildPosition).setStatus(0);
- mDateAdapter.notifyItemChanged(startGroupPosition);
- mDateAdapter.notifyItemChanged(endGroupPosition);
- //重置选择间区的状态
- getOffsetDate(mList.get(startGroupPosition).getList().get(startChildPosition).getDate(),
- mList.get(endGroupPosition).getList().get(endChildPosition).getDate(), false);
- //设置开始
- item.getList().get(position).setStatus(1);
- adapter.notifyItemChanged(position);
- String mStartTime = CalendarUtil.FormatDateMD(item.getList().get(position).getDate());
- startDateView.setText(mStartTime);
- startWeekView.setText("周" + CalendarUtil.getWeekByFormat(item.getList().get(position).getDate()));
-
- startGroupPosition = helper.getAdapterPosition();
- startChildPosition = position;
- endGroupPosition = -1;
- endChildPosition = -1;
- sumTimeView.setText("请选择" + endDesc + "时间");
- initButton("请选择" + endDesc + "时间", false);
- endDateLayout.setVisibility(View.GONE);
- hintTextTextView.setText(endDesc + "日期");
- hintTextTextView.setVisibility(View.VISIBLE);
- }
- }
- });
- }
-
- void updateData() {
- notifyDataSetChanged();
- }
- }
-
- private class TempAdapter extends BaseQuickAdapter {
- TempAdapter(@Nullable List data) {
- super(R.layout.adapter_select_date_child, data);
- }
-
- @Override
- protected void convert(BaseViewHolder helper, DayInfo item) {
- String name = item.getName();
- boolean isSelect = item.isSelect();
- boolean isEnable = item.isEnable();
- int status = item.getStatus();
- helper.setText(R.id.dateView, name);
- //默认
- if (status == 0) {
- if (isSelect) {
- //选中
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else {
- //没选中状态
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.black));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.white));
- }
- } else if (status == 1) {
- //开始
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, startDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- } else if (status == 2) {
- //结束
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.setText(R.id.statusView, endDesc);
- helper.getView(R.id.statusView).setVisibility(View.VISIBLE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- ((TextView) helper.getView(R.id.statusView)).setTextColor(activity.getResources().getColor(R.color.white));
- ((TextView) helper.getView(R.id.dateView)).setTextColor(activity.getResources().getColor(R.color.white));
- (helper.getView(R.id.selectedLayout)).setBackgroundColor(activity.getResources().getColor(R.color.mainThemeColor));
- }
- //设置当前日期前的样式,没选中,并状态为0情况下
- if (!isSelect && status == 0) {
- if (!isEnable) {
- //无效
- TextView textView = helper.getView(R.id.dateDelView);
- if (TextUtils.isEmpty(name)) {
- textView.setVisibility(View.GONE);
- } else {
- textView.setText(name);
- textView.setVisibility(View.VISIBLE);
- }
- textView.setTextColor(activity.getResources().getColor(R.color.mainThemeColor));
- helper.getView(R.id.dateView).setVisibility(View.GONE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- } else {
- helper.getView(R.id.dateView).setVisibility(View.VISIBLE);
- helper.getView(R.id.statusView).setVisibility(View.GONE);
- helper.getView(R.id.dateDelView).setVisibility(View.GONE);
- TextView textView = helper.getView(R.id.dateView);
- textView.setTextColor(activity.getResources().getColor(R.color.black));
- }
- }
- }
- }
-
- private class ShareDismissListener implements OnDismissListener {
- @Override
- public void onDismiss() {
- backgroundAlpha(activity);
- }
- }
-
- private void initButton(String msg, boolean enable) {
- selectDoneButton.setText(msg);
- if (enable) {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.mainThemeColor));
- } else {
- selectDoneButton.setBackgroundColor(ActivityCompat.getColor(activity, R.color.hintTextColor));
- }
- selectDoneButton.setEnabled(enable);
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java
deleted file mode 100755
index 9bffa8e..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DayInfo.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-public class DayInfo {
- private String name;
- private boolean isEnable;
- private String date;
- private int status = 0;
- private boolean select;
-
- boolean isSelect() {
- return select;
- }
-
- void setSelect(boolean select) {
- this.select = select;
- }
-
- int getStatus() {
- return status;
- }
-
- void setStatus(int status) {
- this.status = status;
- }
-
- String getDate() {
- return date;
- }
-
- void setDate(String date) {
- this.date = date;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- boolean isEnable() {
- return isEnable;
- }
-
- void setEnable(boolean enable) {
- isEnable = enable;
- }
-}
diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java
deleted file mode 100755
index 7bc6dbf..0000000
--- a/app/src/main/java/com/casic/dcms/widgets/datepicker/LineTextView.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.casic.dcms.widgets.datepicker;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.util.AttributeSet;
-
-import androidx.annotation.Nullable;
-import androidx.appcompat.widget.AppCompatTextView;
-
-import com.casic.dcms.R;
-import com.qmuiteam.qmui.util.QMUIDisplayHelper;
-
-/**
- * 不可选日期斜线
- */
-public class LineTextView extends AppCompatTextView {
- private Paint mPaint;
- private Context context;
-
- public LineTextView(Context context, @Nullable AttributeSet attrs) {
- super(context, attrs);
- this.context = context;
- mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
- mPaint.setStrokeWidth(QMUIDisplayHelper.dp2px(context, 1));
- mPaint.setColor(getResources().getColor(R.color.punishColor));
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- //斜线坐标
- int startX, startY, endX, endY;
-
- //视图宽高
- int width = getWidth();
- int height = getHeight();
-
- //计算坐标
- startX = width;
- startY = QMUIDisplayHelper.dp2px(context, 2);
- endX = 0;
- endY = height - QMUIDisplayHelper.dp2px(context, 3);
- //画斜线
- canvas.drawLine(startX, startY, endX, endY, mPaint);
- }
-}
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml b/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml
new file mode 100644
index 0000000..dbc008c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_radius_5.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_left_right.xml b/app/src/main/res/drawable/ic_left_right.xml
new file mode 100644
index 0000000..e80b0f5
--- /dev/null
+++ b/app/src/main/res/drawable/ic_left_right.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_sign.xml b/app/src/main/res/drawable/ic_sign.xml
index f914440..8e3e973 100644
--- a/app/src/main/res/drawable/ic_sign.xml
+++ b/app/src/main/res/drawable/ic_sign.xml
@@ -4,9 +4,9 @@
android:viewportWidth="1024"
android:viewportHeight="1024">
diff --git a/app/src/main/res/layout/adapter_select_date.xml b/app/src/main/res/layout/adapter_select_date.xml
deleted file mode 100644
index 9e22615..0000000
--- a/app/src/main/res/layout/adapter_select_date.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/adapter_select_date_child.xml b/app/src/main/res/layout/adapter_select_date_child.xml
deleted file mode 100644
index cb767de..0000000
--- a/app/src/main/res/layout/adapter_select_date_child.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_select_date.xml b/app/src/main/res/layout/dialog_select_date.xml
new file mode 100644
index 0000000..6ed2293
--- /dev/null
+++ b/app/src/main/res/layout/dialog_select_date.xml
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_sign_in.xml b/app/src/main/res/layout/dialog_sign_in.xml
index 1318619..b4e5b2b 100644
--- a/app/src/main/res/layout/dialog_sign_in.xml
+++ b/app/src/main/res/layout/dialog_sign_in.xml
@@ -10,6 +10,7 @@
-
-
-
+
+
+ android:textColor="@color/blue"
+ android:textSize="@dimen/sp_16" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/popu_date.xml b/app/src/main/res/layout/popu_date.xml
deleted file mode 100644
index 3ded37c..0000000
--- a/app/src/main/res/layout/popu_date.xml
+++ /dev/null
@@ -1,209 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index c5e1555..2f8bc91 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -23,14 +23,6 @@
- @drawable/button_white_selector
-
-
+
+