From 5325e22a184b53aadcc5e9552cb1ec54f9c8ad81 Mon Sep 17 00:00:00 2001 From: guoshen <3129367635@qq.com> Date: 星期六, 29 六月 2024 16:33:11 +0800 Subject: [PATCH] 加入了直播、会议功能 --- app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaActivityViewModel.java | 399 + app/src/main/res/layout/activity_family_assets.xml | 14 app/src/main/java/com/application/zhangshi_app_android/data/source/http/ApiService.java | 96 app/src/main/res/layout/item_meeting_sta.xml | 308 + app/src/main/res/layout/pop_operate_read.xml | 72 app/src/main/java/com/application/zhangshi_app_android/ui/function/AnnualHealthStatusActivityViewModel.java | 2 app/src/main/res/layout/fragment_function.xml | 165 app/src/main/java/com/application/zhangshi_app_android/bean/MeetingStaRequestBean.java | 19 app/src/main/res/layout/activity_meeting_sta_detail.xml | 203 app/src/main/java/com/application/zhangshi_app_android/ui/function/WebcastActivity.java | 399 + .idea/misc.xml | 2 app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaDetailActivity.java | 285 .idea/migrations.xml | 10 app/src/main/res/layout/activity_annual_health_status.xml | 473 app/src/main/java/com/application/zhangshi_app_android/bean/WebbackBean.java | 263 app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeFragment.java | 22 app/src/main/res/drawable/ic_function_meeting.png | 0 app/src/main/res/drawable/ic_fuction_back.png | 0 app/src/main/res/layout/item_webback.xml | 344 + app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsDetailActivity.java | 1 app/build.gradle | 1 app/src/main/java/com/application/zhangshi_app_android/ui/function/WebbackDetailActivity.java | 356 + app/src/main/res/layout/activity_webback_detail.xml | 270 app/src/main/java/com/application/zhangshi_app_android/bean/MeetingRequestBean.java | 98 app/src/main/res/layout/layout_drawer.xml | 138 app/src/main/java/com/application/zhangshi_app_android/data/DataRepository.java | 104 app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseActivity.java | 44 app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingActivity.java | 400 + app_base/src/main/java/com/android/app_base/base/viewmodel/BaseViewModel.java | 7 app/src/main/java/com/application/zhangshi_app_android/adapter/MeetingapproveRvAdapter.java | 264 app/src/main/java/com/application/zhangshi_app_android/ui/function/AnnualHealthStatusActivity.java | 3 app/src/main/res/layout/item_meeting.xml | 457 + app/src/main/java/com/application/zhangshi_app_android/adapter/MeetingRvAdapter.java | 264 app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaDetailActivityViewModel.java | 90 app/src/main/res/layout/activity_webcast.xml | 395 + app/src/main/res/layout/activity_webback.xml | 396 + app/src/main/java/com/application/zhangshi_app_android/ui/function/WebcastDetailActivity.java | 360 + .idea/intellij-javadocs-4.0.1.xml | 204 .idea/compiler.xml | 2 .idea/.name | 1 app/src/main/java/com/application/zhangshi_app_android/data/source/http/HttpDataSourceImpl.java | 126 app/src/main/java/com/application/zhangshi_app_android/bean/MeetingBean.java | 440 + app/src/main/java/com/application/zhangshi_app_android/bean/MeetingapproveRequestBean.java | 98 app/src/main/java/com/application/zhangshi_app_android/adapter/databinding/WebbackRvAdapter.java | 263 app/src/main/res/layout/activity_webcast_detail.xml | 270 app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyMemorabiliaRvAdapter.java | 72 app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivityViewModel.java | 35 app/src/main/res/values/themes.xml | 3 app/src/main/java/com/application/zhangshi_app_android/ui/function/WebbackDetailActivityViewModel.java | 342 + app/src/main/java/com/application/zhangshi_app_android/adapter/MeetingStaRvAdapter.java | 260 app/src/main/java/com/application/zhangshi_app_android/ui/function/WebcastDetailActivityViewModel.java | 362 + app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseFragment.java | 3 app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveActivityViewModel.java | 399 + app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingDetailActivityViewModel.java | 362 + app/src/main/res/layout/activity_meeting_sta.xml | 440 + app/src/main/res/layout/item_meeting_approve.xml | 457 + app/src/main/java/com/application/zhangshi_app_android/bean/MeetingStaBean.java | 127 app/src/main/res/layout/pop_operate_approve.xml | 51 app/src/main/res/layout/activity_family_memorabilia.xml | 10 app/src/main/java/com/application/zhangshi_app_android/data/source/HttpDataSource.java | 53 app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveDetailActivityViewModel.java | 430 + app/src/main/res/layout/activity_meeting_approve.xml | 440 + app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingActivityViewModel.java | 401 + app/src/main/res/layout/item_webcast.xml | 344 + app/src/main/res/layout/activity_meeting.xml | 440 + app/src/main/res/layout/activity_certificate_of_honor.xml | 6 app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingDetailActivity.java | 359 + app/src/main/java/com/application/zhangshi_app_android/bean/MeetingapproveBean.java | 58 app/src/main/res/values/attrs.xml | 2 app/src/main/res/layout/activity_meeting_detail.xml | 384 + app/src/main/res/drawable/ic_android_black_24dp.xml | 5 app/src/main/AndroidManifest.xml | 63 app/src/main/res/layout/activity_meeting_approve_detail.xml | 382 + app/src/main/res/values/refs.xml | 2 app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaActivity.java | 389 + .idea/deploymentTargetDropDown.xml | 64 app_base/src/main/java/com/android/app_base/utils/DateTimeConverter.java | 68 app/src/main/java/com/application/zhangshi_app_android/bean/WebcastRequestBean.java | 159 app/src/main/java/com/application/zhangshi_app_android/ui/function/WebbackActivityViewModel.java | 399 + app/src/main/java/com/application/zhangshi_app_android/bean/WebbackRequestBean.java | 162 app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivity.java | 16 app/src/main/java/com/application/zhangshi_app_android/bean/WebcastBean.java | 263 app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveDetailActivity.java | 388 + app/src/main/java/com/application/zhangshi_app_android/ui/function/WebbackActivity.java | 389 + app/src/main/java/com/application/zhangshi_app_android/ui/function/WebcastActivityViewModel.java | 399 + app/src/main/java/com/application/zhangshi_app_android/adapter/WebcastRvAdapter.java | 262 app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveActivity.java | 400 + app/src/main/res/drawable/ic_function_webcast.png | 0 88 files changed, 17,444 insertions(+), 334 deletions(-) diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..f2d4c77 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +zhangshi_app_android \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml index fb7f4a8..b589d56 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="CompilerConfiguration"> - <bytecodeTargetLevel target="11" /> + <bytecodeTargetLevel target="17" /> </component> </project> \ No newline at end of file diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..1e4386a --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="deploymentTargetDropDown"> + <value> + <entry key="AnnualHealthStatusActivity"> + <State /> + </entry> + <entry key="BaseActivity"> + <State /> + </entry> + <entry key="FamilyMemorabiliaActivity"> + <State /> + </entry> + <entry key="MeetingActivity"> + <State> + <targetSelectedWithDropDown> + <Target> + <type value="QUICK_BOOT_TARGET" /> + <deviceKey> + <Key> + <type value="VIRTUAL_DEVICE_PATH" /> + <value value="C:\Users\home\.android\avd\Pixel_7_Pro_API_30.avd" /> + </Key> + </deviceKey> + </Target> + </targetSelectedWithDropDown> + <timeTargetWasSelectedWithDropDown value="2024-04-30T04:26:21.217761800Z" /> + </State> + </entry> + <entry key="TextActivity"> + <State> + <targetSelectedWithDropDown> + <Target> + <type value="QUICK_BOOT_TARGET" /> + <deviceKey> + <Key> + <type value="VIRTUAL_DEVICE_PATH" /> + <value value="C:\Users\home\.android\avd\Pixel_7_Pro_API_30.avd" /> + </Key> + </deviceKey> + </Target> + </targetSelectedWithDropDown> + <timeTargetWasSelectedWithDropDown value="2024-04-01T07:28:32.980539900Z" /> + </State> + </entry> + <entry key="app"> + <State> + <targetSelectedWithDropDown> + <Target> + <type value="QUICK_BOOT_TARGET" /> + <deviceKey> + <Key> + <type value="VIRTUAL_DEVICE_PATH" /> + <value value="C:\Users\home\.android\avd\Pixel_7_Pro_API_30.avd" /> + </Key> + </deviceKey> + </Target> + </targetSelectedWithDropDown> + <timeTargetWasSelectedWithDropDown value="2024-05-07T02:34:49.481997500Z" /> + </State> + </entry> + </value> + </component> +</project> \ No newline at end of file diff --git a/.idea/intellij-javadocs-4.0.1.xml b/.idea/intellij-javadocs-4.0.1.xml new file mode 100644 index 0000000..bd426e3 --- /dev/null +++ b/.idea/intellij-javadocs-4.0.1.xml @@ -0,0 +1,204 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="JavaDocConfiguration"> + <GENERAL> + <MODE>UPDATE</MODE> + <OVERRIDDEN_METHODS>false</OVERRIDDEN_METHODS> + <SPLITTED_CLASS_NAME>true</SPLITTED_CLASS_NAME> + <LEVELS> + <LEVEL>METHOD</LEVEL> + <LEVEL>FIELD</LEVEL> + <LEVEL>TYPE</LEVEL> + </LEVELS> + <VISIBILITIES> + <VISIBILITY>DEFAULT</VISIBILITY> + <VISIBILITY>PROTECTED</VISIBILITY> + <VISIBILITY>PUBLIC</VISIBILITY> + </VISIBILITIES> + </GENERAL> + <TEMPLATES> + <CLASSES> + <CLASS> + <KEY>^.*(public|protected|private)*.+interface\s+\w+.*</KEY> + <VALUE>/**\n + * The interface ${name}.\n +<#if element.typeParameters?has_content> * \n +</#if> +<#list element.typeParameters as typeParameter> + * @param <${typeParameter.name}> the type parameter\n +</#list> + */</VALUE> + </CLASS> + <CLASS> + <KEY>^.*(public|protected|private)*.+enum\s+\w+.*</KEY> + <VALUE>/**\n + * The enum ${name}.\n + */</VALUE> + </CLASS> + <CLASS> + <KEY>^.*(public|protected|private)*.+class\s+\w+.*</KEY> + <VALUE>/**\n + * The type ${name}.\n +<#if element.typeParameters?has_content> * \n +</#if> +<#list element.typeParameters as typeParameter> + * @param <${typeParameter.name}> the type parameter\n +</#list> + */</VALUE> + </CLASS> + <CLASS> + <KEY>.+</KEY> + <VALUE>/**\n + * The type ${name}.\n + */</VALUE> + </CLASS> + </CLASSES> + <CONSTRUCTORS> + <CONSTRUCTOR> + <KEY>.+</KEY> + <VALUE>/**\n + * Instantiates a new ${name}.\n +<#if element.parameterList.parameters?has_content> + *\n +</#if> +<#list element.parameterList.parameters as parameter> + * @param ${parameter.name} the ${paramNames[parameter.name]}\n +</#list> +<#if element.throwsList.referenceElements?has_content> + *\n +</#if> +<#list element.throwsList.referenceElements as exception> + * @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n +</#list> + */</VALUE> + </CONSTRUCTOR> + </CONSTRUCTORS> + <METHODS> + <METHOD> + <KEY>^.*(public|protected|private)*\s*.*(\w(\s*<.+>)*)+\s+get\w+\s*\(.*\).+</KEY> + <VALUE>/**\n + * Gets ${partName}.\n +<#if element.typeParameters?has_content> * \n +</#if> +<#list element.typeParameters as typeParameter> + * @param <${typeParameter.name}> the type parameter\n +</#list> +<#if element.parameterList.parameters?has_content> + *\n +</#if> +<#list element.parameterList.parameters as parameter> + * @param ${parameter.name} the ${paramNames[parameter.name]}\n +</#list> +<#if isNotVoid> + *\n + * @return the ${partName}\n +</#if> +<#if element.throwsList.referenceElements?has_content> + *\n +</#if> +<#list element.throwsList.referenceElements as exception> + * @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n +</#list> + */</VALUE> + </METHOD> + <METHOD> + <KEY>^.*(public|protected|private)*\s*.*(void|\w(\s*<.+>)*)+\s+set\w+\s*\(.*\).+</KEY> + <VALUE>/**\n + * Sets ${partName}.\n +<#if element.typeParameters?has_content> * \n +</#if> +<#list element.typeParameters as typeParameter> + * @param <${typeParameter.name}> the type parameter\n +</#list> +<#if element.parameterList.parameters?has_content> + *\n +</#if> +<#list element.parameterList.parameters as parameter> + * @param ${parameter.name} the ${paramNames[parameter.name]}\n +</#list> +<#if isNotVoid> + *\n + * @return the ${partName}\n +</#if> +<#if element.throwsList.referenceElements?has_content> + *\n +</#if> +<#list element.throwsList.referenceElements as exception> + * @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n +</#list> + */</VALUE> + </METHOD> + <METHOD> + <KEY>^.*((public\s+static)|(static\s+public))\s+void\s+main\s*\(\s*String\s*(\[\s*\]|\.\.\.)\s+\w+\s*\).+</KEY> + <VALUE>/**\n + * The entry point of application.\n + + <#if element.parameterList.parameters?has_content> + *\n +</#if> + * @param ${element.parameterList.parameters[0].name} the input arguments\n +<#if element.throwsList.referenceElements?has_content> + *\n +</#if> +<#list element.throwsList.referenceElements as exception> + * @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n +</#list> + */</VALUE> + </METHOD> + <METHOD> + <KEY>.+</KEY> + <VALUE>/**\n + * ${name}<#if isNotVoid> ${return}</#if>.\n +<#if element.typeParameters?has_content> * \n +</#if> +<#list element.typeParameters as typeParameter> + * @param <${typeParameter.name}> the type parameter\n +</#list> +<#if element.parameterList.parameters?has_content> + *\n +</#if> +<#list element.parameterList.parameters as parameter> + * @param ${parameter.name} the ${paramNames[parameter.name]}\n +</#list> +<#if isNotVoid> + *\n + * @return the ${return}\n +</#if> +<#if element.throwsList.referenceElements?has_content> + *\n +</#if> +<#list element.throwsList.referenceElements as exception> + * @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n +</#list> + */</VALUE> + </METHOD> + </METHODS> + <FIELDS> + <FIELD> + <KEY>^.*(public|protected|private)*.+static.*(\w\s\w)+.+</KEY> + <VALUE>/**\n + * The constant ${element.getName()}.\n + */</VALUE> + </FIELD> + <FIELD> + <KEY>^.*(public|protected|private)*.*(\w\s\w)+.+</KEY> + <VALUE>/**\n + <#if element.parent.isInterface()> + * The constant ${element.getName()}.\n +<#else> + * The ${name}.\n +</#if> */</VALUE> + </FIELD> + <FIELD> + <KEY>.+</KEY> + <VALUE>/**\n + <#if element.parent.isEnum()> + *${name} ${typeName}.\n +<#else> + * The ${name}.\n +</#if>*/</VALUE> + </FIELD> + </FIELDS> + </TEMPLATES> + </component> +</project> \ No newline at end of file diff --git a/.idea/migrations.xml b/.idea/migrations.xml new file mode 100644 index 0000000..f8051a6 --- /dev/null +++ b/.idea/migrations.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectMigrations"> + <option name="MigrateToGradleLocalJavaHome"> + <set> + <option value="$PROJECT_DIR$" /> + </set> + </option> + </component> +</project> \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 5895a79..db40d65 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="ExternalStorageConfigurationManager" enabled="true" /> - <component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="1.8" project-jdk-type="JavaSDK"> + <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK"> <output url="file://$PROJECT_DIR$/build/classes" /> </component> <component name="ProjectType"> diff --git a/app/build.gradle b/app/build.gradle index a6cf7dc..7e88bd9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -70,6 +70,7 @@ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.4.1' implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1' implementation 'com.google.android.material:material:1.8.0' + testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c4debca..9c02791 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,6 +3,9 @@ xmlns:tools="http://schemas.android.com/tools" > <!-- 缃戠粶鐩稿叧 --> + <uses-feature + android:name="android.hardware.camera" + android:required="false" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 缃戠粶鐘舵�� --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- wifi鐘舵�� --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 缃戠粶 --> @@ -109,6 +112,56 @@ android:exported="false" android:screenOrientation="portrait" /> + + <activity + android:name=".ui.function.MeetingActivity" + android:exported="true" + android:screenOrientation="portrait" /> + <activity + android:name=".ui.function.MeetingDetailActivity" + android:exported="true" + android:screenOrientation="portrait" + /> + <activity + android:name=".ui.function.MeetingapproveActivity" + android:exported="false" + android:screenOrientation="portrait" /> + <activity + android:name=".ui.function.MeetingapproveDetailActivity" + android:exported="false" + android:screenOrientation="portrait" + /> + <activity + android:name=".ui.function.MeetingStaActivity" + android:exported="false" + android:screenOrientation="portrait" /> + + <activity + android:name=".ui.function.MeetingStaDetailActivity" + android:exported="false" + android:screenOrientation="portrait" /> + + + <activity android:name=".ui.function.WebcastActivity" + android:exported="false" + android:screenOrientation="portrait" + /> + + <activity android:name=".ui.function.WebcastDetailActivity" + android:exported="false" + android:screenOrientation="portrait" + /> + + <activity android:name=".ui.function.WebbackActivity" + android:exported="false" + android:screenOrientation="portrait" + /> + + <activity android:name=".ui.function.WebbackDetailActivity" + android:exported="false" + android:screenOrientation="portrait" + /> + <activity android:name=".ui.function.FamilyAssetsActivity" android:exported="false" @@ -117,6 +170,12 @@ android:name=".ui.function.FamilyAssetsDetailActivity" android:exported="false" android:screenOrientation="portrait" /> + + + + + + <activity android:name=".ui.function.HomeDevicesActivity" android:exported="false" @@ -179,7 +238,7 @@ android:screenOrientation="portrait" /> <activity android:name=".ui.function.CertificateOfHonorActivity" - android:exported="false" + android:exported="true" android:screenOrientation="portrait" /> <activity android:name=".ui.function.CertificateOfHonorDetailActivity" @@ -207,7 +266,7 @@ android:screenOrientation="portrait" /> <activity android:name=".ui.function.AnnualHealthStatusActivity" - android:exported="false" + android:exported="true" android:screenOrientation="portrait" /> <activity android:name=".ui.function.AnnualHealthStatusDetailActivity" diff --git a/app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyMemorabiliaRvAdapter.java b/app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyMemorabiliaRvAdapter.java index cbcba39..fe81aff 100644 --- a/app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyMemorabiliaRvAdapter.java +++ b/app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyMemorabiliaRvAdapter.java @@ -4,8 +4,6 @@ import android.content.Intent; import android.util.TypedValue; import android.view.View; -import android.view.animation.Animation; -import android.view.animation.Transformation; import android.widget.CompoundButton; import android.widget.FrameLayout; @@ -19,10 +17,9 @@ import com.android.app_base.utils.Utils; import com.application.zhangshi_app_android.R; import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean; -import com.application.zhangshi_app_android.bean.TourismBean; import com.application.zhangshi_app_android.databinding.ItemFamilyMemorabiliaBinding; -import com.application.zhangshi_app_android.ui.function.FamilyMemorabiliaDetailActivity; import com.application.zhangshi_app_android.ui.function.FamilyMemorabiliaActivityViewModel; +import com.application.zhangshi_app_android.ui.function.FamilyMemorabiliaDetailActivity; import java.util.ArrayList; import java.util.HashMap; @@ -40,46 +37,67 @@ private final Map<FamilyMemorabiliaBean, Boolean> expendMap = new HashMap<>(); private boolean isCheckable; + + //鎺ュ彈涓�涓笂涓嬫枃鍙傛暟锛岀敤浜庡垵濮嬪寲鍑芥暟 public FamilyMemorabiliaRvAdapter(Context context) { super(context); } + //闄や簡涓婁笅鏂囧弬鏁板锛岃繕鎺ュ彈涓�涓獀iew Model瀵硅薄浣滀负鍙傛暟锛岀敤浜庝笌瑙嗗浘妯″瀷杩涜浜や簰鍜屾暟鎹粦瀹� public FamilyMemorabiliaRvAdapter(Context context, FamilyMemorabiliaActivityViewModel viewModel) { super(context); this.viewModel = viewModel; } + + //缁戝畾item瑙嗗浘 @Override protected int getLayoutId() { return R.layout.item_family_memorabilia; } + //鍒涘缓瑙嗗浘鎸佹湁鑰呭璞″苟杩斿洖锛岀敤浜庣粦瀹氳鍥惧拰鏁版嵁 @Override protected MyViewHolder getViewHolder(ItemFamilyMemorabiliaBinding itemBind,int viewType) { return new MyViewHolder(itemBind); } + + //onBind() @Override protected void onBind(MyViewHolder holder, int position) { + //灏嗗綋鍓嶄綅缃殑鏁版嵁缁戝畾鍒拌鍥炬寔鏈夎�呬腑鐨勫竷灞�缁戝畾瀵硅薄涓婏紝浠ヤ究鏄剧ず鐩稿簲鐨勫搴邯蹇靛搧鏁版嵁銆� holder.getBinding().setBean(mDataList.get(position)); - //鏍规嵁涓婚閫夋嫨瀵瑰簲鍗$墖鑳屾櫙鑹� + + //typeValue1 瀛樺偍瑙f瀽鍚庣殑灞炴�у�� TypedValue typedValue1 = new TypedValue(); + + // mContext.getTheme().resolveAttribute(R.attr.cardBackgroundColorFirst, typedValue1, true); TypedValue typedValue2 = new TypedValue(); mContext.getTheme().resolveAttribute(R.attr.cardBackgroundColorSecond, typedValue2, true); + //position涓哄鏁扮殑鏃跺�欙紝鐢╰ypedValue1浣滀负鑳屾櫙鑹诧紝鍋舵暟鏃剁敤typedValue2銆� if (position % 2 != 0){ holder.getBinding().cardView.setCardBackgroundColor(typedValue1.data); }else { holder.getBinding().cardView.setCardBackgroundColor(typedValue2.data); } + + //expendMap 鏄竴涓敤浜庡瓨鍌ㄥ垪琛ㄩ」灞曞紑鐘舵�佺殑 Map锛� + // 杩欓噷鐢ㄦ潵妫�鏌ュ綋鍓嶄綅缃搴旂殑鏁版嵁鏄惁宸茬粡鍦� Map 涓瓨鍦紝 + // 濡傛灉涓嶅瓨鍦紝鍒欏皢鍏舵坊鍔犲埌 Map 涓紝骞惰缃叾灞曞紑鐘舵�佷负 false銆� if (!expendMap.containsKey(getItem(position))){ expendMap.put(getItem(position),false); } + + + //鏍规嵁涓婚閫夋嫨瀵瑰簲鍥炬爣 TypedValue unfoldIcon = new TypedValue(); mContext.getTheme().resolveAttribute(R.attr.icUnfold, unfoldIcon, true); TypedValue foldIcon = new TypedValue(); mContext.getTheme().resolveAttribute(R.attr.icFold, foldIcon, true); + if (Boolean.TRUE.equals(expendMap.get(getItem(position)))){ holder.getBinding().ivFold.setBackgroundResource(unfoldIcon.resourceId); holder.getBinding().cardView.post(() -> { @@ -93,6 +111,9 @@ holder.getBinding().cardView.requestLayout(); }); } + + + //杩欐浠g爜鐨勪綔鐢ㄦ槸鏍规嵁鏉′欢鏄剧ず鎴栭殣钘忓閫夋锛屽苟鍦ㄧ敤鎴烽�夋嫨鍒楄〃椤规椂鏇存柊鐩稿簲鐨� LiveData 鏁版嵁浠ュ強鐣岄潰涓婄殑澶嶉�夋鐘舵�� if (isCheckable){ holder.getBinding().ivFlower.setVisibility(View.GONE); if (mDataList.get(position).getOwnData() == 1){ @@ -100,6 +121,8 @@ }else { holder.getBinding().checkbox.setVisibility(View.GONE); } + + holder.getBinding().checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { @@ -126,43 +149,71 @@ holder.getBinding().ivFlower.setVisibility(View.GONE); } } + + + + holder.getBinding().layoutTitle.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { + //濡傛灉expendMap 涓瓨鍌ㄧ殑褰撳墠浣嶇疆鐨勭姸鎬佹槸 true锛岃〃绀哄綋鍓嶈鍥炬槸灞曞紑鐘舵�侊紝闇�瑕佹墽琛屾姌鍙犳搷浣滐細 if (Boolean.TRUE.equals(expendMap.get(getItem(position)))){ + + //鑾峰彇鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴� int initialHeight = holder.getBinding().cardView.getMeasuredHeight(); + //鑾峰彇鏍囬甯冨眬鐨勯珮搴︺�� int collapsedHeight = holder.getBinding().layoutTitle.getMeasuredHeight(); + + //璋冪敤 Utils.pullCollapse() 鏂规硶鎵ц鎶樺彔鍔ㄧ敾锛屽苟浼犲叆鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴﹀拰鏍囬甯冨眬鐨勯珮搴︺�� Utils.pullCollapse(holder.getBinding().cardView,initialHeight,collapsedHeight); holder.getBinding().ivFold.setBackgroundResource(foldIcon.resourceId); + + //灏嗙姸鎬佽缃负鎶樺彔 expendMap.put(getItem(position),false); }else{ + //鑾峰彇鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴� initialHeight銆� final int initialHeight = holder.getBinding().cardView.getMeasuredHeight(); + //娴嬮噺鍗$墖瑙嗗浘鐨勭洰鏍囬珮搴� targetHeight holder.getBinding().cardView.measure(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT); int targetHeight = holder.getBinding().cardView.getMeasuredHeight(); + //璋冪敤 Utils.dropExpand() 鏂规硶鎵ц灞曞紑鍔ㄧ敾锛屽苟浼犲叆鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴﹀拰鐩爣楂樺害銆� Utils.dropExpand(holder.getBinding().cardView,initialHeight,targetHeight); + //鏇存柊鎶樺彔鍥炬爣涓哄睍寮�鐘舵�併�� holder.getBinding().ivFold.setBackgroundResource(unfoldIcon.resourceId); expendMap.put(getItem(position),true); } } }); + + //璁剧疆鐩戝惉浜嬩欢锛屽綋鐢ㄦ埛鐐瑰嚮holder.itemView鏃讹紝鎵ц涓嬮潰鎿嶄綔 holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + //鍒涘缓涓�涓柊鐨� Intent 瀵硅薄锛岃瀵硅薄鐢ㄤ簬鍚姩 FamilyMemorabiliaDetailActivity 娲诲姩銆� + + AppManager.getAppManager().startActivity( new Intent(getRecyclerView().getContext(), FamilyMemorabiliaDetailActivity.class) .putExtra(BaseConfig.EXTRA_TYPE,0) .putExtra("bean",mDataList.get(position))); } }); + + + //璁剧疆鐩戝惉浜嬩欢锛屽綋鐢ㄦ埛鐐瑰嚮layout涓搴旂殑layout_modify鏃讹紝鎵ц涓嬮潰鎿嶄綔 holder.getBinding().layoutModify.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + //鍒涘缓涓�涓柊鐨� Intent 瀵硅薄锛岃瀵硅薄鐢ㄤ簬鍚姩 FamilyMemorabiliaDetailActivity 娲诲姩銆� AppManager.getAppManager().startActivity( new Intent(getRecyclerView().getContext(), FamilyMemorabiliaDetailActivity.class) .putExtra(BaseConfig.EXTRA_TYPE,2) .putExtra("bean",mDataList.get(position))); } }); + + + //璁剧疆鐩戝惉浜嬩欢锛屽綋鐢ㄦ埛鐐瑰嚮layout涓搴旂殑layout_delete鏃讹紝鎵ц涓嬮潰鎿嶄綔 holder.getBinding().layoutDelete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -180,12 +231,23 @@ .show(); } }); + + + //ElectronicFileAdapter 閫傞厤鍣ㄦ潵鏄剧ず鐢靛瓙鏂囦欢鍒楄〃锛屽苟灏嗗叾缁戝畾鍒� 瑙嗗浘layout涓殑rv_image ElectronicFileAdapter adapter = new ElectronicFileAdapter(mContext); adapter.setData(Utils.splitString2List(mDataList.get(position).getUrl(),",")); holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3)); holder.getBinding().rvImage.setAdapter(adapter); } + + + + + + + + //notifyItemRangeChanged(0, getItemCount()) 鏂规硶锛岄�氱煡閫傞厤鍣ㄨ寖鍥村唴鐨勯」宸叉洿鏀癸紝浠ヤ究鍦� RecyclerView 涓洿鏂扮浉搴旂殑瑙嗗浘銆� public void setCheckable(boolean b) { isCheckable = b; notifyItemRangeChanged(0,getItemCount()); diff --git a/app/src/main/java/com/application/zhangshi_app_android/adapter/MeetingRvAdapter.java b/app/src/main/java/com/application/zhangshi_app_android/adapter/MeetingRvAdapter.java new file mode 100644 index 0000000..fc5078c --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/adapter/MeetingRvAdapter.java @@ -0,0 +1,264 @@ +package com.application.zhangshi_app_android.adapter; + +import android.content.Context; +import android.content.Intent; +import android.util.TypedValue; +import android.view.View; +import android.widget.CompoundButton; +import android.widget.FrameLayout; + +import androidx.recyclerview.widget.GridLayoutManager; + +import com.android.app_base.base.BaseConfig; +import com.android.app_base.base.adapter.BaseRVAdapter; +import com.android.app_base.base.dialog.BaseDialog; +import com.android.app_base.base.dialog.UIDialog; +import com.android.app_base.manager.AppManager; +import com.android.app_base.utils.Utils; +import com.application.zhangshi_app_android.R; +import com.application.zhangshi_app_android.bean.MeetingBean; +import com.application.zhangshi_app_android.databinding.ItemMeetingBinding; +import com.application.zhangshi_app_android.ui.function.MeetingActivityViewModel; +import com.application.zhangshi_app_android.ui.function.MeetingDetailActivity; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author Ljj + * @date 2023.03.18. 10:27 + * @desc 瀹跺ぇ浜嬭 recyclerView 鐨� adapter + */ +public class MeetingRvAdapter extends BaseRVAdapter<MeetingBean, ItemMeetingBinding, MeetingRvAdapter.MyViewHolder> { + + private MeetingActivityViewModel viewModel; + private final Map<MeetingBean, Boolean> expendMap = new HashMap<>(); + private boolean isCheckable; + + + //鎺ュ彈涓�涓笂涓嬫枃鍙傛暟锛岀敤浜庡垵濮嬪寲鍑芥暟 + public MeetingRvAdapter(Context context) { + super(context); + } + + //闄や簡涓婁笅鏂囧弬鏁板锛岃繕鎺ュ彈涓�涓獀iew Model瀵硅薄浣滀负鍙傛暟锛岀敤浜庝笌瑙嗗浘妯″瀷杩涜浜や簰鍜屾暟鎹粦瀹� + public MeetingRvAdapter(Context context, MeetingActivityViewModel viewModel) { + super(context); + this.viewModel = viewModel; + } + + + //缁戝畾item瑙嗗浘 + @Override + protected int getLayoutId() { + return R.layout.item_meeting; + } + + //鍒涘缓瑙嗗浘鎸佹湁鑰呭璞″苟杩斿洖锛岀敤浜庣粦瀹氳鍥惧拰鏁版嵁 + @Override + protected MyViewHolder getViewHolder(ItemMeetingBinding itemBind, int viewType) { + return new MyViewHolder(itemBind); + } + + + //onBind() + @Override + protected void onBind(MyViewHolder holder, int position) { + //灏嗗綋鍓嶄綅缃殑鏁版嵁缁戝畾鍒拌鍥炬寔鏈夎�呬腑鐨勫竷灞�缁戝畾瀵硅薄涓婏紝浠ヤ究鏄剧ず鐩稿簲鐨勫搴邯蹇靛搧鏁版嵁銆� + holder.getBinding().setBean(mDataList.get(position)); + + //typeValue1 瀛樺偍瑙f瀽鍚庣殑灞炴�у�� + TypedValue typedValue1 = new TypedValue(); + + // + mContext.getTheme().resolveAttribute(R.attr.cardBackgroundColorFirst, typedValue1, true); + TypedValue typedValue2 = new TypedValue(); + mContext.getTheme().resolveAttribute(R.attr.cardBackgroundColorSecond, typedValue2, true); + //position涓哄鏁扮殑鏃跺�欙紝鐢╰ypedValue1浣滀负鑳屾櫙鑹诧紝鍋舵暟鏃剁敤typedValue2銆� + if (position % 2 != 0){ + holder.getBinding().cardView.setCardBackgroundColor(typedValue1.data); + }else { + holder.getBinding().cardView.setCardBackgroundColor(typedValue2.data); + } + + //expendMap 鏄竴涓敤浜庡瓨鍌ㄥ垪琛ㄩ」灞曞紑鐘舵�佺殑 Map锛� + // 杩欓噷鐢ㄦ潵妫�鏌ュ綋鍓嶄綅缃搴旂殑鏁版嵁鏄惁宸茬粡鍦� Map 涓瓨鍦紝 + // 濡傛灉涓嶅瓨鍦紝鍒欏皢鍏舵坊鍔犲埌 Map 涓紝骞惰缃叾灞曞紑鐘舵�佷负 false銆� + if (!expendMap.containsKey(getItem(position))){ + expendMap.put(getItem(position),false); + } + + + + //鏍规嵁涓婚閫夋嫨瀵瑰簲鍥炬爣 + TypedValue unfoldIcon = new TypedValue(); + mContext.getTheme().resolveAttribute(R.attr.icUnfold, unfoldIcon, true); + TypedValue foldIcon = new TypedValue(); + mContext.getTheme().resolveAttribute(R.attr.icFold, foldIcon, true); + + if (Boolean.TRUE.equals(expendMap.get(getItem(position)))){ + holder.getBinding().ivFold.setBackgroundResource(unfoldIcon.resourceId); + holder.getBinding().cardView.post(() -> { + holder.getBinding().cardView.getLayoutParams().height = FrameLayout.LayoutParams.WRAP_CONTENT; + holder.getBinding().cardView.requestLayout(); + }); + }else{ + holder.getBinding().ivFold.setBackgroundResource(foldIcon.resourceId); + holder.getBinding().cardView.post(() -> { + holder.getBinding().cardView.getLayoutParams().height = holder.getBinding().layoutTitle.getMeasuredHeight(); + holder.getBinding().cardView.requestLayout(); + }); + } + + + //杩欐浠g爜鐨勪綔鐢ㄦ槸鏍规嵁鏉′欢鏄剧ず鎴栭殣钘忓閫夋锛屽苟鍦ㄧ敤鎴烽�夋嫨鍒楄〃椤规椂鏇存柊鐩稿簲鐨� LiveData 鏁版嵁浠ュ強鐣岄潰涓婄殑澶嶉�夋鐘舵�� + if (isCheckable){ + holder.getBinding().ivFlower.setVisibility(View.GONE); + if (mDataList.get(position).getOwnData() == 1){ + holder.getBinding().checkbox.setVisibility(View.VISIBLE); + }else { + holder.getBinding().checkbox.setVisibility(View.GONE); + } + + + holder.getBinding().checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + if (viewModel.getCheckListLiveData().getValue() == null){ + viewModel.getCheckListLiveData().setValue(new ArrayList<>()); + } + List<MeetingBean> list = new ArrayList<>(viewModel.getCheckListLiveData().getValue()); + if (isChecked){ + if (!list.contains(mDataList.get(position))){ + list.add(mDataList.get(position)); + } + }else{ + list.remove(mDataList.get(position)); + } + viewModel.getCheckListLiveData().setValue(list); + } + }); + holder.getBinding().checkbox.setChecked(viewModel.getCheckListLiveData().getValue().contains(mDataList.get(position))); + }else{ + holder.getBinding().checkbox.setVisibility(View.GONE); + if (mDataList.get(position).getOwnData() == 1){ + holder.getBinding().ivFlower.setVisibility(View.VISIBLE); + }else { + holder.getBinding().ivFlower.setVisibility(View.GONE); + } + } + + + + + holder.getBinding().layoutTitle.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //濡傛灉expendMap 涓瓨鍌ㄧ殑褰撳墠浣嶇疆鐨勭姸鎬佹槸 true锛岃〃绀哄綋鍓嶈鍥炬槸灞曞紑鐘舵�侊紝闇�瑕佹墽琛屾姌鍙犳搷浣滐細 + if (Boolean.TRUE.equals(expendMap.get(getItem(position)))){ + + //鑾峰彇鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴� + int initialHeight = holder.getBinding().cardView.getMeasuredHeight(); + //鑾峰彇鏍囬甯冨眬鐨勯珮搴︺�� + int collapsedHeight = holder.getBinding().layoutTitle.getMeasuredHeight(); + + //璋冪敤 Utils.pullCollapse() 鏂规硶鎵ц鎶樺彔鍔ㄧ敾锛屽苟浼犲叆鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴﹀拰鏍囬甯冨眬鐨勯珮搴︺�� + Utils.pullCollapse(holder.getBinding().cardView,initialHeight,collapsedHeight); + holder.getBinding().ivFold.setBackgroundResource(foldIcon.resourceId); + + //灏嗙姸鎬佽缃负鎶樺彔 + expendMap.put(getItem(position),false); + }else{ + //鑾峰彇鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴� initialHeight銆� + final int initialHeight = holder.getBinding().cardView.getMeasuredHeight(); + //娴嬮噺鍗$墖瑙嗗浘鐨勭洰鏍囬珮搴� targetHeight + holder.getBinding().cardView.measure(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT); + int targetHeight = holder.getBinding().cardView.getMeasuredHeight(); + //璋冪敤 Utils.dropExpand() 鏂规硶鎵ц灞曞紑鍔ㄧ敾锛屽苟浼犲叆鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴﹀拰鐩爣楂樺害銆� + Utils.dropExpand(holder.getBinding().cardView,initialHeight,targetHeight); + //鏇存柊鎶樺彔鍥炬爣涓哄睍寮�鐘舵�併�� + holder.getBinding().ivFold.setBackgroundResource(unfoldIcon.resourceId); + expendMap.put(getItem(position),true); + } + } + }); + + //璁剧疆鐩戝惉浜嬩欢锛屽綋鐢ㄦ埛鐐瑰嚮holder.itemView鏃讹紝鎵ц涓嬮潰鎿嶄綔 + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + //鍒涘缓涓�涓柊鐨� Intent 瀵硅薄锛岃瀵硅薄鐢ㄤ簬鍚姩 MeetingDetailActivity 娲诲姩銆� + + + AppManager.getAppManager().startActivity( + new Intent(getRecyclerView().getContext(), MeetingDetailActivity.class) + .putExtra(BaseConfig.EXTRA_TYPE,0) + .putExtra("bean",mDataList.get(position))); + } + }); + + + //璁剧疆鐩戝惉浜嬩欢锛屽綋鐢ㄦ埛鐐瑰嚮layout涓搴旂殑layout_modify鏃讹紝鎵ц涓嬮潰鎿嶄綔 + holder.getBinding().layoutModify.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + //鍒涘缓涓�涓柊鐨� Intent 瀵硅薄锛岃瀵硅薄鐢ㄤ簬鍚姩 FamilyMemorabiliaDetailActivity 娲诲姩銆� + AppManager.getAppManager().startActivity( + new Intent(getRecyclerView().getContext(), MeetingDetailActivity.class) + .putExtra(BaseConfig.EXTRA_TYPE,2) + .putExtra("bean",mDataList.get(position))); + } + }); + + + //璁剧疆鐩戝惉浜嬩欢锛屽綋鐢ㄦ埛鐐瑰嚮layout涓搴旂殑layout_delete鏃讹紝鎵ц涓嬮潰鎿嶄綔 + holder.getBinding().layoutDelete.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + new UIDialog.Builder(mContext) + .setTitle("鎮ㄧ‘瀹氳鍒犻櫎璇ラ」鐩悧") + .setContent("椤圭洰鍒犻櫎鍚庡皢鏃犳硶鎭㈠") + .setConfirm("纭畾") + .setCancel("鍙栨秷") + .setListener(new UIDialog.OnListener() { + @Override + public void onConfirm(BaseDialog dialog) { + viewModel.deleteItem(mDataList.get(position)); + } + }) + .show(); + } + }); + + + //ElectronicFileAdapter 閫傞厤鍣ㄦ潵鏄剧ず鐢靛瓙鏂囦欢鍒楄〃锛屽苟灏嗗叾缁戝畾鍒� 瑙嗗浘layout涓殑rv_image + ElectronicFileAdapter adapter = new ElectronicFileAdapter(mContext); + adapter.setData(Utils.splitString2List(mDataList.get(position).getUrl(),",")); + holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3)); + holder.getBinding().rvImage.setAdapter(adapter); + } + + + + + + + + + //notifyItemRangeChanged(0, getItemCount()) 鏂规硶锛岄�氱煡閫傞厤鍣ㄨ寖鍥村唴鐨勯」宸叉洿鏀癸紝浠ヤ究鍦� RecyclerView 涓洿鏂扮浉搴旂殑瑙嗗浘銆� + public void setCheckable(boolean b) { + isCheckable = b; + notifyItemRangeChanged(0,getItemCount()); + } + + + public static class MyViewHolder extends BaseViewHolder<ItemMeetingBinding>{ + public MyViewHolder(ItemMeetingBinding binding) { + super(binding); + } + } + +} + diff --git a/app/src/main/java/com/application/zhangshi_app_android/adapter/MeetingStaRvAdapter.java b/app/src/main/java/com/application/zhangshi_app_android/adapter/MeetingStaRvAdapter.java new file mode 100644 index 0000000..84a2d08 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/adapter/MeetingStaRvAdapter.java @@ -0,0 +1,260 @@ +package com.application.zhangshi_app_android.adapter; + +import android.content.Context; +import android.content.Intent; +import android.util.TypedValue; +import android.view.View; +import android.widget.CompoundButton; +import android.widget.FrameLayout; + +import com.android.app_base.base.BaseConfig; +import com.android.app_base.base.adapter.BaseRVAdapter; +import com.android.app_base.manager.AppManager; +import com.android.app_base.utils.Utils; +import com.application.zhangshi_app_android.R; +import com.application.zhangshi_app_android.bean.MeetingStaBean; +import com.application.zhangshi_app_android.databinding.ItemMeetingStaBinding; +import com.application.zhangshi_app_android.ui.function.MeetingStaActivityViewModel; +import com.application.zhangshi_app_android.ui.function.MeetingStaDetailActivity; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author Ljj + * @date 2023.03.18. 10:27 + * @desc 瀹跺ぇ浜嬭 recyclerView 鐨� adapter + */ +public class MeetingStaRvAdapter extends BaseRVAdapter<MeetingStaBean, ItemMeetingStaBinding, MeetingStaRvAdapter.MyViewHolder> { + + private MeetingStaActivityViewModel viewModel; + private final Map<MeetingStaBean, Boolean> expendMap = new HashMap<>(); + private boolean isCheckable; + + + //鎺ュ彈涓�涓笂涓嬫枃鍙傛暟锛岀敤浜庡垵濮嬪寲鍑芥暟 + public MeetingStaRvAdapter(Context context) { + super(context); + } + + //闄や簡涓婁笅鏂囧弬鏁板锛岃繕鎺ュ彈涓�涓獀iew Model瀵硅薄浣滀负鍙傛暟锛岀敤浜庝笌瑙嗗浘妯″瀷杩涜浜や簰鍜屾暟鎹粦瀹� + public MeetingStaRvAdapter(Context context, MeetingStaActivityViewModel viewModel) { + super(context); + this.viewModel = viewModel; + } + + + //缁戝畾item瑙嗗浘 + @Override + protected int getLayoutId() { + return R.layout.item_meeting_sta; + } + + //鍒涘缓瑙嗗浘鎸佹湁鑰呭璞″苟杩斿洖锛岀敤浜庣粦瀹氳鍥惧拰鏁版嵁 + @Override + protected MyViewHolder getViewHolder(ItemMeetingStaBinding itemBind, int viewType) { + return new MyViewHolder(itemBind); + } + + + //onBind() + @Override + protected void onBind(MyViewHolder holder, int position) { + //灏嗗綋鍓嶄綅缃殑鏁版嵁缁戝畾鍒拌鍥炬寔鏈夎�呬腑鐨勫竷灞�缁戝畾瀵硅薄涓婏紝浠ヤ究鏄剧ず鐩稿簲鐨勫搴邯蹇靛搧鏁版嵁銆� + holder.getBinding().setBean(mDataList.get(position)); + + //typeValue1 瀛樺偍瑙f瀽鍚庣殑灞炴�у�� + TypedValue typedValue1 = new TypedValue(); + + // + mContext.getTheme().resolveAttribute(R.attr.cardBackgroundColorFirst, typedValue1, true); + TypedValue typedValue2 = new TypedValue(); + mContext.getTheme().resolveAttribute(R.attr.cardBackgroundColorSecond, typedValue2, true); + //position涓哄鏁扮殑鏃跺�欙紝鐢╰ypedValue1浣滀负鑳屾櫙鑹诧紝鍋舵暟鏃剁敤typedValue2銆� + if (position % 2 != 0){ + holder.getBinding().cardView.setCardBackgroundColor(typedValue1.data); + }else { + holder.getBinding().cardView.setCardBackgroundColor(typedValue2.data); + } + + //expendMap 鏄竴涓敤浜庡瓨鍌ㄥ垪琛ㄩ」灞曞紑鐘舵�佺殑 Map锛� + // 杩欓噷鐢ㄦ潵妫�鏌ュ綋鍓嶄綅缃搴旂殑鏁版嵁鏄惁宸茬粡鍦� Map 涓瓨鍦紝 + // 濡傛灉涓嶅瓨鍦紝鍒欏皢鍏舵坊鍔犲埌 Map 涓紝骞惰缃叾灞曞紑鐘舵�佷负 false銆� + if (!expendMap.containsKey(getItem(position))){ + expendMap.put(getItem(position),false); + } + + + + //鏍规嵁涓婚閫夋嫨瀵瑰簲鍥炬爣 + TypedValue unfoldIcon = new TypedValue(); + mContext.getTheme().resolveAttribute(R.attr.icUnfold, unfoldIcon, true); + TypedValue foldIcon = new TypedValue(); + mContext.getTheme().resolveAttribute(R.attr.icFold, foldIcon, true); + + if (Boolean.TRUE.equals(expendMap.get(getItem(position)))){ + holder.getBinding().ivFold.setBackgroundResource(unfoldIcon.resourceId); + holder.getBinding().cardView.post(() -> { + holder.getBinding().cardView.getLayoutParams().height = FrameLayout.LayoutParams.WRAP_CONTENT; + holder.getBinding().cardView.requestLayout(); + }); + }else{ + holder.getBinding().ivFold.setBackgroundResource(foldIcon.resourceId); + holder.getBinding().cardView.post(() -> { + holder.getBinding().cardView.getLayoutParams().height = holder.getBinding().layoutTitle.getMeasuredHeight(); + holder.getBinding().cardView.requestLayout(); + }); + } + + + //杩欐浠g爜鐨勪綔鐢ㄦ槸鏍规嵁鏉′欢鏄剧ず鎴栭殣钘忓閫夋锛屽苟鍦ㄧ敤鎴烽�夋嫨鍒楄〃椤规椂鏇存柊鐩稿簲鐨� LiveData 鏁版嵁浠ュ強鐣岄潰涓婄殑澶嶉�夋鐘舵�� + if (isCheckable){ + holder.getBinding().ivFlower.setVisibility(View.GONE); + if (mDataList.get(position).getOwnData() == 1){ + holder.getBinding().checkbox.setVisibility(View.VISIBLE); + }else { + holder.getBinding().checkbox.setVisibility(View.GONE); + } + + + holder.getBinding().checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + if (viewModel.getCheckListLiveData().getValue() == null){ + viewModel.getCheckListLiveData().setValue(new ArrayList<>()); + } + List<MeetingStaBean> list = new ArrayList<>(viewModel.getCheckListLiveData().getValue()); + if (isChecked){ + if (!list.contains(mDataList.get(position))){ + list.add(mDataList.get(position)); + } + }else{ + list.remove(mDataList.get(position)); + } + viewModel.getCheckListLiveData().setValue(list); + } + }); + holder.getBinding().checkbox.setChecked(viewModel.getCheckListLiveData().getValue().contains(mDataList.get(position))); + }else{ + holder.getBinding().checkbox.setVisibility(View.GONE); + if (mDataList.get(position).getOwnData() == 1){ + holder.getBinding().ivFlower.setVisibility(View.VISIBLE); + }else { + holder.getBinding().ivFlower.setVisibility(View.GONE); + } + } + + + + + holder.getBinding().layoutTitle.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //濡傛灉expendMap 涓瓨鍌ㄧ殑褰撳墠浣嶇疆鐨勭姸鎬佹槸 true锛岃〃绀哄綋鍓嶈鍥炬槸灞曞紑鐘舵�侊紝闇�瑕佹墽琛屾姌鍙犳搷浣滐細 + if (Boolean.TRUE.equals(expendMap.get(getItem(position)))){ + + //鑾峰彇鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴� + int initialHeight = holder.getBinding().cardView.getMeasuredHeight(); + //鑾峰彇鏍囬甯冨眬鐨勯珮搴︺�� + int collapsedHeight = holder.getBinding().layoutTitle.getMeasuredHeight(); + + //璋冪敤 Utils.pullCollapse() 鏂规硶鎵ц鎶樺彔鍔ㄧ敾锛屽苟浼犲叆鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴﹀拰鏍囬甯冨眬鐨勯珮搴︺�� + Utils.pullCollapse(holder.getBinding().cardView,initialHeight,collapsedHeight); + holder.getBinding().ivFold.setBackgroundResource(foldIcon.resourceId); + + //灏嗙姸鎬佽缃负鎶樺彔 + expendMap.put(getItem(position),false); + }else{ + //鑾峰彇鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴� initialHeight銆� + final int initialHeight = holder.getBinding().cardView.getMeasuredHeight(); + //娴嬮噺鍗$墖瑙嗗浘鐨勭洰鏍囬珮搴� targetHeight + holder.getBinding().cardView.measure(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT); + int targetHeight = holder.getBinding().cardView.getMeasuredHeight(); + //璋冪敤 Utils.dropExpand() 鏂规硶鎵ц灞曞紑鍔ㄧ敾锛屽苟浼犲叆鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴﹀拰鐩爣楂樺害銆� + Utils.dropExpand(holder.getBinding().cardView,initialHeight,targetHeight); + //鏇存柊鎶樺彔鍥炬爣涓哄睍寮�鐘舵�併�� + holder.getBinding().ivFold.setBackgroundResource(unfoldIcon.resourceId); + expendMap.put(getItem(position),true); + } + } + }); + + //璁剧疆鐩戝惉浜嬩欢锛屽綋鐢ㄦ埛鐐瑰嚮holder.itemView鏃讹紝鎵ц涓嬮潰鎿嶄綔 + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + //鍒涘缓涓�涓柊鐨� Intent 瀵硅薄锛岃瀵硅薄鐢ㄤ簬鍚姩 MeetingDetailActivity 娲诲姩銆� + + + AppManager.getAppManager().startActivity( + new Intent(getRecyclerView().getContext(), MeetingStaDetailActivity.class) + .putExtra(BaseConfig.EXTRA_TYPE,0) + .putExtra("bean",mDataList.get(position))); + } + }); + + +// //璁剧疆鐩戝惉浜嬩欢锛屽綋鐢ㄦ埛鐐瑰嚮layout涓搴旂殑layout_modify鏃讹紝鎵ц涓嬮潰鎿嶄綔 +// holder.getBinding().layoutModify.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// //鍒涘缓涓�涓柊鐨� Intent 瀵硅薄锛岃瀵硅薄鐢ㄤ簬鍚姩 FamilyMemorabiliaDetailActivity 娲诲姩銆� +// AppManager.getAppManager().startActivity( +// new Intent(getRecyclerView().getContext(), MeetingStaDetailActivity.class) +// .putExtra(BaseConfig.EXTRA_TYPE,2) +// .putExtra("bean",mDataList.get(position))); +// } +// }); + + + //璁剧疆鐩戝惉浜嬩欢锛屽綋鐢ㄦ埛鐐瑰嚮layout涓搴旂殑layout_delete鏃讹紝鎵ц涓嬮潰鎿嶄綔 +// holder.getBinding().layoutDelete.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// new UIDialog.Builder(mContext) +// .setTitle("鎮ㄧ‘瀹氳鍒犻櫎璇ラ」鐩悧") +// .setContent("椤圭洰鍒犻櫎鍚庡皢鏃犳硶鎭㈠") +// .setConfirm("纭畾") +// .setCancel("鍙栨秷") +// .setListener(new UIDialog.OnListener() { +// @Override +// public void onConfirm(BaseDialog dialog) { +// viewModel.deleteItem(mDataList.get(position)); +// } +// }) +// .show(); +// } +// }); + + +// //ElectronicFileAdapter 閫傞厤鍣ㄦ潵鏄剧ず鐢靛瓙鏂囦欢鍒楄〃锛屽苟灏嗗叾缁戝畾鍒� 瑙嗗浘layout涓殑rv_image +// ElectronicFileAdapter adapter = new ElectronicFileAdapter(mContext); +// adapter.setData(Utils.splitString2List(mDataList.get(position).getUrl(),",")); +// holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3)); +// holder.getBinding().rvImage.setAdapter(adapter); + } + + + + + + + + + //notifyItemRangeChanged(0, getItemCount()) 鏂规硶锛岄�氱煡閫傞厤鍣ㄨ寖鍥村唴鐨勯」宸叉洿鏀癸紝浠ヤ究鍦� RecyclerView 涓洿鏂扮浉搴旂殑瑙嗗浘銆� + public void setCheckable(boolean b) { + isCheckable = b; + notifyItemRangeChanged(0,getItemCount()); + } + + + public static class MyViewHolder extends BaseViewHolder<ItemMeetingStaBinding>{ + public MyViewHolder(ItemMeetingStaBinding binding) { + super(binding); + } + } + +} + diff --git a/app/src/main/java/com/application/zhangshi_app_android/adapter/MeetingapproveRvAdapter.java b/app/src/main/java/com/application/zhangshi_app_android/adapter/MeetingapproveRvAdapter.java new file mode 100644 index 0000000..68f0218 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/adapter/MeetingapproveRvAdapter.java @@ -0,0 +1,264 @@ +package com.application.zhangshi_app_android.adapter; + +import android.content.Context; +import android.content.Intent; +import android.util.TypedValue; +import android.view.View; +import android.widget.CompoundButton; +import android.widget.FrameLayout; + +import androidx.recyclerview.widget.GridLayoutManager; + +import com.android.app_base.base.BaseConfig; +import com.android.app_base.base.adapter.BaseRVAdapter; +import com.android.app_base.base.dialog.BaseDialog; +import com.android.app_base.base.dialog.UIDialog; +import com.android.app_base.manager.AppManager; +import com.android.app_base.utils.Utils; +import com.application.zhangshi_app_android.R; +import com.application.zhangshi_app_android.bean.MeetingBean; +import com.application.zhangshi_app_android.databinding.ItemMeetingApproveBinding; +import com.application.zhangshi_app_android.ui.function.MeetingapproveActivityViewModel; +import com.application.zhangshi_app_android.ui.function.MeetingapproveDetailActivity; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author Ljj + * @date 2023.03.18. 10:27 + * @desc 瀹跺ぇ浜嬭 recyclerView 鐨� adapter + */ +public class MeetingapproveRvAdapter extends BaseRVAdapter<MeetingBean, ItemMeetingApproveBinding, MeetingapproveRvAdapter.MyViewHolder> { + + private MeetingapproveActivityViewModel viewModel; + private final Map<MeetingBean, Boolean> expendMap = new HashMap<>(); + private boolean isCheckable; + + + //鎺ュ彈涓�涓笂涓嬫枃鍙傛暟锛岀敤浜庡垵濮嬪寲鍑芥暟 + public MeetingapproveRvAdapter(Context context) { + super(context); + } + + //闄や簡涓婁笅鏂囧弬鏁板锛岃繕鎺ュ彈涓�涓獀iew Model瀵硅薄浣滀负鍙傛暟锛岀敤浜庝笌瑙嗗浘妯″瀷杩涜浜や簰鍜屾暟鎹粦瀹� + public MeetingapproveRvAdapter(Context context, MeetingapproveActivityViewModel viewModel) { + super(context); + this.viewModel = viewModel; + } + + + //缁戝畾item瑙嗗浘 + @Override + protected int getLayoutId() { + return R.layout.item_meeting_approve; + } + + //鍒涘缓瑙嗗浘鎸佹湁鑰呭璞″苟杩斿洖锛岀敤浜庣粦瀹氳鍥惧拰鏁版嵁 + @Override + protected MyViewHolder getViewHolder(ItemMeetingApproveBinding itemBind, int viewType) { + return new MyViewHolder(itemBind); + } + + + //onBind() + @Override + protected void onBind(MyViewHolder holder, int position) { + //灏嗗綋鍓嶄綅缃殑鏁版嵁缁戝畾鍒拌鍥炬寔鏈夎�呬腑鐨勫竷灞�缁戝畾瀵硅薄涓婏紝浠ヤ究鏄剧ず鐩稿簲鐨勫搴邯蹇靛搧鏁版嵁銆� + holder.getBinding().setBean(mDataList.get(position)); + + //typeValue1 瀛樺偍瑙f瀽鍚庣殑灞炴�у�� + TypedValue typedValue1 = new TypedValue(); + + // + mContext.getTheme().resolveAttribute(R.attr.cardBackgroundColorFirst, typedValue1, true); + TypedValue typedValue2 = new TypedValue(); + mContext.getTheme().resolveAttribute(R.attr.cardBackgroundColorSecond, typedValue2, true); + //position涓哄鏁扮殑鏃跺�欙紝鐢╰ypedValue1浣滀负鑳屾櫙鑹诧紝鍋舵暟鏃剁敤typedValue2銆� + if (position % 2 != 0){ + holder.getBinding().cardView.setCardBackgroundColor(typedValue1.data); + }else { + holder.getBinding().cardView.setCardBackgroundColor(typedValue2.data); + } + + //expendMap 鏄竴涓敤浜庡瓨鍌ㄥ垪琛ㄩ」灞曞紑鐘舵�佺殑 Map锛� + // 杩欓噷鐢ㄦ潵妫�鏌ュ綋鍓嶄綅缃搴旂殑鏁版嵁鏄惁宸茬粡鍦� Map 涓瓨鍦紝 + // 濡傛灉涓嶅瓨鍦紝鍒欏皢鍏舵坊鍔犲埌 Map 涓紝骞惰缃叾灞曞紑鐘舵�佷负 false銆� + if (!expendMap.containsKey(getItem(position))){ + expendMap.put(getItem(position),false); + } + + + + //鏍规嵁涓婚閫夋嫨瀵瑰簲鍥炬爣 + TypedValue unfoldIcon = new TypedValue(); + mContext.getTheme().resolveAttribute(R.attr.icUnfold, unfoldIcon, true); + TypedValue foldIcon = new TypedValue(); + mContext.getTheme().resolveAttribute(R.attr.icFold, foldIcon, true); + + if (Boolean.TRUE.equals(expendMap.get(getItem(position)))){ + holder.getBinding().ivFold.setBackgroundResource(unfoldIcon.resourceId); + holder.getBinding().cardView.post(() -> { + holder.getBinding().cardView.getLayoutParams().height = FrameLayout.LayoutParams.WRAP_CONTENT; + holder.getBinding().cardView.requestLayout(); + }); + }else{ + holder.getBinding().ivFold.setBackgroundResource(foldIcon.resourceId); + holder.getBinding().cardView.post(() -> { + holder.getBinding().cardView.getLayoutParams().height = holder.getBinding().layoutTitle.getMeasuredHeight(); + holder.getBinding().cardView.requestLayout(); + }); + } + + + //杩欐浠g爜鐨勪綔鐢ㄦ槸鏍规嵁鏉′欢鏄剧ず鎴栭殣钘忓閫夋锛屽苟鍦ㄧ敤鎴烽�夋嫨鍒楄〃椤规椂鏇存柊鐩稿簲鐨� LiveData 鏁版嵁浠ュ強鐣岄潰涓婄殑澶嶉�夋鐘舵�� + if (isCheckable){ + holder.getBinding().ivFlower.setVisibility(View.GONE); + if (mDataList.get(position).getOwnData() == 1){ + holder.getBinding().checkbox.setVisibility(View.VISIBLE); + }else { + holder.getBinding().checkbox.setVisibility(View.GONE); + } + + + holder.getBinding().checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + if (viewModel.getCheckListLiveData().getValue() == null){ + viewModel.getCheckListLiveData().setValue(new ArrayList<>()); + } + List<MeetingBean> list = new ArrayList<>(viewModel.getCheckListLiveData().getValue()); + if (isChecked){ + if (!list.contains(mDataList.get(position))){ + list.add(mDataList.get(position)); + } + }else{ + list.remove(mDataList.get(position)); + } + viewModel.getCheckListLiveData().setValue(list); + } + }); + holder.getBinding().checkbox.setChecked(viewModel.getCheckListLiveData().getValue().contains(mDataList.get(position))); + }else{ + holder.getBinding().checkbox.setVisibility(View.GONE); + if (mDataList.get(position).getOwnData() == 1){ + holder.getBinding().ivFlower.setVisibility(View.VISIBLE); + }else { + holder.getBinding().ivFlower.setVisibility(View.GONE); + } + } + + + + + holder.getBinding().layoutTitle.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //濡傛灉expendMap 涓瓨鍌ㄧ殑褰撳墠浣嶇疆鐨勭姸鎬佹槸 true锛岃〃绀哄綋鍓嶈鍥炬槸灞曞紑鐘舵�侊紝闇�瑕佹墽琛屾姌鍙犳搷浣滐細 + if (Boolean.TRUE.equals(expendMap.get(getItem(position)))){ + + //鑾峰彇鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴� + int initialHeight = holder.getBinding().cardView.getMeasuredHeight(); + //鑾峰彇鏍囬甯冨眬鐨勯珮搴︺�� + int collapsedHeight = holder.getBinding().layoutTitle.getMeasuredHeight(); + + //璋冪敤 Utils.pullCollapse() 鏂规硶鎵ц鎶樺彔鍔ㄧ敾锛屽苟浼犲叆鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴﹀拰鏍囬甯冨眬鐨勯珮搴︺�� + Utils.pullCollapse(holder.getBinding().cardView,initialHeight,collapsedHeight); + holder.getBinding().ivFold.setBackgroundResource(foldIcon.resourceId); + + //灏嗙姸鎬佽缃负鎶樺彔 + expendMap.put(getItem(position),false); + }else{ + //鑾峰彇鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴� initialHeight銆� + final int initialHeight = holder.getBinding().cardView.getMeasuredHeight(); + //娴嬮噺鍗$墖瑙嗗浘鐨勭洰鏍囬珮搴� targetHeight + holder.getBinding().cardView.measure(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT); + int targetHeight = holder.getBinding().cardView.getMeasuredHeight(); + //璋冪敤 Utils.dropExpand() 鏂规硶鎵ц灞曞紑鍔ㄧ敾锛屽苟浼犲叆鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴﹀拰鐩爣楂樺害銆� + Utils.dropExpand(holder.getBinding().cardView,initialHeight,targetHeight); + //鏇存柊鎶樺彔鍥炬爣涓哄睍寮�鐘舵�併�� + holder.getBinding().ivFold.setBackgroundResource(unfoldIcon.resourceId); + expendMap.put(getItem(position),true); + } + } + }); + + //璁剧疆鐩戝惉浜嬩欢锛屽綋鐢ㄦ埛鐐瑰嚮holder.itemView鏃讹紝鎵ц涓嬮潰鎿嶄綔 + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + //鍒涘缓涓�涓柊鐨� Intent 瀵硅薄锛岃瀵硅薄鐢ㄤ簬鍚姩 MeetingDetailActivity 娲诲姩銆� + + + AppManager.getAppManager().startActivity( + new Intent(getRecyclerView().getContext(), MeetingapproveDetailActivity.class) + .putExtra(BaseConfig.EXTRA_TYPE,0) + .putExtra("bean",mDataList.get(position))); + } + }); + + + //璁剧疆鐩戝惉浜嬩欢锛屽綋鐢ㄦ埛鐐瑰嚮layout涓搴旂殑layout_modify鏃讹紝鎵ц涓嬮潰鎿嶄綔 + holder.getBinding().layoutModify.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + //鍒涘缓涓�涓柊鐨� Intent 瀵硅薄锛岃瀵硅薄鐢ㄤ簬鍚姩 FamilyMemorabiliaDetailActivity 娲诲姩銆� + AppManager.getAppManager().startActivity( + new Intent(getRecyclerView().getContext(), MeetingapproveDetailActivity.class) + .putExtra(BaseConfig.EXTRA_TYPE,2) + .putExtra("bean",mDataList.get(position))); + } + }); + + + //璁剧疆鐩戝惉浜嬩欢锛屽綋鐢ㄦ埛鐐瑰嚮layout涓搴旂殑layout_delete鏃讹紝鎵ц涓嬮潰鎿嶄綔 + holder.getBinding().layoutDelete.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + new UIDialog.Builder(mContext) + .setTitle("鎮ㄧ‘瀹氳鍒犻櫎璇ラ」鐩悧") + .setContent("椤圭洰鍒犻櫎鍚庡皢鏃犳硶鎭㈠") + .setConfirm("纭畾") + .setCancel("鍙栨秷") + .setListener(new UIDialog.OnListener() { + @Override + public void onConfirm(BaseDialog dialog) { + viewModel.deleteItem(mDataList.get(position)); + } + }) + .show(); + } + }); + + + //ElectronicFileAdapter 閫傞厤鍣ㄦ潵鏄剧ず鐢靛瓙鏂囦欢鍒楄〃锛屽苟灏嗗叾缁戝畾鍒� 瑙嗗浘layout涓殑rv_image + ElectronicFileAdapter adapter = new ElectronicFileAdapter(mContext); + adapter.setData(Utils.splitString2List(mDataList.get(position).getUrl(),",")); + holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3)); + holder.getBinding().rvImage.setAdapter(adapter); + } + + + + + + + + + //notifyItemRangeChanged(0, getItemCount()) 鏂规硶锛岄�氱煡閫傞厤鍣ㄨ寖鍥村唴鐨勯」宸叉洿鏀癸紝浠ヤ究鍦� RecyclerView 涓洿鏂扮浉搴旂殑瑙嗗浘銆� + public void setCheckable(boolean b) { + isCheckable = b; + notifyItemRangeChanged(0,getItemCount()); + } + + + public static class MyViewHolder extends BaseViewHolder<ItemMeetingApproveBinding>{ + public MyViewHolder(ItemMeetingApproveBinding binding) { + super(binding); + } + } + +} + diff --git a/app/src/main/java/com/application/zhangshi_app_android/adapter/WebcastRvAdapter.java b/app/src/main/java/com/application/zhangshi_app_android/adapter/WebcastRvAdapter.java new file mode 100644 index 0000000..a8ed974 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/adapter/WebcastRvAdapter.java @@ -0,0 +1,262 @@ +package com.application.zhangshi_app_android.adapter; + +import android.content.Context; +import android.content.Intent; +import android.util.TypedValue; +import android.view.View; +import android.widget.CompoundButton; +import android.widget.FrameLayout; + +import androidx.recyclerview.widget.GridLayoutManager; + +import com.android.app_base.base.BaseConfig; +import com.android.app_base.base.adapter.BaseRVAdapter; +import com.android.app_base.manager.AppManager; +import com.android.app_base.utils.Utils; +import com.application.zhangshi_app_android.R; +import com.application.zhangshi_app_android.bean.WebcastBean; +import com.application.zhangshi_app_android.databinding.ItemWebcastBinding; +import com.application.zhangshi_app_android.ui.function.WebcastActivityViewModel; +import com.application.zhangshi_app_android.ui.function.WebcastDetailActivity; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author Ljj + * @date 2023.03.18. 10:27 + * @desc 瀹跺ぇ浜嬭 recyclerView 鐨� adapter + */ +public class WebcastRvAdapter extends BaseRVAdapter<WebcastBean, ItemWebcastBinding, WebcastRvAdapter.MyViewHolder> { + + private WebcastActivityViewModel viewModel; + private final Map<WebcastBean, Boolean> expendMap = new HashMap<>(); + private boolean isCheckable; + + + //鎺ュ彈涓�涓笂涓嬫枃鍙傛暟锛岀敤浜庡垵濮嬪寲鍑芥暟 + public WebcastRvAdapter(Context context) { + super(context); + } + + //闄や簡涓婁笅鏂囧弬鏁板锛岃繕鎺ュ彈涓�涓獀iew Model瀵硅薄浣滀负鍙傛暟锛岀敤浜庝笌瑙嗗浘妯″瀷杩涜浜や簰鍜屾暟鎹粦瀹� + public WebcastRvAdapter(Context context, WebcastActivityViewModel viewModel) { + super(context); + this.viewModel = viewModel; + } + + + //缁戝畾item瑙嗗浘 + @Override + protected int getLayoutId() { + return R.layout.item_webcast; + } + + //鍒涘缓瑙嗗浘鎸佹湁鑰呭璞″苟杩斿洖锛岀敤浜庣粦瀹氳鍥惧拰鏁版嵁 + @Override + protected MyViewHolder getViewHolder(ItemWebcastBinding itemBind, int viewType) { + return new MyViewHolder(itemBind); + } + + + //onBind() + @Override + protected void onBind(MyViewHolder holder, int position) { + //灏嗗綋鍓嶄綅缃殑鏁版嵁缁戝畾鍒拌鍥炬寔鏈夎�呬腑鐨勫竷灞�缁戝畾瀵硅薄涓婏紝浠ヤ究鏄剧ず鐩稿簲鐨勫搴邯蹇靛搧鏁版嵁銆� + holder.getBinding().setBean(mDataList.get(position)); + + //typeValue1 瀛樺偍瑙f瀽鍚庣殑灞炴�у�� + TypedValue typedValue1 = new TypedValue(); + + // + mContext.getTheme().resolveAttribute(R.attr.cardBackgroundColorFirst, typedValue1, true); + TypedValue typedValue2 = new TypedValue(); + mContext.getTheme().resolveAttribute(R.attr.cardBackgroundColorSecond, typedValue2, true); + //position涓哄鏁扮殑鏃跺�欙紝鐢╰ypedValue1浣滀负鑳屾櫙鑹诧紝鍋舵暟鏃剁敤typedValue2銆� + if (position % 2 != 0){ + holder.getBinding().cardView.setCardBackgroundColor(typedValue1.data); + }else { + holder.getBinding().cardView.setCardBackgroundColor(typedValue2.data); + } + + //expendMap 鏄竴涓敤浜庡瓨鍌ㄥ垪琛ㄩ」灞曞紑鐘舵�佺殑 Map锛� + // 杩欓噷鐢ㄦ潵妫�鏌ュ綋鍓嶄綅缃搴旂殑鏁版嵁鏄惁宸茬粡鍦� Map 涓瓨鍦紝 + // 濡傛灉涓嶅瓨鍦紝鍒欏皢鍏舵坊鍔犲埌 Map 涓紝骞惰缃叾灞曞紑鐘舵�佷负 false銆� + if (!expendMap.containsKey(getItem(position))){ + expendMap.put(getItem(position),false); + } + + + + //鏍规嵁涓婚閫夋嫨瀵瑰簲鍥炬爣 + TypedValue unfoldIcon = new TypedValue(); + mContext.getTheme().resolveAttribute(R.attr.icUnfold, unfoldIcon, true); + TypedValue foldIcon = new TypedValue(); + mContext.getTheme().resolveAttribute(R.attr.icFold, foldIcon, true); + + if (Boolean.TRUE.equals(expendMap.get(getItem(position)))){ + holder.getBinding().ivFold.setBackgroundResource(unfoldIcon.resourceId); + holder.getBinding().cardView.post(() -> { + holder.getBinding().cardView.getLayoutParams().height = FrameLayout.LayoutParams.WRAP_CONTENT; + holder.getBinding().cardView.requestLayout(); + }); + }else{ + holder.getBinding().ivFold.setBackgroundResource(foldIcon.resourceId); + holder.getBinding().cardView.post(() -> { + holder.getBinding().cardView.getLayoutParams().height = holder.getBinding().layoutTitle.getMeasuredHeight(); + holder.getBinding().cardView.requestLayout(); + }); + } + + + //杩欐浠g爜鐨勪綔鐢ㄦ槸鏍规嵁鏉′欢鏄剧ず鎴栭殣钘忓閫夋锛屽苟鍦ㄧ敤鎴烽�夋嫨鍒楄〃椤规椂鏇存柊鐩稿簲鐨� LiveData 鏁版嵁浠ュ強鐣岄潰涓婄殑澶嶉�夋鐘舵�� + if (isCheckable){ + holder.getBinding().ivFlower.setVisibility(View.GONE); + if (mDataList.get(position).getOwnData() == 1){ + holder.getBinding().checkbox.setVisibility(View.VISIBLE); + }else { + holder.getBinding().checkbox.setVisibility(View.GONE); + } + + + holder.getBinding().checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + if (viewModel.getCheckListLiveData().getValue() == null){ + viewModel.getCheckListLiveData().setValue(new ArrayList<>()); + } + List<WebcastBean> list = new ArrayList<>(viewModel.getCheckListLiveData().getValue()); + if (isChecked){ + if (!list.contains(mDataList.get(position))){ + list.add(mDataList.get(position)); + } + }else{ + list.remove(mDataList.get(position)); + } + viewModel.getCheckListLiveData().setValue(list); + } + }); + holder.getBinding().checkbox.setChecked(viewModel.getCheckListLiveData().getValue().contains(mDataList.get(position))); + }else{ + holder.getBinding().checkbox.setVisibility(View.GONE); + if (mDataList.get(position).getOwnData() == 1){ + holder.getBinding().ivFlower.setVisibility(View.VISIBLE); + }else { + holder.getBinding().ivFlower.setVisibility(View.GONE); + } + } + + + + + holder.getBinding().layoutTitle.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //濡傛灉expendMap 涓瓨鍌ㄧ殑褰撳墠浣嶇疆鐨勭姸鎬佹槸 true锛岃〃绀哄綋鍓嶈鍥炬槸灞曞紑鐘舵�侊紝闇�瑕佹墽琛屾姌鍙犳搷浣滐細 + if (Boolean.TRUE.equals(expendMap.get(getItem(position)))){ + + //鑾峰彇鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴� + int initialHeight = holder.getBinding().cardView.getMeasuredHeight(); + //鑾峰彇鏍囬甯冨眬鐨勯珮搴︺�� + int collapsedHeight = holder.getBinding().layoutTitle.getMeasuredHeight(); + + //璋冪敤 Utils.pullCollapse() 鏂规硶鎵ц鎶樺彔鍔ㄧ敾锛屽苟浼犲叆鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴﹀拰鏍囬甯冨眬鐨勯珮搴︺�� + Utils.pullCollapse(holder.getBinding().cardView,initialHeight,collapsedHeight); + holder.getBinding().ivFold.setBackgroundResource(foldIcon.resourceId); + + //灏嗙姸鎬佽缃负鎶樺彔 + expendMap.put(getItem(position),false); + }else{ + //鑾峰彇鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴� initialHeight銆� + final int initialHeight = holder.getBinding().cardView.getMeasuredHeight(); + //娴嬮噺鍗$墖瑙嗗浘鐨勭洰鏍囬珮搴� targetHeight + holder.getBinding().cardView.measure(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT); + int targetHeight = holder.getBinding().cardView.getMeasuredHeight(); + //璋冪敤 Utils.dropExpand() 鏂规硶鎵ц灞曞紑鍔ㄧ敾锛屽苟浼犲叆鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴﹀拰鐩爣楂樺害銆� + Utils.dropExpand(holder.getBinding().cardView,initialHeight,targetHeight); + //鏇存柊鎶樺彔鍥炬爣涓哄睍寮�鐘舵�併�� + holder.getBinding().ivFold.setBackgroundResource(unfoldIcon.resourceId); + expendMap.put(getItem(position),true); + } + } + }); + + //璁剧疆鐩戝惉浜嬩欢锛屽綋鐢ㄦ埛鐐瑰嚮holder.itemView鏃讹紝鎵ц涓嬮潰鎿嶄綔 + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + //鍒涘缓涓�涓柊鐨� Intent 瀵硅薄锛岃瀵硅薄鐢ㄤ簬鍚姩 WebcastDetailActivity 娲诲姩銆� + + + AppManager.getAppManager().startActivity( + new Intent(getRecyclerView().getContext(), WebcastDetailActivity.class) + .putExtra(BaseConfig.EXTRA_TYPE,0) + .putExtra("bean",mDataList.get(position))); + } + }); + + + //璁剧疆鐩戝惉浜嬩欢锛屽綋鐢ㄦ埛鐐瑰嚮layout涓搴旂殑layout_modify鏃讹紝鎵ц涓嬮潰鎿嶄綔 +// holder.getBinding().layoutModify.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// //鍒涘缓涓�涓柊鐨� Intent 瀵硅薄锛岃瀵硅薄鐢ㄤ簬鍚姩 FamilyMemorabiliaDetailActivity 娲诲姩銆� +// AppManager.getAppManager().startActivity( +// new Intent(getRecyclerView().getContext(), MeetingDetailActivity.class) +// .putExtra(BaseConfig.EXTRA_TYPE,2) +// .putExtra("bean",mDataList.get(position))); +// } +// }); + + + //璁剧疆鐩戝惉浜嬩欢锛屽綋鐢ㄦ埛鐐瑰嚮layout涓搴旂殑layout_delete鏃讹紝鎵ц涓嬮潰鎿嶄綔 +// holder.getBinding().layoutDelete.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// new UIDialog.Builder(mContext) +// .setTitle("鎮ㄧ‘瀹氳鍒犻櫎璇ラ」鐩悧") +// .setContent("椤圭洰鍒犻櫎鍚庡皢鏃犳硶鎭㈠") +// .setConfirm("纭畾") +// .setCancel("鍙栨秷") +// .setListener(new UIDialog.OnListener() { +// @Override +// public void onConfirm(BaseDialog dialog) { +// viewModel.deleteItem(mDataList.get(position)); +// } +// }) +// .show(); +// } +// }); + + + //ElectronicFileAdapter 閫傞厤鍣ㄦ潵鏄剧ず鐢靛瓙鏂囦欢鍒楄〃锛屽苟灏嗗叾缁戝畾鍒� 瑙嗗浘layout涓殑rv_image + ElectronicFileAdapter adapter = new ElectronicFileAdapter(mContext); + adapter.setData(Utils.splitString2List(mDataList.get(position).getUrl(),",")); + holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3)); + holder.getBinding().rvImage.setAdapter(adapter); + } + + + + + + + + + //notifyItemRangeChanged(0, getItemCount()) 鏂规硶锛岄�氱煡閫傞厤鍣ㄨ寖鍥村唴鐨勯」宸叉洿鏀癸紝浠ヤ究鍦� RecyclerView 涓洿鏂扮浉搴旂殑瑙嗗浘銆� + public void setCheckable(boolean b) { + isCheckable = b; + notifyItemRangeChanged(0,getItemCount()); + } + + + public static class MyViewHolder extends BaseViewHolder<ItemWebcastBinding>{ + public MyViewHolder(ItemWebcastBinding binding) { + super(binding); + } + } + +} + diff --git a/app/src/main/java/com/application/zhangshi_app_android/adapter/databinding/WebbackRvAdapter.java b/app/src/main/java/com/application/zhangshi_app_android/adapter/databinding/WebbackRvAdapter.java new file mode 100644 index 0000000..8fabe89 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/adapter/databinding/WebbackRvAdapter.java @@ -0,0 +1,263 @@ +package com.application.zhangshi_app_android.adapter.databinding; + +import android.content.Context; +import android.content.Intent; +import android.util.TypedValue; +import android.view.View; +import android.widget.CompoundButton; +import android.widget.FrameLayout; + +import androidx.recyclerview.widget.GridLayoutManager; + +import com.android.app_base.base.BaseConfig; +import com.android.app_base.base.adapter.BaseRVAdapter; +import com.android.app_base.manager.AppManager; +import com.android.app_base.utils.Utils; +import com.application.zhangshi_app_android.R; +import com.application.zhangshi_app_android.adapter.ElectronicFileAdapter; +import com.application.zhangshi_app_android.bean.WebbackBean; +import com.application.zhangshi_app_android.databinding.ItemWebbackBinding; +import com.application.zhangshi_app_android.ui.function.WebbackActivityViewModel; +import com.application.zhangshi_app_android.ui.function.WebbackDetailActivity; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author Ljj + * @date 2023.03.18. 10:27 + * @desc 瀹跺ぇ浜嬭 recyclerView 鐨� adapter + */ +public class WebbackRvAdapter extends BaseRVAdapter<WebbackBean, ItemWebbackBinding, WebbackRvAdapter.MyViewHolder> { + + private WebbackActivityViewModel viewModel; + private final Map<WebbackBean, Boolean> expendMap = new HashMap<>(); + private boolean isCheckable; + + + //鎺ュ彈涓�涓笂涓嬫枃鍙傛暟锛岀敤浜庡垵濮嬪寲鍑芥暟 + public WebbackRvAdapter(Context context) { + super(context); + } + + //闄や簡涓婁笅鏂囧弬鏁板锛岃繕鎺ュ彈涓�涓獀iew Model瀵硅薄浣滀负鍙傛暟锛岀敤浜庝笌瑙嗗浘妯″瀷杩涜浜や簰鍜屾暟鎹粦瀹� + public WebbackRvAdapter(Context context, WebbackActivityViewModel viewModel) { + super(context); + this.viewModel = viewModel; + } + + + //缁戝畾item瑙嗗浘 + @Override + protected int getLayoutId() { + return R.layout.item_webback; + } + + //鍒涘缓瑙嗗浘鎸佹湁鑰呭璞″苟杩斿洖锛岀敤浜庣粦瀹氳鍥惧拰鏁版嵁 + @Override + protected MyViewHolder getViewHolder(ItemWebbackBinding itemBind, int viewType) { + return new MyViewHolder(itemBind); + } + + + //onBind() + @Override + protected void onBind(MyViewHolder holder, int position) { + //灏嗗綋鍓嶄綅缃殑鏁版嵁缁戝畾鍒拌鍥炬寔鏈夎�呬腑鐨勫竷灞�缁戝畾瀵硅薄涓婏紝浠ヤ究鏄剧ず鐩稿簲鐨勫搴邯蹇靛搧鏁版嵁銆� + holder.getBinding().setBean(mDataList.get(position)); + + //typeValue1 瀛樺偍瑙f瀽鍚庣殑灞炴�у�� + TypedValue typedValue1 = new TypedValue(); + + // + mContext.getTheme().resolveAttribute(R.attr.cardBackgroundColorFirst, typedValue1, true); + TypedValue typedValue2 = new TypedValue(); + mContext.getTheme().resolveAttribute(R.attr.cardBackgroundColorSecond, typedValue2, true); + //position涓哄鏁扮殑鏃跺�欙紝鐢╰ypedValue1浣滀负鑳屾櫙鑹诧紝鍋舵暟鏃剁敤typedValue2銆� + if (position % 2 != 0){ + holder.getBinding().cardView.setCardBackgroundColor(typedValue1.data); + }else { + holder.getBinding().cardView.setCardBackgroundColor(typedValue2.data); + } + + //expendMap 鏄竴涓敤浜庡瓨鍌ㄥ垪琛ㄩ」灞曞紑鐘舵�佺殑 Map锛� + // 杩欓噷鐢ㄦ潵妫�鏌ュ綋鍓嶄綅缃搴旂殑鏁版嵁鏄惁宸茬粡鍦� Map 涓瓨鍦紝 + // 濡傛灉涓嶅瓨鍦紝鍒欏皢鍏舵坊鍔犲埌 Map 涓紝骞惰缃叾灞曞紑鐘舵�佷负 false銆� + if (!expendMap.containsKey(getItem(position))){ + expendMap.put(getItem(position),false); + } + + + + //鏍规嵁涓婚閫夋嫨瀵瑰簲鍥炬爣 + TypedValue unfoldIcon = new TypedValue(); + mContext.getTheme().resolveAttribute(R.attr.icUnfold, unfoldIcon, true); + TypedValue foldIcon = new TypedValue(); + mContext.getTheme().resolveAttribute(R.attr.icFold, foldIcon, true); + + if (Boolean.TRUE.equals(expendMap.get(getItem(position)))){ + holder.getBinding().ivFold.setBackgroundResource(unfoldIcon.resourceId); + holder.getBinding().cardView.post(() -> { + holder.getBinding().cardView.getLayoutParams().height = FrameLayout.LayoutParams.WRAP_CONTENT; + holder.getBinding().cardView.requestLayout(); + }); + }else{ + holder.getBinding().ivFold.setBackgroundResource(foldIcon.resourceId); + holder.getBinding().cardView.post(() -> { + holder.getBinding().cardView.getLayoutParams().height = holder.getBinding().layoutTitle.getMeasuredHeight(); + holder.getBinding().cardView.requestLayout(); + }); + } + + + //杩欐浠g爜鐨勪綔鐢ㄦ槸鏍规嵁鏉′欢鏄剧ず鎴栭殣钘忓閫夋锛屽苟鍦ㄧ敤鎴烽�夋嫨鍒楄〃椤规椂鏇存柊鐩稿簲鐨� LiveData 鏁版嵁浠ュ強鐣岄潰涓婄殑澶嶉�夋鐘舵�� + if (isCheckable){ + holder.getBinding().ivFlower.setVisibility(View.GONE); + if (mDataList.get(position).getOwnData() == 1){ + holder.getBinding().checkbox.setVisibility(View.VISIBLE); + }else { + holder.getBinding().checkbox.setVisibility(View.GONE); + } + + + holder.getBinding().checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + if (viewModel.getCheckListLiveData().getValue() == null){ + viewModel.getCheckListLiveData().setValue(new ArrayList<>()); + } + List<WebbackBean> list = new ArrayList<>(viewModel.getCheckListLiveData().getValue()); + if (isChecked){ + if (!list.contains(mDataList.get(position))){ + list.add(mDataList.get(position)); + } + }else{ + list.remove(mDataList.get(position)); + } + viewModel.getCheckListLiveData().setValue(list); + } + }); + holder.getBinding().checkbox.setChecked(viewModel.getCheckListLiveData().getValue().contains(mDataList.get(position))); + }else{ + holder.getBinding().checkbox.setVisibility(View.GONE); + if (mDataList.get(position).getOwnData() == 1){ + holder.getBinding().ivFlower.setVisibility(View.VISIBLE); + }else { + holder.getBinding().ivFlower.setVisibility(View.GONE); + } + } + + + + + holder.getBinding().layoutTitle.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //濡傛灉expendMap 涓瓨鍌ㄧ殑褰撳墠浣嶇疆鐨勭姸鎬佹槸 true锛岃〃绀哄綋鍓嶈鍥炬槸灞曞紑鐘舵�侊紝闇�瑕佹墽琛屾姌鍙犳搷浣滐細 + if (Boolean.TRUE.equals(expendMap.get(getItem(position)))){ + + //鑾峰彇鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴� + int initialHeight = holder.getBinding().cardView.getMeasuredHeight(); + //鑾峰彇鏍囬甯冨眬鐨勯珮搴︺�� + int collapsedHeight = holder.getBinding().layoutTitle.getMeasuredHeight(); + + //璋冪敤 Utils.pullCollapse() 鏂规硶鎵ц鎶樺彔鍔ㄧ敾锛屽苟浼犲叆鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴﹀拰鏍囬甯冨眬鐨勯珮搴︺�� + Utils.pullCollapse(holder.getBinding().cardView,initialHeight,collapsedHeight); + holder.getBinding().ivFold.setBackgroundResource(foldIcon.resourceId); + + //灏嗙姸鎬佽缃负鎶樺彔 + expendMap.put(getItem(position),false); + }else{ + //鑾峰彇鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴� initialHeight銆� + final int initialHeight = holder.getBinding().cardView.getMeasuredHeight(); + //娴嬮噺鍗$墖瑙嗗浘鐨勭洰鏍囬珮搴� targetHeight + holder.getBinding().cardView.measure(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT); + int targetHeight = holder.getBinding().cardView.getMeasuredHeight(); + //璋冪敤 Utils.dropExpand() 鏂规硶鎵ц灞曞紑鍔ㄧ敾锛屽苟浼犲叆鍗$墖瑙嗗浘鐨勫垵濮嬮珮搴﹀拰鐩爣楂樺害銆� + Utils.dropExpand(holder.getBinding().cardView,initialHeight,targetHeight); + //鏇存柊鎶樺彔鍥炬爣涓哄睍寮�鐘舵�併�� + holder.getBinding().ivFold.setBackgroundResource(unfoldIcon.resourceId); + expendMap.put(getItem(position),true); + } + } + }); + + //璁剧疆鐩戝惉浜嬩欢锛屽綋鐢ㄦ埛鐐瑰嚮holder.itemView鏃讹紝鎵ц涓嬮潰鎿嶄綔 + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + //鍒涘缓涓�涓柊鐨� Intent 瀵硅薄锛岃瀵硅薄鐢ㄤ簬鍚姩 WebbackDetailActivity 娲诲姩銆� + + + AppManager.getAppManager().startActivity( + new Intent(getRecyclerView().getContext(), WebbackDetailActivity.class) + .putExtra(BaseConfig.EXTRA_TYPE,0) + .putExtra("bean",mDataList.get(position))); + } + }); + + + //璁剧疆鐩戝惉浜嬩欢锛屽綋鐢ㄦ埛鐐瑰嚮layout涓搴旂殑layout_modify鏃讹紝鎵ц涓嬮潰鎿嶄綔 +// holder.getBinding().layoutModify.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// //鍒涘缓涓�涓柊鐨� Intent 瀵硅薄锛岃瀵硅薄鐢ㄤ簬鍚姩 FamilyMemorabiliaDetailActivity 娲诲姩銆� +// AppManager.getAppManager().startActivity( +// new Intent(getRecyclerView().getContext(), WebbackDetailActivity.class) +// .putExtra(BaseConfig.EXTRA_TYPE,2) +// .putExtra("bean",mDataList.get(position))); +// } +// }); + + + //璁剧疆鐩戝惉浜嬩欢锛屽綋鐢ㄦ埛鐐瑰嚮layout涓搴旂殑layout_delete鏃讹紝鎵ц涓嬮潰鎿嶄綔 +// holder.getBinding().layoutDelete.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// new UIDialog.Builder(mContext) +// .setTitle("鎮ㄧ‘瀹氳鍒犻櫎璇ラ」鐩悧") +// .setContent("椤圭洰鍒犻櫎鍚庡皢鏃犳硶鎭㈠") +// .setConfirm("纭畾") +// .setCancel("鍙栨秷") +// .setListener(new UIDialog.OnListener() { +// @Override +// public void onConfirm(BaseDialog dialog) { +// viewModel.deleteItem(mDataList.get(position)); +// } +// }) +// .show(); +// } +// }); + + + //ElectronicFileAdapter 閫傞厤鍣ㄦ潵鏄剧ず鐢靛瓙鏂囦欢鍒楄〃锛屽苟灏嗗叾缁戝畾鍒� 瑙嗗浘layout涓殑rv_image + ElectronicFileAdapter adapter = new ElectronicFileAdapter(mContext); + adapter.setData(Utils.splitString2List(mDataList.get(position).getUrl(),",")); + holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3)); + holder.getBinding().rvImage.setAdapter(adapter); + } + + + + + + + + + //notifyItemRangeChanged(0, getItemCount()) 鏂规硶锛岄�氱煡閫傞厤鍣ㄨ寖鍥村唴鐨勯」宸叉洿鏀癸紝浠ヤ究鍦� RecyclerView 涓洿鏂扮浉搴旂殑瑙嗗浘銆� + public void setCheckable(boolean b) { + isCheckable = b; + notifyItemRangeChanged(0,getItemCount()); + } + + + public static class MyViewHolder extends BaseViewHolder<ItemWebbackBinding>{ + public MyViewHolder(ItemWebbackBinding binding) { + super(binding); + } + } + +} + diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/MeetingBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/MeetingBean.java new file mode 100644 index 0000000..1253f5a --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/bean/MeetingBean.java @@ -0,0 +1,440 @@ +package com.application.zhangshi_app_android.bean; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class MeetingBean implements Serializable{ + private long id; + private String title; + private String place; + private String conPeople; + + public String getHappenTime() { +// happenTime = happenTime.split(" ")[0]; + return happenTime; + } + + public void setHappenTime(String happenTime) { + this.happenTime = happenTime; + } + + private String happenTime; + private transient int familyId;//鎵�灞炲搴� id + + public int getFamilyId() { + return familyId; + } + + public void setFamilyId(int familyId) { + this.familyId = familyId; + } + + public String getConn_Phone() { + return conn_Phone; + } + + public void setConn_Phone(String conn_Phone) { + this.conn_Phone = conn_Phone; + } + + private int ownData = 1;//鏄惁鏄嚜宸卞搴殑鏁版嵁 1 鏄� 0 涓嶆槸 + + + + public String getPartPeople() { + return partPeople; + } + + public void setPartPeople(String partPeople) { + this.partPeople = partPeople; + } + + public String getApplyPerson() { + return applyPerson; + } + + public void setApplyPerson(String applyPerson) { + this.applyPerson = applyPerson; + } + + public String getApplyApart() { +// applyApart = applyPerson + dd1; + return applyApart; + } + + public void setApplyApart(String applyApart) { + this.applyApart = applyApart; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + if(getDate1()!=null){ + if(getTime1()==null){ + startTime = getDate1().toString()+" 00:00:00"; + } + if (getTime1()!=null){ + startTime = getDate1().toString() +" "+ getTime1().toString(); + } + + } + + this.startTime = startTime; + } + +// public void setStartTime(String startTime) { +// if (getDate1().toString() != null) { +// if (getTime1().toString() == null) { +// this.startTime = getDate1().toString() + " 00:00:00"; +// } else { +// this.startTime = getDate1().toString() + " " + getTime1().toString(); +// } +// } +// this.startTime = startTime; +// } + + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + if (getDate2()!=null){ + if(getTime2()==null){ + endTime = getDate2() + " 00:00:00"; + } + if (getTime2()!=null){ + endTime = getDate2() + " " +getTime2(); + } + } + this.endTime = endTime; + } + +// public String getHappenStartTime() { +// return happenStartTime; +// } +// +// public void setHappenStartTime(String happenStartTime) { +// this.happenStartTime = happenStartTime; +// } +// +// public String getHappenEndTime() { +// return happenEndTime; +// } +// +// public void setHappenEndTime(String happenEndTime) { +// this.happenEndTime = happenEndTime; +// } + + + + + + public String getConnPhone() { + return connPhone; + } + + public void setConnPhone(String connPhone) { + this.connPhone = connPhone; + } + + + public String getConPeople() { + return conPeople; + } + + public void setConPeople(String conPeople) { + this.conPeople = conPeople; + } + + public String getIsPlacebrand() { + return isPlacebrand; + } + + public void setIsPlacebrand(String isPlacebrand) { + this.isPlacebrand = isPlacebrand; + } + + public String getConnPerson() { + return connPerson; + } + + public void setConnPerson(String connPerson) { + this.connPerson = connPerson; + } + + public String getStatu() { +// if(statu == "0"){ +// statu = "鎷掔粷"; +// }else if (statu == "1"){ +// statu = "鍚屾剰"; +// }else{ +// statu = "寰呭鎵�"; +// } + return statu; + } + + public void setStatu(String statu) { + + this.statu = statu; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + private String partPeople; + private String applyPerson; + private String applyApart; + private String startTime; + private String endTime; +// private String happenStartTime; +// private String happenEndTime; + private String isPlacebrand; + private String connPerson; + private String connPhone; + private String statu; + private String createTime; + + private String conn_Phone; + private List<String> urlList; + private String url; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getPlace() { + if (place==null){ + place = null; + } + return place; + } + + public void setPlace(String place) { + this.place = place; + } + + + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + + + + + +// private String url; +// private List<String> urlList; + //List<String> Java 涓殑闆嗗悎绫伙紝鍒楄〃锛屽畠鏄竴涓帴鍙�.閫傚悎浜庨渶瑕侀绻佸鍒犲厓绱犵殑鎯呭喌 + // String[] Java 涓殑鏁扮粍,鏇撮�傚悎浜庡浐瀹氬ぇ灏忋�佷笉闇�瑕侀绻佷慨鏀圭殑鎯呭喌 +// private int ownData = 1;//鏄惁鏄嚜宸卞搴殑鏁版嵁 1 鏄� 0 涓嶆槸 + + + + public int getOwnData() { return ownData; } + public void setOwnData(int value) { this.ownData = value; } + + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + if (url == null){ + return; + } + if (url.contains(",")){ + String[] split = url.split(","); + if (urlList == null){ + urlList = new ArrayList<>(Arrays.asList(split)); + }else { + urlList.clear(); + urlList.addAll(Arrays.asList(split)); + } + }else { + if (urlList == null){ + urlList = new ArrayList<>(); + }else { + urlList.clear(); + } + urlList.add(url); + } + } + + public List<String> getUrlList() { + return urlList; + } + + public void setUrlList(List<String> urlList) { + this.urlList = urlList; + StringBuilder sb = new StringBuilder(); + for (String s : urlList) { + sb.append(s).append(","); + } + //鍘绘帀鏈�鍚庝竴涓�楀彿 + if (sb.length() > 0) { + sb.deleteCharAt(sb.length() - 1); + } + this.url = sb.toString(); + } + + private String date1 ; + private String time1 ; + + public String getDate1() { +// date1 = null; + String data = getStartTime(); + if (data!= null && !data.isEmpty()){ + String[] parts = data.split(" "); + date1 = parts[0]; + } + return date1; + } + + public void setDate1(String date1) { + + this.date1 = date1; + } + + public String getTime1() { +// time1 = null; + String data = getStartTime(); + if (data!= null && !data.isEmpty()){ + String[] parts = data.split(" "); + String hour = "00"; + String min = "00"; + String second = "00"; + + if(parts.length>1){ + String time = parts[1]; + + String[] parts2 = time.split(":"); + if(parts2.length>1){ + hour = parts2[0]; + min = parts2[1]; + second = parts2[3]; + time1 = hour +":" + min+":"+second; + } + }else{ + time1 ="00:00:00"; + } + } + return time1; + } + + public void setTime1(String time1) { +//// time1 = time1 + ":00"; +// time1 = getTime1(); + + this.time1 = time1; + } + + + private String date2; + private String time2; + + public String getDate2() { +// date2 = null; + String data = getEndTime(); + if (data!= null && !data.isEmpty()){ + String[] parts = data.split(" "); + date2 = parts[0]; + } + + return date2; + } + + public void setDate2(String date2) { + + this.date2 = date2; + } + + public String getTime2() { +// time2 = null; + String data = getEndTime(); + if (data!= null && !data.isEmpty()){ + String[] parts = data.split(" "); + + String hour = "00"; + String min = "00"; +// String second = "00"; + + if(parts.length>1){ + String time = parts[1]; + + String[] parts2 = time.split(":"); + if(parts2.length>1){ + hour = parts2[0]; + min = parts2[1]; + + time1 = hour +":" + min+":00"; + }else{ + time1 = parts2[0]+":00:00"; + } + + } + + } + + return time2; + } + + public void setTime2(String time2) { + + this.time2 = time2; + } + + + + + @Override + public String toString() { + return "MeetingBean{" + + "id=" + id + + ", title='" + title + '\'' + + ", connPerson='" + connPerson + '\'' + + ", partPeople='" + partPeople + '\'' + + ", place='" + place + '\'' + + ", applyApart='" + applyApart + '\'' + + ", connPhone='" + connPhone + '\'' + + ", applyPerson='" + applyPerson + '\'' + + ", conPeople='" + conPeople + '\'' + + ", startTime='" + startTime + '\'' + +// ", date1='" + date1 + '\'' + +// ", time1='" + time1 + '\'' + + ", endTime='" + endTime + '\'' + +// ", date2='" + date2 + '\'' + +// ", time2='" + time2 + '\'' + + ", isPlacebrand='" + isPlacebrand + '\'' + +// ", happenStartTime='" + happenStartTime + '\'' + +// ", happenEndTime='" + happenEndTime + '\'' + + ", statu='" + statu + '\'' + + ", createTime='" + createTime + '\'' + + ", url='" + url + '\'' + + ", urlList=" + urlList + + '}'; + } + + } + + diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/MeetingRequestBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/MeetingRequestBean.java new file mode 100644 index 0000000..ccd8467 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/bean/MeetingRequestBean.java @@ -0,0 +1,98 @@ +package com.application.zhangshi_app_android.bean; + +import java.util.Map; + +/** + * @author Ljj + * @date 2023.03.28. 15:57 + * @desc + */ +public class MeetingRequestBean extends PageRequestBean{ + + + private String place; + private String applyApart; + private String startTime; + private String applyPerson; + + public String getApplyPerson() { + return applyPerson; + } + + public void setApplyPerson(String applyPerson) { + this.applyPerson = applyPerson; + } + + // private String endTime; + private String happenStartTime; + + public String getHappenStartTime() { + return happenStartTime; + } + + public void setHappenStartTime(String happenStartTime) { + happenStartTime = happenStartTime + " " + "00:00:00"; + this.happenStartTime = happenStartTime; + } + + public String getHappenEndTime() { + return happenEndTime; + } + + public void setHappenEndTime(String happenEndTime) { + happenEndTime = happenEndTime + " " +"00:00:00"; + + this.happenEndTime = happenEndTime; + } + + private String happenEndTime; + + public String getApplyApart() { + return applyApart; + } + + public void setApplyApart(String applyApart) { + this.applyApart = applyApart; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + +// public String getEndTime() { +// return endTime; +// } +// +// public void setEndTime(String endTime) { +// this.endTime = endTime; +// } + + public String getPlace() { + return place; + } + + public void setPlace(String place) { + this.place = place; + } + + + + public Map<String, Object> toMap() { + Map<String, Object> map = super.toMap(); + map.put("place", place == null ? "" : place); + map.put("applyApart", applyApart == null ? "" : applyApart); + map.put("applyPerson", applyPerson == null ? "" : applyPerson); + + map.put("happenStartTime", happenStartTime == null ? "" : happenStartTime); + map.put("happenEndTime", happenEndTime == null ? "" : happenEndTime); +// map.put("endTime", endTime == null ? "" : endTime); + map.put("startTime", startTime == null ? "" : startTime); + map.put("pageNum", pageNum); + map.put("pageSize", pageSize); + return map; + } +} diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/MeetingStaBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/MeetingStaBean.java new file mode 100644 index 0000000..38c8e52 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/bean/MeetingStaBean.java @@ -0,0 +1,127 @@ +package com.application.zhangshi_app_android.bean; + +import java.io.Serializable; +import java.util.List; +public class MeetingStaBean extends MeetingStaRequestBean implements Serializable{ + private long id; + private String familyId; + private String title; + + public void setFamilyId(String familyId) { + this.familyId = familyId; + } + + public String getFamilyId() { + return familyId; + } + + private String conferenceRoom; + private String applyPerson; + private String ratifyPerson; + private String status; + private String useTime; + + private int ownData = 1; + + private List<String> urlList; + private String url; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getConferenceRoom() { + return conferenceRoom; + } + + public void setConferenceRoom(String conferenceRoom) { + this.conferenceRoom = conferenceRoom; + } + + public String getApplyPerson() { + return applyPerson; + } + + public void setApplyPerson(String applyPerson) { + this.applyPerson = applyPerson; + } + + public String getRatifyPerson() { + return ratifyPerson; + } + + public void setRatifyPerson(String ratifyPerson) { + this.ratifyPerson = ratifyPerson; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getUseTime() { + return useTime; + } + + public void setUseTime(String useTime) { + this.useTime = useTime; + } + + public int getOwnData() { + return ownData; + } + + public void setOwnData(int ownData) { + this.ownData = ownData; + } + + public List<String> getUrlList() { + return urlList; + } + + public void setUrlList(List<String> urlList) { + this.urlList = urlList; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + + public String toString() { + return "MeetingStaBean{" + + "id=" + id + + ", title='" + title + '\'' + + ", familyId='" + familyId + '\'' + + ", conferenceRoom='" + conferenceRoom + '\'' + + ", applyPerson='" + applyPerson + '\'' + + ", ratifyPerson='" + ratifyPerson + '\'' + + ", status='" + status + '\'' + + ", useTime='" + useTime + '\'' + + ", url='" + url + '\'' + + ", urlList=" + urlList + + '}'; + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/MeetingStaRequestBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/MeetingStaRequestBean.java new file mode 100644 index 0000000..4edd8e4 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/bean/MeetingStaRequestBean.java @@ -0,0 +1,19 @@ +package com.application.zhangshi_app_android.bean; + +import java.util.Map; + +/** + * @author Ljj + * @date 2023.03.28. 15:57 + * @desc + */ +public class MeetingStaRequestBean extends PageRequestBean{ + + public Map<String, Object> toMap() { + Map<String, Object> map = super.toMap(); + + map.put("pageNum", pageNum); + map.put("pageSize", pageSize); + return map; + } +} diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/MeetingapproveBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/MeetingapproveBean.java new file mode 100644 index 0000000..90837e2 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/bean/MeetingapproveBean.java @@ -0,0 +1,58 @@ +package com.application.zhangshi_app_android.bean; + +import java.io.Serializable; +import java.util.List; + +public class MeetingapproveBean extends MeetingBean implements Serializable{ + private long id; + private String statu; + + private List<String> urlList; + private String url; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getStatu() { + return statu; + } + + public void setStatu(String statu) { + this.statu = statu; + } + + public List<String> getUrlList() { + return urlList; + } + + public void setUrlList(List<String> urlList) { + this.urlList = urlList; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + @Override + public String toString() { + return "MeetingBean{" + + "id=" + id + + ", statu='" + statu + '\'' + + + ", url='" + url + '\'' + + ", urlList=" + urlList + + '}'; + } + + } + + diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/MeetingapproveRequestBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/MeetingapproveRequestBean.java new file mode 100644 index 0000000..6e8e637 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/bean/MeetingapproveRequestBean.java @@ -0,0 +1,98 @@ +package com.application.zhangshi_app_android.bean; + +import java.util.Map; + +/** + * @author Ljj + * @date 2023.03.28. 15:57 + * @desc + */ +public class MeetingapproveRequestBean extends PageRequestBean{ + + + private String place; + private String applyApart; + private String startTime; + private String applyPerson; + + public String getApplyPerson() { + return applyPerson; + } + + public void setApplyPerson(String applyPerson) { + this.applyPerson = applyPerson; + } + + // private String endTime; + private String happenStartTime; + + public String getHappenStartTime() { + return happenStartTime; + } + + public void setHappenStartTime(String happenStartTime) { + happenStartTime = happenStartTime + " " + "00:00:00"; + this.happenStartTime = happenStartTime; + } + + public String getHappenEndTime() { + return happenEndTime; + } + + public void setHappenEndTime(String happenEndTime) { + happenEndTime = happenEndTime + " " +"00:00:00"; + + this.happenEndTime = happenEndTime; + } + + private String happenEndTime; + + public String getApplyApart() { + return applyApart; + } + + public void setApplyApart(String applyApart) { + this.applyApart = applyApart; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + +// public String getEndTime() { +// return endTime; +// } +// +// public void setEndTime(String endTime) { +// this.endTime = endTime; +// } + + public String getPlace() { + return place; + } + + public void setPlace(String place) { + this.place = place; + } + + + + public Map<String, Object> toMap() { + Map<String, Object> map = super.toMap(); + map.put("place", place == null ? "" : place); + map.put("applyApart", applyApart == null ? "" : applyApart); + map.put("applyPerson", applyPerson == null ? "" : applyPerson); + + map.put("happenStartTime", happenStartTime == null ? "" : happenStartTime); + map.put("happenEndTime", happenEndTime == null ? "" : happenEndTime); +// map.put("endTime", endTime == null ? "" : endTime); + map.put("startTime", startTime == null ? "" : startTime); + map.put("pageNum", pageNum); + map.put("pageSize", pageSize); + return map; + } +} diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/WebbackBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/WebbackBean.java new file mode 100644 index 0000000..521d0d5 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/bean/WebbackBean.java @@ -0,0 +1,263 @@ +package com.application.zhangshi_app_android.bean; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class WebbackBean implements Serializable { + private long id; + + public long getId() { + return id; + } + private int ownData = 1;//鏄惁鏄嚜宸卞搴殑鏁版嵁 1 鏄� 0 涓嶆槸 + + public int getOwnData() { + return ownData; + } + + public void setOwnData(int ownData) { + this.ownData = ownData; + } + + public void setId(long id) { + this.id = id; + } + + private String pageSize; + private String pageNum; + private String title; + private String applyPerson; + private String contactPerson; + private String contactPhone; + private String startTime; + + public String getContactPhone() { + return contactPhone; + } + + public void setContactPhone(String contactPhone) { + this.contactPhone = contactPhone; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + private String endTime; + + private String date1 ; + private String time1 ; + + public String getDate1() { + date1 = null; + String data = getStartTime(); + if (data!= null && !data.isEmpty()){ + String[] parts = data.split(" "); + date1 = parts[0]; + } + return date1; + } + + public void setDate1(String date1) { + this.date1 = date1; + } + + public String getTime1() { + time1 = null; + String data = getStartTime(); + if (data!= null && !data.isEmpty()){ + String[] parts = data.split(" "); + String hour = "00"; + String min = "00"; + String second = "00"; + + if(parts.length>1){ + String time = parts[1]; + + String[] parts2 = time.split(":"); + if(parts2.length>1){ + hour = parts2[0]; + min = parts2[1]; + second = parts2[3]; + time1 = hour +":" + min+":"+second; + } + }else{ + time1 ="00:00:00"; + } + } + return time1; + } + + public void setTime1(String time1) { + this.time1 = time1; + } + + private String date2; + private String time2; + + public String getDate2() { + date2 = null; + String data = getEndTime(); + if (data!= null && !data.isEmpty()){ + String[] parts = data.split(" "); + date2 = parts[0]; + } + return date2; + } + + public void setDate2(String date2) { + this.date2 = date2; + } + + public String getTime2() { + time2 = null; + String data = getEndTime(); + if (data!= null && !data.isEmpty()){ + String[] parts = data.split(" "); + String hour = "00"; + String min = "00"; + String second = "00"; + + if(parts.length>1){ + String time = parts[1]; + + String[] parts2 = time.split(":"); + if(parts2.length>1){ + hour = parts2[0]; + min = parts2[1]; + second = parts2[3]; + time2 = hour +":" + min+":"+second; + } + }else{ + time2 ="00:00:00"; + } + } + return time2; + } + + public void setTime2(String time2) { + this.time2 = time2; + } + + public String getPageSize() { + return pageSize; + } + + public void setPageSize(String pageSize) { + this.pageSize = pageSize; + } + + public String getPageNum() { + return pageNum; + } + + public void setPageNum(String pageNum) { + this.pageNum = pageNum; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getApplyPerson() { + return applyPerson; + } + + public void setApplyPerson(String applyPerson) { + this.applyPerson = applyPerson; + } + + public String getContactPerson() { + return contactPerson; + } + + public void setContactPerson(String contactPerson) { + this.contactPerson = contactPerson; + } + + + private String url; + private List<String> urlList; + + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + if (url == null){ + return; + } + if (url.contains(",")){ + String[] split = url.split(","); + if (urlList == null){ + urlList = new ArrayList<>(Arrays.asList(split)); + }else { + urlList.clear(); + urlList.addAll(Arrays.asList(split)); + } + }else { + if (urlList == null){ + urlList = new ArrayList<>(); + }else { + urlList.clear(); + } + urlList.add(url); + } + } + + public List<String> getUrlList() { + return urlList; + } + + public void setUrlList(List<String> urlList) { + this.urlList = urlList; + StringBuilder sb = new StringBuilder(); + for (String s : urlList) { + sb.append(s).append(","); + } + //鍘绘帀鏈�鍚庝竴涓�楀彿 + if (sb.length() > 0) { + sb.deleteCharAt(sb.length() - 1); + } + this.url = sb.toString(); + } + + + + + + @Override + public String toString() { + return "WebbackBean{" + + "id=" + id + + "startTime=" + startTime + + "endTime=" + endTime + + "title=" + title + + "applyPerson=" + applyPerson + + "contactPerson=" + contactPerson + + "contactPhone=" + contactPhone + + "pageSize=" + pageSize + + "pageNum=" + pageNum + + '}'; + } +} diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/WebbackRequestBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/WebbackRequestBean.java new file mode 100644 index 0000000..a4674e8 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/bean/WebbackRequestBean.java @@ -0,0 +1,162 @@ +package com.application.zhangshi_app_android.bean; + + +import java.util.Map; + +public class WebbackRequestBean extends PageRequestBean { +// private long id; +// +// public long getId() { +// return id; +// } +// +// public void setId(long id) { +// this.id = id; +// } + + private String pageSize; + private String pageNum; + private String title; + private String applyPerson; + private String contactPerson; + private String contactPhone; + private String startTime; + + public String getContactPhone() { + return contactPhone; + } + + public void setContactPhone(String contactPhone) { + this.contactPhone = contactPhone; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + + + + private String endTime; + +// public String getPageSize() { +// return pageSize; +// } +// +// public void setPageSize(String pageSize) { +// this.pageSize = pageSize; +// } +// +// public String getPageNum() { +// return pageNum; +// } +// +// public void setPageNum(String pageNum) { +// this.pageNum = pageNum; +// } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getApplyPerson() { + return applyPerson; + } + + public void setApplyPerson(String applyPerson) { + this.applyPerson = applyPerson; + } + + public String getContactPerson() { + return contactPerson; + } + + public void setContactPerson(String contactPerson) { + this.contactPerson = contactPerson; + } + + +// private String url; +// private List<String> urlList; + + +// public String getUrl() { +// return url; +// } +// +// public void setUrl(String url) { +// this.url = url; +// if (url == null){ +// return; +// } +// if (url.contains(",")){ +// String[] split = url.split(","); +// if (urlList == null){ +// urlList = new ArrayList<>(Arrays.asList(split)); +// }else { +// urlList.clear(); +// urlList.addAll(Arrays.asList(split)); +// } +// }else { +// if (urlList == null){ +// urlList = new ArrayList<>(); +// }else { +// urlList.clear(); +// } +// urlList.add(url); +// } +// } + +// public List<String> getUrlList() { +// return urlList; +// } +// +// public void setUrlList(List<String> urlList) { +// this.urlList = urlList; +// StringBuilder sb = new StringBuilder(); +// for (String s : urlList) { +// sb.append(s).append(","); +// } +// //鍘绘帀鏈�鍚庝竴涓�楀彿 +// if (sb.length() > 0) { +// sb.deleteCharAt(sb.length() - 1); +// } +// this.url = sb.toString(); +// } + + + + + + public Map<String, Object> toMap() { + Map<String, Object> map = super.toMap(); + map.put("startTime", startTime == null ? "" : startTime); + map.put("endTime", endTime == null ? "" : endTime); + map.put("title", title == null ? "" : title); + + map.put("applyPerson", applyPerson == null ? "" : applyPerson); + map.put("contactPerson", contactPerson == null ? "" : contactPerson); +// map.put("endTime", endTime == null ? "" : endTime); + map.put("contactPhone", contactPhone == null ? "" : contactPhone); +// map.put("pageNum", pageNum); +// map.put("pageSize", pageSize); + return map; + } + +} diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/WebcastBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/WebcastBean.java new file mode 100644 index 0000000..28bfcb3 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/bean/WebcastBean.java @@ -0,0 +1,263 @@ +package com.application.zhangshi_app_android.bean; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class WebcastBean implements Serializable { + private long id; + + public long getId() { + return id; + } + private int ownData = 1;//鏄惁鏄嚜宸卞搴殑鏁版嵁 1 鏄� 0 涓嶆槸 + + public int getOwnData() { + return ownData; + } + + public void setOwnData(int ownData) { + this.ownData = ownData; + } + + public void setId(long id) { + this.id = id; + } + + private String pageSize; + private String pageNum; + private String title; + private String applyPerson; + private String contactPerson; + private String contactPhone; + private String startTime; + + public String getContactPhone() { + return contactPhone; + } + + public void setContactPhone(String contactPhone) { + this.contactPhone = contactPhone; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + private String endTime; + + private String date1 ; + private String time1 ; + + public String getDate1() { +// date1 = null; +// String data = getStartTime(); +// if (data!= null && !data.isEmpty()){ +// String[] parts = data.split(" "); +// date1 = parts[0]; +// } + return date1; + } + + public void setDate1(String date1) { + this.date1 = date1; + } + + public String getTime1() { +// time1 = null; +// String data = getStartTime(); +// if (data!= null && !data.isEmpty()){ +// String[] parts = data.split(" "); +// String hour = "00"; +// String min = "00"; +// String second = "00"; +// +// if(parts.length>1){ +// String time = parts[1]; +// +// String[] parts2 = time.split(":"); +// if(parts2.length>1){ +// hour = parts2[0]; +// min = parts2[1]; +// second = parts2[3]; +// time1 = hour +":" + min+":"+second; +// } +// }else{ +// time1 ="00:00:00"; +// } +// } + return time1; + } + + public void setTime1(String time1) { + this.time1 = time1; + } + + private String date2; + private String time2; + + public String getDate2() { +// date2 = null; +// String data = getEndTime(); +// if (data!= null && !data.isEmpty()){ +// String[] parts = data.split(" "); +// date2 = parts[0]; +// } + return date2; + } + + public void setDate2(String date2) { + this.date2 = date2; + } + + public String getTime2() { +// time2 = null; +// String data = getEndTime(); +// if (data!= null && !data.isEmpty()){ +// String[] parts = data.split(" "); +// String hour = "00"; +// String min = "00"; +// String second = "00"; +// +// if(parts.length>1){ +// String time = parts[1]; +// +// String[] parts2 = time.split(":"); +// if(parts2.length>1){ +// hour = parts2[0]; +// min = parts2[1]; +// second = parts2[3]; +// time2 = hour +":" + min+":"+second; +// } +// }else{ +// time2 ="00:00:00"; +// } +// } + return time2; + } + + public void setTime2(String time2) { + this.time2 = time2; + } + + public String getPageSize() { + return pageSize; + } + + public void setPageSize(String pageSize) { + this.pageSize = pageSize; + } + + public String getPageNum() { + return pageNum; + } + + public void setPageNum(String pageNum) { + this.pageNum = pageNum; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getApplyPerson() { + return applyPerson; + } + + public void setApplyPerson(String applyPerson) { + this.applyPerson = applyPerson; + } + + public String getContactPerson() { + return contactPerson; + } + + public void setContactPerson(String contactPerson) { + this.contactPerson = contactPerson; + } + + + private String url; + private List<String> urlList; + + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + if (url == null){ + return; + } + if (url.contains(",")){ + String[] split = url.split(","); + if (urlList == null){ + urlList = new ArrayList<>(Arrays.asList(split)); + }else { + urlList.clear(); + urlList.addAll(Arrays.asList(split)); + } + }else { + if (urlList == null){ + urlList = new ArrayList<>(); + }else { + urlList.clear(); + } + urlList.add(url); + } + } + + public List<String> getUrlList() { + return urlList; + } + + public void setUrlList(List<String> urlList) { + this.urlList = urlList; + StringBuilder sb = new StringBuilder(); + for (String s : urlList) { + sb.append(s).append(","); + } + //鍘绘帀鏈�鍚庝竴涓�楀彿 + if (sb.length() > 0) { + sb.deleteCharAt(sb.length() - 1); + } + this.url = sb.toString(); + } + + + + + + @Override + public String toString() { + return "WebcastBean{" + + "id=" + id + + "startTime=" + startTime + + "endTime=" + endTime + + "title=" + title + + "applyPerson=" + applyPerson + + "contactPerson=" + contactPerson + + "contactPhone=" + contactPhone + + "pageSize=" + pageSize + + "pageNum=" + pageNum + + '}'; + } +} diff --git a/app/src/main/java/com/application/zhangshi_app_android/bean/WebcastRequestBean.java b/app/src/main/java/com/application/zhangshi_app_android/bean/WebcastRequestBean.java new file mode 100644 index 0000000..63c621e --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/bean/WebcastRequestBean.java @@ -0,0 +1,159 @@ +package com.application.zhangshi_app_android.bean; + + +import java.util.Map; + +public class WebcastRequestBean extends PageRequestBean { +// private long id; +// +// public long getId() { +// return id; +// } +// +// public void setId(long id) { +// this.id = id; +// } + + private String pageSize; + private String pageNum; + private String title; + private String applyPerson; + private String contactPerson; + private String contactPhone; + private String startTime; + + public String getContactPhone() { + return contactPhone; + } + + public void setContactPhone(String contactPhone) { + this.contactPhone = contactPhone; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + private String endTime; + +// public String getPageSize() { +// return pageSize; +// } +// +// public void setPageSize(String pageSize) { +// this.pageSize = pageSize; +// } +// +// public String getPageNum() { +// return pageNum; +// } +// +// public void setPageNum(String pageNum) { +// this.pageNum = pageNum; +// } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getApplyPerson() { + return applyPerson; + } + + public void setApplyPerson(String applyPerson) { + this.applyPerson = applyPerson; + } + + public String getContactPerson() { + return contactPerson; + } + + public void setContactPerson(String contactPerson) { + this.contactPerson = contactPerson; + } + + +// private String url; +// private List<String> urlList; + + +// public String getUrl() { +// return url; +// } +// +// public void setUrl(String url) { +// this.url = url; +// if (url == null){ +// return; +// } +// if (url.contains(",")){ +// String[] split = url.split(","); +// if (urlList == null){ +// urlList = new ArrayList<>(Arrays.asList(split)); +// }else { +// urlList.clear(); +// urlList.addAll(Arrays.asList(split)); +// } +// }else { +// if (urlList == null){ +// urlList = new ArrayList<>(); +// }else { +// urlList.clear(); +// } +// urlList.add(url); +// } +// } + +// public List<String> getUrlList() { +// return urlList; +// } +// +// public void setUrlList(List<String> urlList) { +// this.urlList = urlList; +// StringBuilder sb = new StringBuilder(); +// for (String s : urlList) { +// sb.append(s).append(","); +// } +// //鍘绘帀鏈�鍚庝竴涓�楀彿 +// if (sb.length() > 0) { +// sb.deleteCharAt(sb.length() - 1); +// } +// this.url = sb.toString(); +// } + + + + + + public Map<String, Object> toMap() { + Map<String, Object> map = super.toMap(); + map.put("startTime", startTime == null ? "" : startTime); + map.put("endTime", endTime == null ? "" : endTime); + map.put("title", title == null ? "" : title); + + map.put("applyPerson", applyPerson == null ? "" : applyPerson); + map.put("contactPerson", contactPerson == null ? "" : contactPerson); +// map.put("endTime", endTime == null ? "" : endTime); + map.put("contactPhone", contactPhone == null ? "" : contactPhone); +// map.put("pageNum", pageNum); +// map.put("pageSize", pageSize); + return map; + } + +} diff --git a/app/src/main/java/com/application/zhangshi_app_android/data/DataRepository.java b/app/src/main/java/com/application/zhangshi_app_android/data/DataRepository.java index ac2e5c9..ba93b75 100644 --- a/app/src/main/java/com/application/zhangshi_app_android/data/DataRepository.java +++ b/app/src/main/java/com/application/zhangshi_app_android/data/DataRepository.java @@ -30,12 +30,14 @@ import com.application.zhangshi_app_android.bean.HonorCollectionResponseBean; import com.application.zhangshi_app_android.bean.HundredWishBean; import com.application.zhangshi_app_android.bean.IncomeAndExpensesBean; -import com.application.zhangshi_app_android.bean.MarriageInfoBean; -import com.application.zhangshi_app_android.bean.MemoBean; -import com.application.zhangshi_app_android.bean.PageResponseBean; import com.application.zhangshi_app_android.bean.LittleDoctorBean; import com.application.zhangshi_app_android.bean.LoginRequestBean; import com.application.zhangshi_app_android.bean.LoginResponseBean; +import com.application.zhangshi_app_android.bean.MarriageInfoBean; +import com.application.zhangshi_app_android.bean.MeetingBean; +import com.application.zhangshi_app_android.bean.MeetingStaBean; +import com.application.zhangshi_app_android.bean.MemoBean; +import com.application.zhangshi_app_android.bean.PageResponseBean; import com.application.zhangshi_app_android.bean.PersonalNotepadBean; import com.application.zhangshi_app_android.bean.PetBean; import com.application.zhangshi_app_android.bean.PetMemoBean; @@ -45,6 +47,8 @@ import com.application.zhangshi_app_android.bean.TourismExperienceBean; import com.application.zhangshi_app_android.bean.UpdateVersionBean; import com.application.zhangshi_app_android.bean.UploadFileResponseBean; +import com.application.zhangshi_app_android.bean.WebbackBean; +import com.application.zhangshi_app_android.bean.WebcastBean; import com.application.zhangshi_app_android.data.source.HttpDataSource; import com.application.zhangshi_app_android.data.source.LocalDataSource; import com.application.zhangshi_app_android.data.source.http.HttpDataSourceImpl; @@ -53,9 +57,7 @@ import java.util.List; import java.util.Map; -import io.reactivex.Completable; import io.reactivex.Observable; -import io.reactivex.ObservableSource; import okhttp3.MultipartBody; /** @@ -130,6 +132,60 @@ public Observable<ResultData<String>> addFamilyMemorabilia(FamilyMemorabiliaBean familyMemorabiliaBean) { return mHttpDataSource.addFamilyMemorabilia(familyMemorabiliaBean); } + + + + /** + * 鑾峰彇瀹跺ぇ浜嬭 + */ + @Override + public Observable<ResultData<PageResponseBean<MeetingStaBean>>> getMeetingSta(Map<String,Object> paramsMap) { + return mHttpDataSource.getMeetingSta(paramsMap); + } + + @Override + public Observable<ResultData<PageResponseBean<MeetingBean>>> getMeeting(Map<String,Object> paramsMap) { + return mHttpDataSource.getMeeting(paramsMap); + } + /** + * 澧炲姞瀹跺ぇ浜嬭 + */ + @Override + public Observable<ResultData<String>> addMeeting(MeetingBean meetingBean) { + return mHttpDataSource.addMeeting(meetingBean); + } + + /** + * 鍒犻櫎瀹跺ぇ浜嬭 + */ + @Override + public Observable<ResultData<String>> deleteMeeting(String ids) { + return mHttpDataSource.deleteMeeting(ids); + } + + /** + *鏇存柊瀹跺ぇ浜嬭 + */ + @Override + public Observable<ResultData<String>> updateMeeting(MeetingBean meetingBean) { + return mHttpDataSource.updateMeeting(meetingBean); + } + + + @Override + public Observable<ResultData<String>> approveMeeting(Integer id,Integer statu) { + return mHttpDataSource.approveMeeting(id,statu); + } + + + + + + + + + + /** * 鍒犻櫎瀹跺ぇ浜嬭 */ @@ -137,13 +193,43 @@ public Observable<ResultData<String>> deleteFamilyMemorabilia(String ids) { return mHttpDataSource.deleteFamilyMemorabilia(ids); } + + + + +//鑾峰彇鐩存挱 + @Override + public Observable<ResultData<PageResponseBean<WebcastBean>>> getWebcast(Map<String,Object> paramsMap) { + return mHttpDataSource.getWebcast(paramsMap); + } + + @Override + public Observable<ResultData<String>> addWebcast(WebcastBean webcastBean) { + return mHttpDataSource.addWebcast(webcastBean); + } + + + //鑾峰彇鐩存挱鍥炴斁 + @Override + public Observable<ResultData<PageResponseBean<WebbackBean>>> getWebback(Map<String,Object> paramsMap){ + return mHttpDataSource.getWebback(paramsMap); + } + + + + + + /** - * 鍒犻櫎瀹跺ぇ浜嬭 + *鏇存柊瀹跺ぇ浜嬭 */ @Override public Observable<ResultData<String>> updateFamilyMemorabilia(FamilyMemorabiliaBean familyMemorabiliaBean) { return mHttpDataSource.updateFamilyMemorabilia(familyMemorabiliaBean); } + + + /** * 涓婁紶鏂囦欢 @@ -158,6 +244,11 @@ public Observable<ResultData<PageResponseBean<FamilyAssetsBean>>> getFamilyAssets(Map<String,Object> paramsMap) { return mHttpDataSource.getFamilyAssets(paramsMap); } + + + + + /** * 鑾峰彇瀹跺涵璁惧 @@ -686,6 +777,7 @@ } + /** * @see LocalDataSourceImpl */ diff --git a/app/src/main/java/com/application/zhangshi_app_android/data/source/HttpDataSource.java b/app/src/main/java/com/application/zhangshi_app_android/data/source/HttpDataSource.java index c524605..0fd51de 100644 --- a/app/src/main/java/com/application/zhangshi_app_android/data/source/HttpDataSource.java +++ b/app/src/main/java/com/application/zhangshi_app_android/data/source/HttpDataSource.java @@ -8,19 +8,6 @@ import com.application.zhangshi_app_android.bean.CleanStorageBean; import com.application.zhangshi_app_android.bean.ContactsDetailBean; import com.application.zhangshi_app_android.bean.ExaminationInfoBean; -import com.application.zhangshi_app_android.bean.HealthCareBaseInfoBean; -import com.application.zhangshi_app_android.bean.HealthCareExistingProblemsBean; -import com.application.zhangshi_app_android.bean.HealthCareLifeHabitsBean; -import com.application.zhangshi_app_android.bean.HealthCareNotesContentBean; -import com.application.zhangshi_app_android.bean.HealthCareNursingExaminationBean; -import com.application.zhangshi_app_android.bean.HomeDevicesBean; -import com.application.zhangshi_app_android.bean.HomeMemberBean; -import com.application.zhangshi_app_android.bean.HomeRootBean; -import com.application.zhangshi_app_android.bean.HundredWishBean; -import com.application.zhangshi_app_android.bean.IncomeAndExpensesBean; -import com.application.zhangshi_app_android.bean.MarriageInfoBean; -import com.application.zhangshi_app_android.bean.MemoBean; -import com.application.zhangshi_app_android.bean.PageResponseBean; import com.application.zhangshi_app_android.bean.FamilyAssetsBean; import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean; import com.application.zhangshi_app_android.bean.GrowthExperienceAbroadConditionBean; @@ -29,25 +16,40 @@ import com.application.zhangshi_app_android.bean.GrowthExperienceHolderConditionBean; import com.application.zhangshi_app_android.bean.GrowthExperienceInformationBean; import com.application.zhangshi_app_android.bean.GrowthExperienceRelationshipBean; +import com.application.zhangshi_app_android.bean.HealthCareBaseInfoBean; +import com.application.zhangshi_app_android.bean.HealthCareExistingProblemsBean; +import com.application.zhangshi_app_android.bean.HealthCareLifeHabitsBean; +import com.application.zhangshi_app_android.bean.HealthCareNotesContentBean; +import com.application.zhangshi_app_android.bean.HealthCareNursingExaminationBean; +import com.application.zhangshi_app_android.bean.HomeDevicesBean; +import com.application.zhangshi_app_android.bean.HomeMemberBean; +import com.application.zhangshi_app_android.bean.HomeRootBean; import com.application.zhangshi_app_android.bean.HonorCollectionResponseBean; +import com.application.zhangshi_app_android.bean.HundredWishBean; +import com.application.zhangshi_app_android.bean.IncomeAndExpensesBean; import com.application.zhangshi_app_android.bean.LittleDoctorBean; import com.application.zhangshi_app_android.bean.LoginRequestBean; import com.application.zhangshi_app_android.bean.LoginResponseBean; +import com.application.zhangshi_app_android.bean.MarriageInfoBean; +import com.application.zhangshi_app_android.bean.MeetingBean; +import com.application.zhangshi_app_android.bean.MeetingStaBean; +import com.application.zhangshi_app_android.bean.MemoBean; +import com.application.zhangshi_app_android.bean.PageResponseBean; import com.application.zhangshi_app_android.bean.PersonalNotepadBean; import com.application.zhangshi_app_android.bean.PetBean; import com.application.zhangshi_app_android.bean.PetMemoBean; -import com.application.zhangshi_app_android.bean.PetOwnerBean; import com.application.zhangshi_app_android.bean.PrivacyBean; import com.application.zhangshi_app_android.bean.PropertyBean; import com.application.zhangshi_app_android.bean.TourismBean; import com.application.zhangshi_app_android.bean.TourismExperienceBean; import com.application.zhangshi_app_android.bean.UpdateVersionBean; import com.application.zhangshi_app_android.bean.UploadFileResponseBean; +import com.application.zhangshi_app_android.bean.WebbackBean; +import com.application.zhangshi_app_android.bean.WebcastBean; import java.util.List; import java.util.Map; -import io.reactivex.Completable; import io.reactivex.Observable; import okhttp3.MultipartBody; @@ -80,11 +82,32 @@ * 澧炲姞瀹跺ぇ浜嬭 */ Observable<ResultData<String>> addFamilyMemorabilia(FamilyMemorabiliaBean familyMemorabiliaBean); + + Observable<ResultData<PageResponseBean<MeetingStaBean>>> getMeetingSta(Map<String, Object> paramsMap); + + Observable<ResultData<PageResponseBean<MeetingBean>>> getMeeting(Map<String, Object> paramsMap); + + Observable<ResultData<String>> addMeeting(MeetingBean meetingBean); + + Observable<ResultData<String>> deleteMeeting(String ids); + + Observable<ResultData<String>> updateMeeting(MeetingBean meetingBean); + + Observable<ResultData<String>> approveMeeting(Integer id, Integer statu); + /** * 鍒犻櫎瀹跺ぇ浜嬭 */ Observable<ResultData<String>> deleteFamilyMemorabilia(String ids); + //鑾峰彇鐩存挱 + Observable<ResultData<PageResponseBean<WebcastBean>>> getWebcast(Map<String, Object> paramsMap); + + Observable<ResultData<String>> addWebcast(WebcastBean webcastBean); + + //鑾峰彇鐩存挱鍥炴斁 + Observable<ResultData<PageResponseBean<WebbackBean>>> getWebback(Map<String, Object> paramsMap); + /** * 淇敼瀹跺ぇ浜嬭 */ diff --git a/app/src/main/java/com/application/zhangshi_app_android/data/source/http/ApiService.java b/app/src/main/java/com/application/zhangshi_app_android/data/source/http/ApiService.java index 07ea9ea..3909f6d 100644 --- a/app/src/main/java/com/application/zhangshi_app_android/data/source/http/ApiService.java +++ b/app/src/main/java/com/application/zhangshi_app_android/data/source/http/ApiService.java @@ -8,19 +8,6 @@ import com.application.zhangshi_app_android.bean.CleanStorageBean; import com.application.zhangshi_app_android.bean.ContactsDetailBean; import com.application.zhangshi_app_android.bean.ExaminationInfoBean; -import com.application.zhangshi_app_android.bean.HealthCareBaseInfoBean; -import com.application.zhangshi_app_android.bean.HealthCareExistingProblemsBean; -import com.application.zhangshi_app_android.bean.HealthCareLifeHabitsBean; -import com.application.zhangshi_app_android.bean.HealthCareNotesContentBean; -import com.application.zhangshi_app_android.bean.HealthCareNursingExaminationBean; -import com.application.zhangshi_app_android.bean.HomeDevicesBean; -import com.application.zhangshi_app_android.bean.HomeMemberBean; -import com.application.zhangshi_app_android.bean.HomeRootBean; -import com.application.zhangshi_app_android.bean.HundredWishBean; -import com.application.zhangshi_app_android.bean.IncomeAndExpensesBean; -import com.application.zhangshi_app_android.bean.MarriageInfoBean; -import com.application.zhangshi_app_android.bean.MemoBean; -import com.application.zhangshi_app_android.bean.PageResponseBean; import com.application.zhangshi_app_android.bean.FamilyAssetsBean; import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean; import com.application.zhangshi_app_android.bean.GrowthExperienceAbroadConditionBean; @@ -29,20 +16,36 @@ import com.application.zhangshi_app_android.bean.GrowthExperienceHolderConditionBean; import com.application.zhangshi_app_android.bean.GrowthExperienceInformationBean; import com.application.zhangshi_app_android.bean.GrowthExperienceRelationshipBean; +import com.application.zhangshi_app_android.bean.HealthCareBaseInfoBean; +import com.application.zhangshi_app_android.bean.HealthCareExistingProblemsBean; +import com.application.zhangshi_app_android.bean.HealthCareLifeHabitsBean; +import com.application.zhangshi_app_android.bean.HealthCareNotesContentBean; +import com.application.zhangshi_app_android.bean.HealthCareNursingExaminationBean; +import com.application.zhangshi_app_android.bean.HomeDevicesBean; +import com.application.zhangshi_app_android.bean.HomeMemberBean; +import com.application.zhangshi_app_android.bean.HomeRootBean; import com.application.zhangshi_app_android.bean.HonorCollectionResponseBean; +import com.application.zhangshi_app_android.bean.HundredWishBean; +import com.application.zhangshi_app_android.bean.IncomeAndExpensesBean; import com.application.zhangshi_app_android.bean.LittleDoctorBean; import com.application.zhangshi_app_android.bean.LoginRequestBean; import com.application.zhangshi_app_android.bean.LoginResponseBean; +import com.application.zhangshi_app_android.bean.MarriageInfoBean; +import com.application.zhangshi_app_android.bean.MeetingBean; +import com.application.zhangshi_app_android.bean.MeetingStaBean; +import com.application.zhangshi_app_android.bean.MemoBean; +import com.application.zhangshi_app_android.bean.PageResponseBean; import com.application.zhangshi_app_android.bean.PersonalNotepadBean; import com.application.zhangshi_app_android.bean.PetBean; import com.application.zhangshi_app_android.bean.PetMemoBean; -import com.application.zhangshi_app_android.bean.PetOwnerBean; import com.application.zhangshi_app_android.bean.PrivacyBean; import com.application.zhangshi_app_android.bean.PropertyBean; import com.application.zhangshi_app_android.bean.TourismBean; import com.application.zhangshi_app_android.bean.TourismExperienceBean; import com.application.zhangshi_app_android.bean.UpdateVersionBean; import com.application.zhangshi_app_android.bean.UploadFileResponseBean; +import com.application.zhangshi_app_android.bean.WebbackBean; +import com.application.zhangshi_app_android.bean.WebcastBean; import java.util.List; import java.util.Map; @@ -59,7 +62,6 @@ import retrofit2.http.Path; import retrofit2.http.Query; import retrofit2.http.QueryMap; -import retrofit2.http.QueryName; /** * @author Ljj @@ -99,11 +101,68 @@ */ @DELETE("/family/zfEvent/{ids}") Observable<ResultData<String>> deleteFamilyMemorabilia(@Path("ids") String ids); + + + + + /** + * 鑾峰彇瀹跺ぇ浜嬩欢 + */ + @GET("/zMeeting/all") + Observable<ResultData<PageResponseBean<MeetingBean>>> getMeeting(@QueryMap Map<String,Object> paramsMap); + /** + * 澧炲姞瀹跺ぇ浜嬭 + */ + @POST("/zMeeting") + Observable<ResultData<String>> addMeeting(@Body MeetingBean meetingBean); + /** + * 鍒犻櫎瀹跺ぇ浜嬭 + */ + @DELETE("/zMeeting/{ids}") + Observable<ResultData<String>> deleteMeeting(@Path("ids") String ids); + /** + * 淇敼瀹跺ぇ浜嬭 + */ + @PUT("/zMeeting") + Observable<ResultData<String>> updateMeeting(@Body MeetingBean meetingBean); + + @PUT("/zMeetingRatify") + Observable<ResultData<String>> approveMeeting(@Body Integer id,Integer statu); + + @GET("/zMeetingStatistic/all") + Observable<ResultData<PageResponseBean<MeetingStaBean>>> getMeetingSta(@QueryMap Map<String,Object> paramsMap); + +//鐩存挱鐢宠 + @POST("/zLiveStreaming") + Observable<ResultData<String>> addWebcast(@Body WebcastBean webcastBean); + @GET("/zLiveStreaming/all") + Observable<ResultData<PageResponseBean<WebcastBean>>> getWebcast(@QueryMap Map<String,Object> paramsMap); + + //鐩存挱鍥炴斁 + @GET("/zLiveStreamingBack/all") + Observable<ResultData<PageResponseBean<WebbackBean>>> getWebback(@QueryMap Map<String,Object> paramsMap); + + + + + + + + + + /** + * 鍒犻櫎淇濆吇 + */ + @DELETE("/zMeeting/{ids}") + Observable<ResultData<String>> deleteText(@Path("ids") String ids); + + /** * 淇敼瀹跺ぇ浜嬭 */ @PUT("/family/zfEvent") Observable<ResultData<String>> updateFamilyMemorabilia(@Body FamilyMemorabiliaBean familyMemorabiliaBean); + /** @@ -119,8 +178,11 @@ @GET("/family/property/all") Observable<ResultData<PageResponseBean<FamilyAssetsBean>>> getFamilyAssets(@QueryMap Map<String, Object> paramsMap); - /** - * 鑾峰彇瀹跺涵璁惧 + + + + + /** * 鑾峰彇瀹跺涵璁惧 */ @GET("/zfEquipment/all") Observable<ResultData<PageResponseBean<HomeDevicesBean>>> getHomeDevices(@QueryMap Map<String, Object> paramsMap); diff --git a/app/src/main/java/com/application/zhangshi_app_android/data/source/http/HttpDataSourceImpl.java b/app/src/main/java/com/application/zhangshi_app_android/data/source/http/HttpDataSourceImpl.java index 85e2257..dfa6cf9 100644 --- a/app/src/main/java/com/application/zhangshi_app_android/data/source/http/HttpDataSourceImpl.java +++ b/app/src/main/java/com/application/zhangshi_app_android/data/source/http/HttpDataSourceImpl.java @@ -1,5 +1,6 @@ package com.application.zhangshi_app_android.data.source.http; +import com.android.app_base.base.BaseConfig; import com.android.app_base.http.ResultData; import com.android.app_base.http.RetrofitManager; import com.application.zhangshi_app_android.bean.AnnualHealthStatusBean; @@ -9,19 +10,6 @@ import com.application.zhangshi_app_android.bean.CleanStorageBean; import com.application.zhangshi_app_android.bean.ContactsDetailBean; import com.application.zhangshi_app_android.bean.ExaminationInfoBean; -import com.application.zhangshi_app_android.bean.HealthCareBaseInfoBean; -import com.application.zhangshi_app_android.bean.HealthCareExistingProblemsBean; -import com.application.zhangshi_app_android.bean.HealthCareLifeHabitsBean; -import com.application.zhangshi_app_android.bean.HealthCareNotesContentBean; -import com.application.zhangshi_app_android.bean.HealthCareNursingExaminationBean; -import com.application.zhangshi_app_android.bean.HomeDevicesBean; -import com.application.zhangshi_app_android.bean.HomeMemberBean; -import com.application.zhangshi_app_android.bean.HomeRootBean; -import com.application.zhangshi_app_android.bean.HundredWishBean; -import com.application.zhangshi_app_android.bean.IncomeAndExpensesBean; -import com.application.zhangshi_app_android.bean.MarriageInfoBean; -import com.application.zhangshi_app_android.bean.MemoBean; -import com.application.zhangshi_app_android.bean.PageResponseBean; import com.application.zhangshi_app_android.bean.FamilyAssetsBean; import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean; import com.application.zhangshi_app_android.bean.GrowthExperienceAbroadConditionBean; @@ -30,11 +18,25 @@ import com.application.zhangshi_app_android.bean.GrowthExperienceHolderConditionBean; import com.application.zhangshi_app_android.bean.GrowthExperienceInformationBean; import com.application.zhangshi_app_android.bean.GrowthExperienceRelationshipBean; +import com.application.zhangshi_app_android.bean.HealthCareBaseInfoBean; +import com.application.zhangshi_app_android.bean.HealthCareExistingProblemsBean; +import com.application.zhangshi_app_android.bean.HealthCareLifeHabitsBean; +import com.application.zhangshi_app_android.bean.HealthCareNotesContentBean; +import com.application.zhangshi_app_android.bean.HealthCareNursingExaminationBean; +import com.application.zhangshi_app_android.bean.HomeDevicesBean; +import com.application.zhangshi_app_android.bean.HomeMemberBean; +import com.application.zhangshi_app_android.bean.HomeRootBean; import com.application.zhangshi_app_android.bean.HonorCollectionResponseBean; +import com.application.zhangshi_app_android.bean.HundredWishBean; +import com.application.zhangshi_app_android.bean.IncomeAndExpensesBean; import com.application.zhangshi_app_android.bean.LittleDoctorBean; import com.application.zhangshi_app_android.bean.LoginRequestBean; import com.application.zhangshi_app_android.bean.LoginResponseBean; -import com.android.app_base.base.BaseConfig; +import com.application.zhangshi_app_android.bean.MarriageInfoBean; +import com.application.zhangshi_app_android.bean.MeetingBean; +import com.application.zhangshi_app_android.bean.MeetingStaBean; +import com.application.zhangshi_app_android.bean.MemoBean; +import com.application.zhangshi_app_android.bean.PageResponseBean; import com.application.zhangshi_app_android.bean.PersonalNotepadBean; import com.application.zhangshi_app_android.bean.PetBean; import com.application.zhangshi_app_android.bean.PetMemoBean; @@ -44,6 +46,8 @@ import com.application.zhangshi_app_android.bean.TourismExperienceBean; import com.application.zhangshi_app_android.bean.UpdateVersionBean; import com.application.zhangshi_app_android.bean.UploadFileResponseBean; +import com.application.zhangshi_app_android.bean.WebbackBean; +import com.application.zhangshi_app_android.bean.WebcastBean; import com.application.zhangshi_app_android.data.source.HttpDataSource; import java.util.List; @@ -119,6 +123,64 @@ public Observable<ResultData<String>> addFamilyMemorabilia(FamilyMemorabiliaBean familyMemorabiliaBean) { return apiService.addFamilyMemorabilia(familyMemorabiliaBean); } + + + + + @Override + public Observable<ResultData<PageResponseBean<MeetingStaBean>>> getMeetingSta(Map<String,Object> paramsMap) { + return apiService.getMeetingSta(paramsMap); + } + /** + * 鑾峰彇瀹跺ぇ浜嬭 + */ + @Override + public Observable<ResultData<PageResponseBean<MeetingBean>>> getMeeting(Map<String,Object> paramsMap) { + return apiService.getMeeting(paramsMap); + } + /** + * 澧炲姞瀹跺ぇ浜嬭 + */ + @Override + public Observable<ResultData<String>> addMeeting(MeetingBean meetingBean) { + return apiService.addMeeting(meetingBean); + } + /** + * 鍒犻櫎瀹跺ぇ浜嬭 + */ + @Override + public Observable<ResultData<String>> deleteMeeting(String ids) { + return apiService.deleteMeeting(ids); + } + + /** + * 淇敼瀹跺ぇ浜嬭 + */ + @Override + public Observable<ResultData<String>> updateMeeting(MeetingBean meetingBean) { + return apiService.updateMeeting(meetingBean); + } + + + + + @Override + public Observable<ResultData<String>> approveMeeting(Integer id, Integer statu) { + return apiService.approveMeeting(id,statu); + } + + + + + + + + + + + + + /** * 鍒犻櫎瀹跺ぇ浜嬭 */ @@ -126,6 +188,10 @@ public Observable<ResultData<String>> deleteFamilyMemorabilia(String ids) { return apiService.deleteFamilyMemorabilia(ids); } + + + + /** * 淇敼瀹跺ぇ浜嬭 @@ -135,6 +201,8 @@ return apiService.updateFamilyMemorabilia(familyMemorabiliaBean); } + + /** * 涓婁紶鏂囦欢 */ @@ -143,6 +211,33 @@ return apiService.uploadFile(file); } + + /** + * 鑾峰彇鐩存挱 + */ + @Override + public Observable<ResultData<PageResponseBean<WebcastBean>>> getWebcast(Map<String,Object> paramsMap) { + return apiService.getWebcast(paramsMap); + } + /** + * 澧炲姞鐩存挱鐢宠 + */ + @Override + public Observable<ResultData<String>> addWebcast(WebcastBean webcastBean) { + return apiService.addWebcast(webcastBean); + } + + @Override + public Observable<ResultData<PageResponseBean<WebbackBean>>> getWebback(Map<String,Object> paramsMap){ + return apiService.getWebback(paramsMap); + } + + + + + + + /** * 鑾峰彇瀹跺涵璧勪骇 */ @@ -151,6 +246,9 @@ return apiService.getFamilyAssets(paramsMap); } + + + /** * 鑾峰彇瀹跺涵璁惧 */ diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseActivity.java index 0af1d3e..cba1cb2 100644 --- a/app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseActivity.java +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseActivity.java @@ -1,5 +1,6 @@ package com.application.zhangshi_app_android.ui; + import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; @@ -32,13 +33,13 @@ import com.application.zhangshi_app_android.ui.function.ContactsActivity; import com.application.zhangshi_app_android.ui.function.FamilyAssetsActivity; import com.application.zhangshi_app_android.ui.function.FamilyMemorabiliaActivity; -import com.application.zhangshi_app_android.ui.function.GrowthExperienceActivity; import com.application.zhangshi_app_android.ui.function.HomeDevicesActivity; import com.application.zhangshi_app_android.ui.function.HonorCollectionActivity; import com.application.zhangshi_app_android.ui.function.HundredWishActivity; import com.application.zhangshi_app_android.ui.function.IncomeAndExpensesActivity; import com.application.zhangshi_app_android.ui.function.LittleDoctorActivity; import com.application.zhangshi_app_android.ui.function.MarriageActivity; +import com.application.zhangshi_app_android.ui.function.MeetingActivity; import com.application.zhangshi_app_android.ui.function.PersonalNotepadActivity; import com.application.zhangshi_app_android.ui.function.PetActivity; import com.application.zhangshi_app_android.ui.function.PrivacyActivity; @@ -48,10 +49,13 @@ import com.application.zhangshi_app_android.ui.main.MainActivity; import com.github.gzuliyujiang.wheelpicker.DatePicker; import com.github.gzuliyujiang.wheelpicker.OptionPicker; +import com.github.gzuliyujiang.wheelpicker.TimePicker; import com.github.gzuliyujiang.wheelpicker.entity.DateEntity; import com.github.gzuliyujiang.wheelpicker.impl.UnitDateFormatter; +import com.github.gzuliyujiang.wheelpicker.impl.UnitTimeFormatter; import com.github.gzuliyujiang.wheelpicker.widget.DateWheelLayout; import com.github.gzuliyujiang.wheelpicker.widget.OptionWheelLayout; +import com.github.gzuliyujiang.wheelpicker.widget.TimeWheelLayout; import com.hjq.bar.TitleBar; import java.util.Calendar; @@ -120,6 +124,7 @@ if (mDrawerLayout != null) { classMap.put(TreeFragment.class,(LinearLayout) findViewById(R.id.dl_home_root_net)); classMap.put(FamilyMemorabiliaActivity.class,(LinearLayout) findViewById(R.id.dl_family_memorabilia)); + classMap.put(MeetingActivity.class,(LinearLayout) findViewById(R.id.dl_family_meeting)); classMap.put(FamilyAssetsActivity.class,(LinearLayout) findViewById(R.id.dl_family_assets)); classMap.put(HomeDevicesActivity.class,(LinearLayout) findViewById(R.id.dl_home_devices)); classMap.put(HonorCollectionActivity.class,(LinearLayout) findViewById(R.id.dl_honor_collection)); @@ -250,10 +255,47 @@ wheelLayout.setIndicatorEnabled(false); //鏃ユ湡鍙�夎寖鍥� wheelLayout.setRange(DateEntity.target(1900, 1, 1), DateEntity.target(2500, 12, 31),DateEntity.target(Calendar.getInstance())); + datePicker.getWheelLayout().setResetWhenLinkage(false); return datePicker; } + + + public TimePicker getTimePicker(){ + TimePicker timePicker = new TimePicker(this); + TimeWheelLayout wheelLayout = timePicker.getWheelLayout(); + wheelLayout.getHourWheelView().setCurtainCorner(0);//鑳屾櫙鏃犲渾瑙� + wheelLayout.getMinuteWheelView().setCurtainCorner(5);//鑳屾櫙鍙宠竟鏈夊渾瑙� + wheelLayout.getSecondWheelView().setCurtainCorner(4);//鑳屾櫙宸﹁竟鏈夊渾瑙� + wheelLayout.setTimeFormatter(new UnitTimeFormatter()); + wheelLayout.setPadding(50, 0, 50, 0); + wheelLayout.setItemSpace(ScreenSizeUtils.dip2px(getSelfActivity(), 20)); + wheelLayout.setCurtainEnabled(true); + wheelLayout.setCurtainColor(Color.parseColor("#4D2F63F8")); + wheelLayout.setCurtainRadius(ScreenSizeUtils.dip2px(getSelfActivity(),4)); + wheelLayout.setSelectedTextColor(Color.parseColor("#FF2F63F8")); + wheelLayout.setTextColor(Color.parseColor("#FF999999")); + wheelLayout.setIndicatorEnabled(false); + //鏃ユ湡鍙�夎寖鍥� +// wheelLayout.setRange(DateEntity.target(1900, 1, 1), DateEntity.target(2500, 12, 31),DateEntity.target(Calendar.getInstance())); + + timePicker.getWheelLayout().setResetWhenLinkage(false); + return timePicker; + } + + + + + + + + + + + + + public OptionPicker getOptionPicker(List<String> list){ OptionPicker picker = new OptionPicker(this); OptionWheelLayout wheelLayout = picker.getWheelLayout(); diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseFragment.java b/app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseFragment.java index 81859bb..6b04cc7 100644 --- a/app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseFragment.java +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseFragment.java @@ -40,6 +40,7 @@ import com.application.zhangshi_app_android.ui.function.IncomeAndExpensesActivity; import com.application.zhangshi_app_android.ui.function.LittleDoctorActivity; import com.application.zhangshi_app_android.ui.function.MarriageActivity; +import com.application.zhangshi_app_android.ui.function.MeetingActivity; import com.application.zhangshi_app_android.ui.function.PersonalNotepadActivity; import com.application.zhangshi_app_android.ui.function.PetDetailActivity; import com.application.zhangshi_app_android.ui.function.PrivacyActivity; @@ -65,6 +66,7 @@ */ private DrawerLayout mDrawerLayout; private Map<Class, LinearLayout> classMap = new HashMap<>(); + @Override protected VDB initViewBinding(LayoutInflater inflater, @Nullable ViewGroup container) { @@ -120,6 +122,7 @@ if (mDrawerLayout != null) { classMap.put(TreeFragment.class,(LinearLayout) findViewById(R.id.dl_home_root_net)); classMap.put(FamilyMemorabiliaActivity.class,(LinearLayout) findViewById(R.id.dl_family_memorabilia)); + classMap.put(MeetingActivity.class,(LinearLayout) findViewById(R.id.dl_family_meeting)); classMap.put(FamilyAssetsActivity.class,(LinearLayout) findViewById(R.id.dl_family_assets)); classMap.put(HomeDevicesActivity.class,(LinearLayout) findViewById(R.id.dl_home_devices)); classMap.put(HonorCollectionActivity.class,(LinearLayout) findViewById(R.id.dl_honor_collection)); diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/AnnualHealthStatusActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/AnnualHealthStatusActivity.java index a1d3edb..1c74f96 100644 --- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/AnnualHealthStatusActivity.java +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/AnnualHealthStatusActivity.java @@ -37,8 +37,7 @@ private boolean isSearchLayoutVisible; private PopupWindow mOperatePopupWindow; @Override - public int getLayoutId() { - return R.layout.activity_annual_health_status; + public int getLayoutId() {return R.layout.activity_annual_health_status; } @Override diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/AnnualHealthStatusActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/AnnualHealthStatusActivityViewModel.java index 9a3560d..e4a429f 100644 --- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/AnnualHealthStatusActivityViewModel.java +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/AnnualHealthStatusActivityViewModel.java @@ -17,8 +17,6 @@ import com.application.zhangshi_app_android.bean.AnnualHealthStatusBean; import com.application.zhangshi_app_android.bean.AnnualHealthStatusRequestBean; import com.application.zhangshi_app_android.bean.PageResponseBean; -import com.application.zhangshi_app_android.bean.AnnualHealthStatusBean; -import com.application.zhangshi_app_android.bean.AnnualHealthStatusRequestBean; import com.application.zhangshi_app_android.data.DataRepository; import java.util.ArrayList; diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsDetailActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsDetailActivity.java index f201e10..c8441ba 100644 --- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsDetailActivity.java +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsDetailActivity.java @@ -51,6 +51,7 @@ binding.rvImage.setNestedScrollingEnabled(false); binding.rvImage.setAdapter(adapter); + memoRvAdapter = new MemoRvAdapter(this); LinearItemDecoration itemDecoration = new LinearItemDecoration(); itemDecoration.setBottomSpace(ScreenSizeUtils.dip2px(this, 15)); diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivity.java index 8f64146..9104119 100644 --- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivity.java +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivity.java @@ -1,9 +1,11 @@ package com.application.zhangshi_app_android.ui.function; import android.content.Intent; +import android.os.Bundle; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; +import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.widget.PopupWindow; @@ -22,6 +24,7 @@ import com.application.zhangshi_app_android.R; import com.application.zhangshi_app_android.adapter.FamilyMemorabiliaRvAdapter; import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean; +import com.application.zhangshi_app_android.bean.MeetingBean; import com.application.zhangshi_app_android.databinding.ActivityFamilyMemorabiliaBinding; import com.application.zhangshi_app_android.ui.DLBaseActivity; import com.github.gzuliyujiang.wheelpicker.DatePicker; @@ -260,12 +263,12 @@ } } }); - viewModel.getMoreListLiveData().observe(this, new Observer<List<FamilyMemorabiliaBean>>() { - @Override - public void onChanged(List<FamilyMemorabiliaBean> familyMemorabiliaBeans) { - adapter.addData(familyMemorabiliaBeans); - } - }); +// viewModel.getMoreListLiveData().observe(this, new Observer<List<FamilyMemorabiliaBean>>() { +// @Override +// public void onChanged(List<FamilyMemorabiliaBean> familyMemorabiliaBeans) { +// adapter.addData(familyMemorabiliaBeans); +// } +// }); viewModel.getOperateTypeLiveData().observe(this, integer -> { if (integer == 0){ binding.ivOperate.setBackgroundResource(R.drawable.ic_operate); @@ -359,4 +362,5 @@ } } + } \ No newline at end of file diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivityViewModel.java index ba3fb67..af5a6a6 100644 --- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivityViewModel.java +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivityViewModel.java @@ -40,10 +40,15 @@ private MutableLiveData<FamilyMemorabiliaRequestBean> requestBeanLiveData;//璇锋眰鍙傛暟 private MutableLiveData<List<FamilyMemorabiliaBean>> moreListLiveData;//涓嬫媺鍔犺浇鏁版嵁 private MutableLiveData<List<FamilyMemorabiliaBean>> finishDeleteListLiveData;//宸茬粡瀹屾垚鍒犻櫎鐨勬暟鎹紝鐢ㄤ簬adapter鐨剅emove鎿嶄綔 + + //鍒涘缓骞跺垵濮嬪寲ViewModel public FamilyMemorabiliaActivityViewModel(@NonNull Application application) { super(application); } + + //DataRepository 鏄竴涓暟鎹粨搴撶被锛岃礋璐g鐞嗘暟鎹殑鑾峰彇鍜屽瓨鍌紝 + // 璇ユ柟娉曢�氳繃璋冪敤 DataRepository.getInstance() 鏉ヨ幏鍙� DataRepository 鐨勫崟渚嬪疄渚嬶紝骞跺皢鍏惰繑鍥瀖odel銆� @Override protected DataRepository initModel() { return DataRepository.getInstance(); @@ -51,34 +56,60 @@ /** * 鑾峰彇瀹跺ぇ浜嬭 */ + + + + //getRequestBeanLiveData().getValue() 妫�鏌ヨ姹傛暟鎹殑 LiveData 鏄惁涓虹┖銆� + // 濡傛灉涓虹┖锛屽垯鍒涘缓涓�涓柊鐨� FamilyMemorabiliaRequestBean 瀵硅薄锛屽苟灏嗗叾璁剧疆涓� LiveData 鐨勫�硷紝浠ョ‘淇濊姹傛暟鎹笉涓� null銆� public void getFamilyMemorabilia() { if (getRequestBeanLiveData().getValue() == null){ getRequestBeanLiveData().setValue(new FamilyMemorabiliaRequestBean()); } + //璁剧疆璇锋眰鏁版嵁瀵硅薄鐨勯〉鐮佷负 1锛岃〃绀鸿鑾峰彇绗竴椤电殑鏁版嵁銆� getRequestBeanLiveData().getValue().setPageNum(1); + + //閫氳繃model(ViewModel 涓殑鏁版嵁浠撳簱瀵硅薄)鍙戣捣缃戠粶璇锋眰锛屽苟灏嗚姹傛暟鎹浆鎹负 Map 绫诲瀷锛屼互渚垮彂閫佺粰鏈嶅姟鍣ㄣ�� model.getFamilyMemorabilia(getRequestBeanLiveData().getValue().toMap()) + + //搴旂敤绾跨▼璋冨害鍣紝纭繚瑙傚療鑰呭湪姝g‘鐨勭嚎绋嬩笂杩愯銆� .compose(RxUtils.schedulersTransformer()) + + //璁㈤槄杩欎釜缃戠粶璇锋眰鐨勭粨鏋� .subscribe(new Observer<ResultData<PageResponseBean<FamilyMemorabiliaBean>>>() { @Override + + //灏嗚闃呭璞℃坊鍔犲埌 addSubscribe() 涓紝浠ヤ究鍦ㄤ笉鍐嶉渶瑕佹椂鍙栨秷璁㈤槄銆� + //鍒涘缓 Disposable 瀵硅薄鏉ョ鐞嗚闃� + // 浣跨敤 Disposable锛屽彲浠ユ湁鏁堝湴绠$悊寮傛鎿嶄綔鐨勭敓鍛藉懆鏈燂紝纭繚璧勬簮鍦ㄤ笉鍐嶉渶瑕佹椂琚纭噴鏀俱�� + public void onSubscribe(Disposable d) { addSubscribe(d); } + + @Override + //onNext()澶勭悊鎴愬姛鑾峰彇鏁版嵁鐨勬儏鍐� public void onNext(ResultData<PageResponseBean<FamilyMemorabiliaBean>> data) { if (data.getCode() == CODE_SUCCESS){ if (data.getData().getData().isEmpty()){ + + //鏇存柊鐣岄潰鐘舵�佷负 StateViewEnum.DATA_NULL changeStateView(StateViewEnum.DATA_NULL); }else { + //闅愯棌鐘舵�佽鍥惧苟灏嗘暟鎹垪琛ㄥ彂甯冨埌 dataListLiveData changeStateView(StateViewEnum.HIDE); dataListLiveData.postValue(data.getData().getData()); } + + //濡傛灉杩斿洖鐨勬暟鎹笉鎴愬姛锛屽垯灏嗘湇鍔″櫒杩斿洖鐨勬秷鎭彂甯冨埌 messageLiveData锛屼互渚块�氱煡鐢ㄦ埛銆� }else { messageLiveData.postValue(data.getMsg()); } } @Override + //onError()澶勭悊鍙戠敓閿欒鐨勬儏鍐碉紝灏嗛敊璇秷鎭彂甯冨埌 messageLiveData銆� public void onError(Throwable e) { messageLiveData.postValue(e.getMessage()); } @@ -228,7 +259,9 @@ this.checkListLiveData = checkListLiveData; } - @NonNull + @NonNull //NonNull 鐢ㄤ簬鏍囪鏂规硶鍙傛暟銆佽繑鍥炲�笺�佸瓧娈垫垨鏂规硶鐨勮繑鍥炵被鍨嬩笉鍏佽涓� null + + //getRequestBeanLiveData() 鑾峰彇涓�涓寘鍚� FamilyMemorabiliaRequestBean 鏁版嵁鐨� MutableLiveData 瀵硅薄銆� public MutableLiveData<FamilyMemorabiliaRequestBean> getRequestBeanLiveData() { if (requestBeanLiveData == null){ requestBeanLiveData = new MutableLiveData<>(); diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeFragment.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeFragment.java index bcc500b..1287cde 100644 --- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeFragment.java +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeFragment.java @@ -85,6 +85,26 @@ AppManager.getAppManager().startActivity(FamilyAssetsActivity.class); } }); + + + binding.layoutFamilyMeeting.setOnClickListener(view -> { + AppManager.getAppManager().startActivity(MeetingActivity.class); + }); + binding.layoutMeetingApprove.setOnClickListener(view -> { + AppManager.getAppManager().startActivity(MeetingapproveActivity.class); + }); + binding.layoutMeetingSta.setOnClickListener(view -> { + AppManager.getAppManager().startActivity(MeetingStaActivity.class); + }); + binding.layoutWebcast.setOnClickListener(view ->{ + AppManager.getAppManager().startActivity(WebcastActivity.class); + }); + binding.layoutWebback.setOnClickListener(view ->{ + AppManager.getAppManager().startActivity(WebbackActivity.class); + }); + + + binding.layoutHomeDevices.setOnClickListener(view -> { AppManager.getAppManager().startActivity(HomeDevicesActivity.class); }); @@ -248,6 +268,8 @@ transaction.replace(R.id.layout_frame,fragment); transaction.commit(); } + + @Override protected void initData() { viewModel.getBannerData(); diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingActivity.java new file mode 100644 index 0000000..a3e5b98 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingActivity.java @@ -0,0 +1,400 @@ +package com.application.zhangshi_app_android.ui.function; + +import android.content.Intent; +import android.text.Editable; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.view.MotionEvent; +import android.view.View; +import android.widget.PopupWindow; + +import androidx.lifecycle.Observer; + +import com.android.app_base.base.BaseConfig; +import com.android.app_base.base.dialog.BaseDialog; +import com.android.app_base.base.dialog.UIDialog; +import com.android.app_base.manager.AppManager; +import com.android.app_base.utils.ScreenSizeUtils; +import com.android.app_base.utils.Utils; +import com.android.app_base.utils.rxbus.RxBus; +import com.android.app_base.widget.LinearItemDecoration; +import com.application.zhangshi_app_android.BR; +import com.application.zhangshi_app_android.R; +import com.application.zhangshi_app_android.adapter.MeetingRvAdapter; +import com.application.zhangshi_app_android.bean.MeetingBean; +import com.application.zhangshi_app_android.databinding.ActivityMeetingBinding; +import com.application.zhangshi_app_android.ui.DLBaseActivity; +import com.github.gzuliyujiang.wheelpicker.DatePicker; +import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener; + +import java.util.List; + +/** + * @author Ljj + * @date 2023.03.18. 10:00 + * @desc 瀹跺ぇ浜嬭 Activity + */ +public class MeetingActivity extends DLBaseActivity<ActivityMeetingBinding,MeetingActivityViewModel>{ + + MeetingRvAdapter adapter; + private PopupWindow mOperatePopupWindow; + private boolean isSearchLayoutVisible; + private int dateType; //0:寮�濮嬫椂闂� 1:缁撴潫鏃堕棿 + + @Override + public int getLayoutId() { + return R.layout.activity_meeting; + } + + + + @Override + public int getVariableId() { + return BR.viewModel; + } + + @Override + public void initParam() { + + } + + + + + @Override + public void initView() { + //涓嬫媺鍒锋柊甯冨眬 + binding.refreshLayout.setEnableRefresh(false); + binding.refreshLayout.setEnableLoadMore(true); + binding.refreshLayout.setEnableOverScrollDrag(true); + binding.refreshLayout.setOnLoadMoreListener(refreshLayout -> { + viewModel.getMoreMeeting(); + }); + //recyclerView閫傞厤鍣� + adapter = new MeetingRvAdapter(this,viewModel); + LinearItemDecoration itemDecoration = new LinearItemDecoration(); + itemDecoration.setBottomSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_12)); + itemDecoration.setHorizontalSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20)); + binding.recyclerView.addItemDecoration(itemDecoration); + binding.recyclerView.setAdapter(adapter); + //鍙充笂瑙掓搷浣滃脊绐� + mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate,null)); + setOnClickListener( + mOperatePopupWindow.getContentView().findViewById(R.id.tv_add), + mOperatePopupWindow.getContentView().findViewById(R.id.tv_select), + mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old), + mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new), + mOperatePopupWindow.getContentView().findViewById(R.id.tv_own_top) + ); + //鐐瑰嚮鏀惧ぇ闀滄寜閽樉绀哄嚭鎼滅储妗� + binding.ivSearchDefault.setOnClickListener(v -> { + binding.layoutSearch.setVisibility(View.VISIBLE); + binding.layoutDefault.setVisibility(View.GONE); + }); + //鐐瑰嚮鎼滅储妗嗚彍鍗曚笅鎷夊嚭 鎼滅储鍙傛暟 + binding.ivSearchType.setOnClickListener(v -> { + if (!isSearchLayoutVisible){ + binding.layoutSearchParameter.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); + int targetHeight = binding.layoutSearchParameter.getMeasuredHeight(); + Utils.pullCollapse(binding.containerSearchParameter,0,targetHeight); + isSearchLayoutVisible = true; + } + }); + //鎼滅储鍙傛暟layout娣诲姞绌虹偣鍑讳簨浠讹紝闃叉鐐瑰嚮瀹冨唴閮╲iew鏃跺畠鍚庨潰鐨剅ecycler杩樿兘鍝嶅簲鐐瑰嚮浜嬩欢 + binding.layoutSearchParameter.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + } + }); + //鐐瑰嚮鎼滅储鎸夐挳杩涜鎼滅储 + binding.ivSearch.setOnClickListener(v -> { + viewModel.getMeeting(); + binding.layoutSearch.setVisibility(View.GONE); + binding.layoutDefault.setVisibility(View.VISIBLE); + binding.tvTitle.setText("鎼滅储缁撴灉"); + hideSoftKeyboard(); + }); + //鐐瑰嚮娣诲姞鎸夐挳璺宠浆鍒板垱寤哄澶т簨璁伴〉闈� + binding.fabAdd.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + AppManager.getAppManager().startActivity(new Intent(getSelfActivity(), MeetingDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1)); + } + }); + + binding.etStartTime.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + if (!TextUtils.isEmpty(s)) { + binding.ivTimeClear.setVisibility(View.VISIBLE); + } else { + if (TextUtils.isEmpty(binding.etEndTime.getText().toString())) { + binding.ivTimeClear.setVisibility(View.INVISIBLE); + } + } + } + + @Override + public void afterTextChanged(Editable s) { + + } + }); + binding.etEndTime.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + if (!TextUtils.isEmpty(s)) { + binding.ivTimeClear.setVisibility(View.VISIBLE); + } else { + if (TextUtils.isEmpty(binding.etStartTime.getText().toString())) { + binding.ivTimeClear.setVisibility(View.INVISIBLE); + } + } } + + @Override + public void afterTextChanged(Editable s) { + + } + }); + binding.etStartTime.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + hideSoftKeyboard(); + DatePicker datePicker = getDatePicker(); + datePicker.setTitle("璇烽�夋嫨寮�濮嬫椂闂�"); + datePicker.setOnDatePickedListener(new OnDatePickedListener() { + @Override + public void onDatePicked(int year, int month, int day) { + //浠yyy-MM-dd鐨勬牸寮忔樉绀猴紝鏈堟棩灏忎簬10鏃跺墠闈㈣ˉ0 + binding.etStartTime.setText(String.format("%d-%02d-%02d", year, month, day)); + if (binding.etEndTime.getText().toString().isEmpty()){ + binding.etEndTime.setText(String.format("%d-%02d-%02d", year, month, day)); + }else { + //姣旇緝寮�濮嬫椂闂村拰缁撴潫鏃堕棿鐨勫ぇ灏� + String startTime = binding.etStartTime.getText().toString(); + String endTime = binding.etEndTime.getText().toString(); + if (Utils.compareDate(startTime,endTime) > 0){ + //浜ゆ崲 + binding.etStartTime.setText(endTime); + binding.etEndTime.setText(startTime); + } + } + } + }); + datePicker.show(); + + } + }); + binding.etEndTime.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + hideSoftKeyboard(); + DatePicker datePicker = getDatePicker(); + datePicker.setTitle("璇烽�夋嫨缁撴潫鏃堕棿"); + datePicker.setOnDatePickedListener(new OnDatePickedListener() { + @Override + public void onDatePicked(int year, int month, int day) { + binding.etEndTime.setText(String.format("%d-%02d-%02d", year, month, day)); + if (binding.etStartTime.getText().toString().isEmpty()){ + binding.etStartTime.setText(String.format("%d-%02d-%02d", year, month, day)); + }else { + //姣旇緝寮�濮嬫椂闂村拰缁撴潫鏃堕棿鐨勫ぇ灏� + String startTime = binding.etStartTime.getText().toString(); + String endTime = binding.etEndTime.getText().toString(); + if (Utils.compareDate(startTime,endTime) > 0){ + //浜ゆ崲 + binding.etStartTime.setText(endTime); + binding.etEndTime.setText(startTime); + } + } + } + }); + datePicker.show(); + } + }); + binding.ivTimeClear.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + binding.etStartTime.setText(""); + binding.etEndTime.setText(""); + } + }); + } + + + + @Override + public void initData() { + viewModel.getMeeting(); + + } + + @Override + public boolean dispatchTouchEvent(MotionEvent event) { + float x = event.getX(); + float y = event.getY(); + if (isSearchLayoutVisible){ + if (!Utils.isPointInsideView(x, y, binding.layoutSearchParameter)) { + Utils.pullCollapse(binding.containerSearchParameter, binding.layoutSearchParameter.getMeasuredHeight(),0); + isSearchLayoutVisible = false; + return true; + + } + + } + return super.dispatchTouchEvent(event); + + + } + + + + + + + + + + @Override + public void initLiveDataObserve() { + viewModel.getDataListLiveData().observe(this, new Observer<List<MeetingBean>>() { + @Override + public void onChanged(List<MeetingBean> meetingBeans) { + adapter.setData(meetingBeans); + } + }); + viewModel.getCheckListLiveData().observe(this, new Observer<List<MeetingBean>>() { + @Override + public void onChanged(List<MeetingBean> meetingBeans) { + if (viewModel.getOperateTypeLiveData().getValue() == 0){ + return; + } + if (meetingBeans.isEmpty()){ + viewModel.getOperateTypeLiveData().setValue(1); + }else{ + viewModel.getOperateTypeLiveData().setValue(2); + } + } + }); + viewModel.getMoreListLiveData().observe(this, new Observer<List<MeetingBean>>() { + @Override + public void onChanged(List<MeetingBean> meetingBeans) { + adapter.addData(meetingBeans); + } + }); + viewModel.getOperateTypeLiveData().observe(this, integer -> { + if (integer == 0){ + binding.ivOperate.setBackgroundResource(R.drawable.ic_operate); + binding.ivOperate.setOnClickListener(v -> { + mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); + }); + adapter.setCheckable(false); + }else if (integer == 1){ + binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish); + binding.ivOperate.setOnClickListener(v -> { + viewModel.getOperateTypeLiveData().postValue(0); + }); + adapter.setCheckable(true); + }else if (integer == 2){ + binding.ivOperate.setBackgroundResource(R.drawable.ic_delete_white); + binding.ivOperate.setOnClickListener(v -> { + new UIDialog.Builder(this) + .setTitle("鎮ㄧ‘瀹氳鍒犻櫎閫変腑鐨勯」鐩悧") + .setContent("椤圭洰鍒犻櫎鍚庡皢鏃犳硶鎭㈠") + .setConfirm("纭畾") + .setCancel("鍙栨秷") + .setListener(new UIDialog.OnListener() { + @Override + public void onConfirm(BaseDialog dialog) { + viewModel.deleteCheckList(); + } + }) + .show(); + }); + } + }); + viewModel.getFinishDeleteListLiveData().observe(this, beans -> { + for (MeetingBean bean : beans) { + adapter.removeItem(bean); + } + }); + //瑙傚療瀹跺ぇ浜嬭鏁版嵁鐨勫彉鍖栵紝鏈夊彉鍖栧寘鎷坊鍔犮�佷慨鏀广�佸垹闄ら兘浼氬彂閫佹秷鎭紝鎺ユ敹鍒版秷鎭悗閲嶆柊鑾峰彇鏁版嵁 + RxBus.getInstance().toObservable(this, MeetingBean.class) + .subscribe(bean -> { + viewModel.getMeeting(); + }); + } + + + @Override + protected void dataNull() { + super.dataNull(); + binding.layoutDataNull.setVisibility(View.VISIBLE); + binding.refreshLayout.setVisibility(View.GONE); + + } + + @Override + protected void dataFinish() { + super.dataFinish(); + binding.refreshLayout.finishLoadMore(); + } + + @Override + protected void hide() { + super.hide(); + binding.layoutDataNull.setVisibility(View.GONE); + binding.refreshLayout.setVisibility(View.VISIBLE); + binding.refreshLayout.finishLoadMore(); + } + + @Override + public void onClick(View v) { + int id = v.getId(); + if (id == R.id.tv_add){ + AppManager.getAppManager().startActivity(new Intent(this, MeetingDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1)); + }else if (id == R.id.tv_select){ + viewModel.getOperateTypeLiveData().postValue(1); + mOperatePopupWindow.dismiss(); + } else if (id == R.id.tv_from_new_to_old) { + viewModel.changeOrder(true); + mOperatePopupWindow.dismiss(); + } else if (id == R.id.tv_from_old_to_new) { + viewModel.changeOrder(false); + mOperatePopupWindow.dismiss(); + } else if (id == R.id.tv_own_top) { + viewModel.ownTop(); + mOperatePopupWindow.dismiss(); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (mOperatePopupWindow != null){ + mOperatePopupWindow.dismiss(); + } + + } + +// private static final String TAG = "Meeting123"; +// @Override +// protected void onCreate(Bundle savedInstanceState){ +// super.onCreate(savedInstanceState); +// setContentView(R.layout.activity_meeting); +// MeetingBean data = new MeetingBean(); +// String b = String.valueOf(data.getDate1()); +// String c = String.valueOf(data.getTime1()); +// String d = String.valueOf(data.getStartTime()); +// Log.d(TAG,b+c+d); +// } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingActivityViewModel.java new file mode 100644 index 0000000..6b9906b --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingActivityViewModel.java @@ -0,0 +1,401 @@ +package com.application.zhangshi_app_android.ui.function; + +import static com.android.app_base.base.BaseConfig.CODE_SUCCESS; + +import android.app.Application; +import android.os.Bundle; +import android.text.TextUtils; +import android.util.Log; + +import androidx.annotation.NonNull; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.android.app_base.base.StateViewEnum; +import com.android.app_base.base.viewmodel.BaseViewModel; +import com.android.app_base.http.ResultData; +import com.android.app_base.utils.RxUtils; +import com.android.app_base.utils.Utils; +import com.application.zhangshi_app_android.bean.MeetingBean; +import com.application.zhangshi_app_android.bean.MeetingRequestBean; +import com.application.zhangshi_app_android.bean.PageResponseBean; +import com.application.zhangshi_app_android.data.DataRepository; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Action; + +/** + * @author Ljj + * @date 2023.03.18. 10:00 + * @desc 瀹跺ぇ浜嬭 viewmodel + */ +public class MeetingActivityViewModel extends BaseViewModel<DataRepository> { + + private MutableLiveData<List<MeetingBean>> checkListLiveData;//閫変腑鐨勬暟鎹� + private MutableLiveData<List<MeetingBean>> dataListLiveData;//鎵�鏈夋暟鎹� + private MutableLiveData<Integer> operateTypeLiveData;//鍙充笂瑙掓搷浣滄 鎿嶄綔绫诲瀷 0 寮瑰嚭閫夋嫨鎿嶄綔 1.瀹屾垚 2.鍒犻櫎 + private MutableLiveData<MeetingRequestBean> requestBeanLiveData;//璇锋眰鍙傛暟 + private MutableLiveData<List<MeetingBean>> moreListLiveData;//涓嬫媺鍔犺浇鏁版嵁 + private MutableLiveData<List<MeetingBean>> finishDeleteListLiveData;//宸茬粡瀹屾垚鍒犻櫎鐨勬暟鎹紝鐢ㄤ簬adapter鐨剅emove鎿嶄綔 + + //鍒涘缓骞跺垵濮嬪寲ViewModel + public MeetingActivityViewModel(@NonNull Application application) { + super(application); + } + + + //DataRepository 鏄竴涓暟鎹粨搴撶被锛岃礋璐g鐞嗘暟鎹殑鑾峰彇鍜屽瓨鍌紝 + // 璇ユ柟娉曢�氳繃璋冪敤 DataRepository.getInstance() 鏉ヨ幏鍙� DataRepository 鐨勫崟渚嬪疄渚嬶紝骞跺皢鍏惰繑鍥瀖odel銆� + @Override + protected DataRepository initModel() { + return DataRepository.getInstance(); + } + /** + * 鑾峰彇瀹跺ぇ浜� + * 璁� + */ + + + + //getRequestBeanLiveData().getValue() 妫�鏌ヨ姹傛暟鎹殑 LiveData 鏄惁涓虹┖銆� + // 濡傛灉涓虹┖锛屽垯鍒涘缓涓�涓柊鐨凪eetingRequestBean 瀵硅薄锛屽苟灏嗗叾璁剧疆涓� LiveData 鐨勫�硷紝浠ョ‘淇濊姹傛暟鎹笉涓� null銆� + public void getMeeting() { + if (getRequestBeanLiveData().getValue() == null){ + getRequestBeanLiveData().setValue(new MeetingRequestBean()); + } + //璁剧疆璇锋眰鏁版嵁瀵硅薄鐨勯〉鐮佷负 1锛岃〃绀鸿鑾峰彇绗竴椤电殑鏁版嵁銆� + getRequestBeanLiveData().getValue().setPageNum(1); + + //閫氳繃model(ViewModel 涓殑鏁版嵁浠撳簱瀵硅薄)鍙戣捣缃戠粶璇锋眰锛屽苟灏嗚姹傛暟鎹浆鎹负 Map 绫诲瀷锛屼互渚垮彂閫佺粰鏈嶅姟鍣ㄣ�� + model.getMeeting(getRequestBeanLiveData().getValue().toMap()) + + //搴旂敤绾跨▼璋冨害鍣紝纭繚瑙傚療鑰呭湪姝g‘鐨勭嚎绋嬩笂杩愯銆� + .compose(RxUtils.schedulersTransformer()) + + //璁㈤槄杩欎釜缃戠粶璇锋眰鐨勭粨鏋� + .subscribe(new Observer<ResultData<PageResponseBean<MeetingBean>>>() { + @Override + + //灏嗚闃呭璞℃坊鍔犲埌 addSubscribe() 涓紝浠ヤ究鍦ㄤ笉鍐嶉渶瑕佹椂鍙栨秷璁㈤槄銆� + //鍒涘缓 Disposable 瀵硅薄鏉ョ鐞嗚闃� + // 浣跨敤 Disposable锛屽彲浠ユ湁鏁堝湴绠$悊寮傛鎿嶄綔鐨勭敓鍛藉懆鏈燂紝纭繚璧勬簮鍦ㄤ笉鍐嶉渶瑕佹椂琚纭噴鏀俱�� + + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + + + @Override + //onNext()澶勭悊鎴愬姛鑾峰彇鏁版嵁鐨勬儏鍐� + public void onNext(ResultData<PageResponseBean<MeetingBean>> data) { + if (data.getCode() == CODE_SUCCESS){ + if (data.getData().getData().isEmpty()){ + + //鏇存柊鐣岄潰鐘舵�佷负 StateViewEnum.DATA_NULL + changeStateView(StateViewEnum.DATA_NULL); + }else { + //闅愯棌鐘舵�佽鍥惧苟灏嗘暟鎹垪琛ㄥ彂甯冨埌 dataListLiveData + changeStateView(StateViewEnum.HIDE); + dataListLiveData.postValue(data.getData().getData()); + } + + //濡傛灉杩斿洖鐨勬暟鎹笉鎴愬姛锛屽垯灏嗘湇鍔″櫒杩斿洖鐨勬秷鎭彂甯冨埌 messageLiveData锛屼互渚块�氱煡鐢ㄦ埛銆� + }else { + messageLiveData.postValue(data.getMsg()); + } + } + + @Override + //onError()澶勭悊鍙戠敓閿欒鐨勬儏鍐碉紝灏嗛敊璇秷鎭彂甯冨埌 messageLiveData銆� + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + /** + * 鍔犺浇鏇村 + */ + public void getMoreMeeting() { + if (getRequestBeanLiveData().getValue() == null){ + getRequestBeanLiveData().setValue(new MeetingRequestBean()); + } + getRequestBeanLiveData().getValue().setPageNum(getRequestBeanLiveData().getValue().getPageNum() + 1); + model.getMeeting(getRequestBeanLiveData().getValue().toMap()) + .compose(RxUtils.schedulersTransformer()) + .doFinally(new Action() { + @Override + public void run() throws Exception { + changeStateView(StateViewEnum.DATA_FINISH); + } + }) + .subscribe(new Observer<ResultData<PageResponseBean<MeetingBean>>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<PageResponseBean<MeetingBean>> data) { + if (data.getCode() == CODE_SUCCESS){ + if (data.getData().getData().isEmpty()){ + messageLiveData.postValue("娌℃湁鏇村鏁版嵁浜�"); + }else { + changeStateView(StateViewEnum.HIDE); + moreListLiveData.postValue(data.getData().getData()); + } + }else { + messageLiveData.postValue(data.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + /** + * 鍒犻櫎瀹跺ぇ浜嬭 + */ + public void deleteCheckList() { + List<MeetingBean> deleteList = getCheckListLiveData().getValue(); + if (deleteList == null){ + return; + } + StringBuffer sb = new StringBuffer(); + deleteList.forEach(MeetingBean -> sb.append(MeetingBean.getId()).append(",")); + sb.deleteCharAt(sb.length()-1); + model.deleteMeeting(sb.toString()) + .compose(RxUtils.schedulersTransformer()) + .subscribe(new Observer<ResultData<String>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<String> stringResultData) { + if (stringResultData.getCode() == CODE_SUCCESS){ + messageLiveData.postValue("鍒犻櫎鎴愬姛"); + finishDeleteListLiveData.postValue(checkListLiveData.getValue()); + getCheckListLiveData().postValue(new ArrayList<>()); + }else { + messageLiveData.postValue(stringResultData.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + /** + * 鍒犻櫎鍗曚釜鏁版嵁 + */ + public void deleteItem(MeetingBean bean) { + model.deleteMeeting(String.valueOf(bean.getId())) + .compose(RxUtils.schedulersTransformer()) + .subscribe(new Observer<ResultData<String>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<String> stringResultData) { + if (stringResultData.getCode() == CODE_SUCCESS){ + List<MeetingBean> list = new ArrayList<>(); + list.add(bean); + finishDeleteListLiveData.postValue(list); + messageLiveData.postValue("鍒犻櫎鎴愬姛"); + }else { + messageLiveData.postValue(stringResultData.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + + public MutableLiveData<List<MeetingBean>> getCheckListLiveData() { + if (checkListLiveData==null){ + checkListLiveData = new MutableLiveData<>(); + checkListLiveData.postValue(new ArrayList<>()); + } + if (checkListLiveData.getValue() == null){ + checkListLiveData.postValue(new ArrayList<>()); + } + return checkListLiveData; + } + + public void setCheckListLiveData(MutableLiveData<List<MeetingBean>> checkListLiveData) { + this.checkListLiveData = checkListLiveData; + } + + @NonNull //NonNull 鐢ㄤ簬鏍囪鏂规硶鍙傛暟銆佽繑鍥炲�笺�佸瓧娈垫垨鏂规硶鐨勮繑鍥炵被鍨嬩笉鍏佽涓� null + + //getRequestBeanLiveData() 鑾峰彇涓�涓寘鍚玀eetingRequestBean 鏁版嵁鐨� MutableLiveData 瀵硅薄銆� + public MutableLiveData<MeetingRequestBean> getRequestBeanLiveData() { + if (requestBeanLiveData == null){ + requestBeanLiveData = new MutableLiveData<>(); + } + if (requestBeanLiveData.getValue() == null){ + requestBeanLiveData.setValue(new MeetingRequestBean()); + } + return requestBeanLiveData; + } + + public void setRequestBeanLiveData(MutableLiveData<MeetingRequestBean> requestBeanLiveData) { + this.requestBeanLiveData = requestBeanLiveData; + } + + public MutableLiveData<List<MeetingBean>> getDataListLiveData() { + if (dataListLiveData == null){ + dataListLiveData = new MutableLiveData<>(); + } + return dataListLiveData; + } + + public void setDataListLiveData(MutableLiveData<List<MeetingBean>> dataListLiveData) { + this.dataListLiveData = dataListLiveData; + } + + @NonNull + public MutableLiveData<List<MeetingBean>> getMoreListLiveData() { + if (moreListLiveData == null){ + moreListLiveData = new MutableLiveData<>(); + } + return moreListLiveData; + } + + public void setMoreListLiveData(MutableLiveData<List<MeetingBean>> moreListLiveData) { + this.moreListLiveData = moreListLiveData; + } + + @NonNull + public MutableLiveData<Integer> getOperateTypeLiveData() { + if (operateTypeLiveData == null){ + operateTypeLiveData = new MutableLiveData<>(); + operateTypeLiveData.setValue(0); + } + return operateTypeLiveData; + } + + public void setOperateTypeLiveData(MutableLiveData<Integer> operateTypeLiveData) { + this.operateTypeLiveData = operateTypeLiveData; + } + + public LiveData<List<MeetingBean>> getFinishDeleteListLiveData() { + if (finishDeleteListLiveData == null){ + finishDeleteListLiveData = new MutableLiveData<>(); + } + return finishDeleteListLiveData; + } + + public void setFinishDeleteListLiveData(MutableLiveData<List<MeetingBean>> finishDeleteListLiveData) { + this.finishDeleteListLiveData = finishDeleteListLiveData; + } + + /** + * 鏀瑰彉鎺掑簭 + * @param b true 闄嶅簭 false 鍗囧簭 + */ + public void changeOrder(boolean b) { + List<MeetingBean> list = getDataListLiveData().getValue(); + if (list == null || list.isEmpty()){ + return; + } + if (b) { + // 浠庢柊鍒版棫锛宯ull鎺掓渶鍚� + list.sort((o1, o2) -> { + String happenTime1 = o1.getHappenTime(); + String happenTime2 = o2.getHappenTime(); + if (TextUtils.isEmpty(happenTime1) && TextUtils.isEmpty(happenTime2)) { + return 0; + } else if (TextUtils.isEmpty(happenTime1)) { + return 1; + } else if (TextUtils.isEmpty(happenTime2)) { + return -1; + } else { + Date date1 = Utils.parseDate(happenTime1); + Date date2 = Utils.parseDate(happenTime2); + if (date1 != null && date2 != null) { + return date2.compareTo(date1); + } + return 0; + } + }); + } else { + // 浠庢棫鍒版柊锛宯ull鎺掓渶鍓� + list.sort((o1, o2) -> { + String happenTime1 = o1.getHappenTime(); + String happenTime2 = o2.getHappenTime(); + if (TextUtils.isEmpty(happenTime1) && TextUtils.isEmpty(happenTime2)) { + return 0; + } else if (TextUtils.isEmpty(happenTime1)) { + return -1; + } else if (TextUtils.isEmpty(happenTime2)) { + return 1; + } else { + Date date1 = Utils.parseDate(happenTime1); + Date date2 = Utils.parseDate(happenTime2); + if (date1 != null && date2 != null) { + return date1.compareTo(date2); + } + return 0; + } + }); + } + getDataListLiveData().setValue(list); + } + + /** + * 鏈鏁版嵁 缃《 + */ + public void ownTop(){ + List<MeetingBean> list = getDataListLiveData().getValue(); + if (list == null || list.isEmpty()){ + return; + } + //鏍规嵁ownData鍊间负1鐨� 鏀惧埌鍓嶉潰 + list.sort((o1, o2) -> { + if (o1.getOwnData() == 1 && o2.getOwnData() == 0) { + return -1; + } else if (o1.getOwnData() == 0 && o2.getOwnData() == 1) { + return 1; + } + return 0; + }); + getDataListLiveData().setValue(list); + } +} diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingDetailActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingDetailActivity.java new file mode 100644 index 0000000..7a23b9d --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingDetailActivity.java @@ -0,0 +1,359 @@ +package com.application.zhangshi_app_android.ui.function; + +import android.app.Activity; +import android.content.ClipData; +import android.content.Intent; +import android.net.Uri; +import android.view.View; +import android.widget.PopupWindow; + +import androidx.activity.result.ActivityResult; +import androidx.activity.result.ActivityResultCallback; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; +import androidx.lifecycle.MutableLiveData; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.android.app_base.base.BaseConfig; +import com.android.app_base.base.adapter.BaseRVAdapter; +import com.android.app_base.base.dialog.BaseDialog; +import com.android.app_base.base.dialog.WaitDialog; +import com.android.app_base.manager.UserManager; +import com.android.app_base.utils.GetFilePathFromUri; +import com.android.app_base.utils.ScreenSizeUtils; +import com.android.app_base.utils.Utils; +import com.application.zhangshi_app_android.BR; +import com.application.zhangshi_app_android.R; +import com.application.zhangshi_app_android.adapter.ElectronicFileAddAdapter; +import com.application.zhangshi_app_android.bean.MeetingBean; +import com.application.zhangshi_app_android.databinding.ActivityMeetingDetailBinding; +import com.application.zhangshi_app_android.ui.DLBaseActivity; +import com.github.gzuliyujiang.wheelpicker.DatePicker; +import com.github.gzuliyujiang.wheelpicker.OptionPicker; +import com.github.gzuliyujiang.wheelpicker.TimePicker; +import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener; +import com.github.gzuliyujiang.wheelpicker.contract.OnOptionPickedListener; +import com.github.gzuliyujiang.wheelpicker.contract.OnTimePickedListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.interfaces.OnResultCallbackListener; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Locale; + + +/** + * @author Gss + * @date 2023.03.25. 16:00 + * @desc 瀹跺ぇ浜嬭 MeetingDetailActivity + */ +public class MeetingDetailActivity extends DLBaseActivity<ActivityMeetingDetailBinding, MeetingDetailActivityViewModel> { + private int type;// 0 鏌ョ湅鍙慨鏀瑰垹闄� 1 鏂板 2 鐩存帴淇敼 + private PopupWindow popupWindow; + private MutableLiveData<MeetingBean> beanLiveData; + private ElectronicFileAddAdapter adapter; + private BaseDialog mWaitDialog; + private ActivityResultLauncher<Intent> activityResultLauncher; + @Override + public int getLayoutId() { + return R.layout.activity_meeting_detail; + } + + @Override + public int getVariableId() { + return BR.viewModel; + } + + @Override + public void initParam() { + type = getIntent().getIntExtra(BaseConfig.EXTRA_TYPE,0); + if (type == 0 || type == 2){ + MeetingBean bean = (MeetingBean) getIntent().getSerializableExtra("bean"); + if (bean !=null){ + viewModel.getBeanLiveData().setValue(bean); + } + } + } + + + + @Override + public void initView() { + adapter = new ElectronicFileAddAdapter(this); + GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3); + binding.rvImage.setLayoutManager(gridLayoutManager); + binding.rvImage.setNestedScrollingEnabled(false); + adapter.setItemAndAddClickListener(new ElectronicFileAddAdapter.OnItemAndAddClickListener() { + @Override + public void onItemClick(View v, int position) { + + } + + @Override + public void onAddClick() { + OptionPicker picker = getOptionPicker(Arrays.asList("鍥剧墖瑙嗛","鍏朵粬鏂囦欢")); + picker.setTitle("閫夋嫨鏂囦欢绫诲瀷"); + picker.setOnOptionPickedListener(new OnOptionPickedListener() { + @Override + public void onOptionPicked(int position, Object item) { + if (item.equals("鍥剧墖瑙嗛")) { + UserManager.getInstance().selectImage(getSelfActivity(), 0,9, new OnResultCallbackListener<LocalMedia>() { + @Override + public void onResult(ArrayList<LocalMedia> result) { + if (result.size() == 0) return; + for (LocalMedia media : result) { + String path = media.getRealPath(); + if (path!=null){ + viewModel.addUploadFile(path); + MeetingBean bean = viewModel.getBeanLiveData().getValue(); + if (bean !=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + urlList.add(path); + bean.setUrl(Utils.appendList2String(urlList,",")); + } + viewModel.getBeanLiveData().setValue(bean); + } + } + } + @Override + public void onCancel() { + + } + }); + }else { + Intent intent = new Intent(Intent.ACTION_GET_CONTENT); +// Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); + intent.setType("*/*"); // 闄愬埗鏂囦欢绫诲瀷 + intent.addCategory(Intent.CATEGORY_OPENABLE); // 娣诲姞 CATEGORY_OPENABLE 鍒嗙被,鍛婅瘔绯荤粺瑕侀�夋嫨鐨勫唴瀹瑰彲浠ヨ鎵撳紑锛岃繖鏍风郴缁熶細杩囨护鎺変笉鑳借搴旂敤鎵撳紑鐨勬枃浠讹紝浠ユ彁渚涙洿濂界殑鐢ㄦ埛浣撻獙銆� + intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); // 鍏佽澶氶�� + activityResultLauncher.launch(intent); + } + } + }); + picker.show(); + + } + }); + adapter.setOnChildClickListener(R.id.iv_delete, new BaseRVAdapter.OnChildClickListener() { + @Override + public void onChildClick(RecyclerView recyclerView, View childView, int position) { + MeetingBean bean = viewModel.getBeanLiveData().getValue(); + if (bean !=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + urlList.remove(adapter.getItem(position)); + bean.setUrl(Utils.appendList2String(urlList,",")); + } + adapter.removeItem(position); + viewModel.getBeanLiveData().setValue(bean); + } + }); + binding.rvImage.setAdapter(adapter); + if (type == 1){ + viewModel.getTypeLiveData().setValue(true); + binding.titleBar.setTitle("鏂板瀹跺ぇ浜嬭"); + binding.ivOperate.setOnClickListener(v -> { + viewModel.add(); + }); + }else if (type == 0){ + popupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_delete,null)); + popupWindow.getContentView().findViewById(R.id.tv_modify).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + viewModel.getTypeLiveData().postValue(true); + popupWindow.dismiss(); + } + }); + viewModel.getTypeLiveData().postValue(false); + }else if (type == 2){ + viewModel.getTypeLiveData().postValue(true); + + } + + + + binding.etDate1.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + DatePicker picker = getDatePicker(); + picker.setTitle("閫夋嫨鏃堕棿"); + picker.setOnDatePickedListener(new OnDatePickedListener() { + @Override + public void onDatePicked(int year, int month, int day) { + String date = String.format(Locale.CHINA, "%d-%02d-%02d", year, month, day); + binding.etDate1.setText(date); + } + }); + picker.show(); + } + }); + + binding.etDate2.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + DatePicker picker = getDatePicker(); + picker.setTitle("閫夋嫨鏃堕棿"); + picker.setOnDatePickedListener(new OnDatePickedListener() { + @Override + public void onDatePicked(int year, int month, int day) { + String date = String.format(Locale.CHINA, "%d-%02d-%02d", year, month, day); + binding.etDate2.setText(date); + } + }); + picker.show(); + } + }); + + binding.etTime1.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + TimePicker picker = getTimePicker(); + picker.setTitle("閫夋嫨鏃堕棿"); + picker.setOnTimePickedListener(new OnTimePickedListener() { + + @Override + + public void onTimePicked(int hour, int Minute,int second) { +// second = '0'; + String date = String.format(Locale.CHINA, "%d:%02d:%02d",hour,Minute,second); + binding.etTime1.setText(date); + } + }); + picker.show(); + } + }); + + + + + binding.etTime2.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + TimePicker picker = getTimePicker(); + picker.setTitle("閫夋嫨鏃堕棿"); + picker.setOnTimePickedListener(new OnTimePickedListener() { + @Override + public void onTimePicked(int hour, int Minute, int second) { + String date = String.format(Locale.CHINA, "%d:%02d:%02d",hour,Minute,second ); + binding.etTime2.setText(date); + } + }); + picker.show(); + } + }); + + + + + + + activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() { + @Override + public void onActivityResult(ActivityResult result) { + if (result.getResultCode() == Activity.RESULT_OK) { + if (result.getData() == null){ + return; + } + // 鑾峰彇閫変腑鐨勫涓枃浠剁殑 URI + ClipData clipData = result.getData().getClipData(); + if (clipData != null) { + int itemCount = clipData.getItemCount(); + for (int i = 0; i < itemCount; i++) { + Uri uri = clipData.getItemAt(i).getUri(); + // 浣跨敤閫変腑鐨勬枃浠� URI 杩涜鍚庣画鎿嶄綔锛屾瘮濡傝鍙栨枃浠跺唴瀹圭瓑 + String path = GetFilePathFromUri.getFileAbsolutePath(getSelfActivity(),uri); + if (path!=null){ + viewModel.addUploadFile(path); + MeetingBean bean = viewModel.getBeanLiveData().getValue(); + if (bean !=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + urlList.add(path); + bean.setUrl(Utils.appendList2String(urlList,",")); + } + viewModel.getBeanLiveData().setValue(bean); + } + } + }else { + // 鑾峰彇閫変腑鐨勫崟涓枃浠剁殑 URI + Uri selectedFileUri = result.getData().getData(); + String path = GetFilePathFromUri.getFileAbsolutePath(getSelfActivity(),selectedFileUri); + if (path!=null){ + viewModel.addUploadFile(path); + MeetingBean bean = viewModel.getBeanLiveData().getValue(); + if (bean !=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + urlList.add(path); + bean.setUrl(Utils.appendList2String(urlList,",")); + } + viewModel.getBeanLiveData().setValue(bean); + } + } + } + } + }); + + } + + @Override + public void initData() { +// beanLiveData.setValue=MeetingBean; + + } + + + @Override + public void initLiveDataObserve() { + viewModel.getBeanLiveData().observe(this, bean -> { + if (bean!=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + adapter.setData(urlList); + } + }); + viewModel.getTypeLiveData().observe(this,operateType -> { + if (operateType){ + if (type == 1) { + binding.ivOperate.setOnClickListener(v -> { + viewModel.add(); + }); + }else { + binding.ivOperate.setOnClickListener(v -> { + viewModel.update(); + }); + } + setIsEdited(true); + }else { + binding.ivOperate.setOnClickListener(v -> { + popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); + }); + setIsEdited(false); + } + }); + } + + public void setIsEdited(boolean isEdited){ + adapter.setIsEdited(isEdited); + } + + @Override + protected void dialogLoading() { + if (mWaitDialog == null) { + mWaitDialog = new WaitDialog.Builder(this) + // 娑堟伅鏂囨湰鍙互涓嶇敤濉啓 + .setMessage("姝e湪涓婁紶") + .create(); + } + if (!mWaitDialog.isShowing()) { + mWaitDialog.show(); + } + } + + @Override + protected void dialogDismiss() { + if (mWaitDialog != null && mWaitDialog.isShowing()) { + mWaitDialog.dismiss(); + mWaitDialog = null; + } + } + +} diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingDetailActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingDetailActivityViewModel.java new file mode 100644 index 0000000..6b97b0a --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingDetailActivityViewModel.java @@ -0,0 +1,362 @@ +package com.application.zhangshi_app_android.ui.function; + +import static com.android.app_base.base.BaseConfig.CODE_SUCCESS; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.MutableLiveData; + +import com.android.app_base.base.StateViewEnum; +import com.android.app_base.base.viewmodel.BaseViewModel; +import com.android.app_base.http.ResultData; +import com.android.app_base.manager.AppManager; +import com.android.app_base.utils.RxUtils; +import com.android.app_base.utils.rxbus.RxBus; +import com.application.zhangshi_app_android.bean.MeetingBean; +import com.application.zhangshi_app_android.bean.UploadFileResponseBean; +import com.application.zhangshi_app_android.data.DataRepository; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import io.reactivex.Observable; +import io.reactivex.ObservableSource; +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Action; +import io.reactivex.functions.Consumer; +import io.reactivex.functions.Function; +import okhttp3.MediaType; +import okhttp3.MultipartBody; +import okhttp3.RequestBody; + +public class MeetingDetailActivityViewModel extends BaseViewModel<DataRepository> { + + private MutableLiveData<MeetingBean> beanLiveData; + private MutableLiveData<Boolean> typeLiveData;//true 缂栬緫鐘舵�� false 灞曠ず鐘舵�� + private final List<String> uploadFileList = new ArrayList<>();//闇�瑕佷笂浼犵殑鏂囦欢鍒楄〃 + public MeetingDetailActivityViewModel(@NonNull Application application) { + super(application); + } + + @Override + protected DataRepository initModel() { + return DataRepository.getInstance(); + } + + /** + * 澧炲姞瀹跺ぇ浜嬭 + */ + public void add() { + if (uploadFileList.size() > 0) { + List<Observable<String>> observables = new ArrayList<>(); + for (String path : uploadFileList) { + File file = new File(path); + RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); + MultipartBody.Part body = MultipartBody.Part.createFormData("uploadFile", file.getName(), requestBody); + Observable<String> uploadObservable = model.uploadFile(body) + .flatMap(new Function<ResultData<UploadFileResponseBean>, ObservableSource<String>>() { + @Override + public ObservableSource<String> apply(ResultData<UploadFileResponseBean> resultData) throws Exception { + if (resultData.getCode() == CODE_SUCCESS) { + MeetingBean bean = getBeanLiveData().getValue(); + if (bean != null) { + String urls = bean.getUrl(); + //鏇挎崲鍥剧墖鍦板潃 + urls = urls.replace(path, resultData.getData().getUrl()); + bean.setUrl(urls); + getBeanLiveData().postValue(bean); + } + return Observable.just(path); + } else { + return Observable.error(new Exception(resultData.getMsg())); + } + } + }); + + observables.add(uploadObservable); + } + Observable.zip(observables, result -> result) + .flatMap(new Function<Object[], Observable<ResultData<String>>>() { + @Override + public Observable<ResultData<String>> apply(Object[] objects) throws Exception { + //绉婚櫎宸茬粡涓婁紶鐨勬枃浠� + //鎶妎bjects鏁扮粍杞崲鎴恖ist锛岀劧鍚庣Щ闄� + for (Object object : objects) { + uploadFileList.remove((String) object); + } + return model.addMeeting(beanLiveData.getValue()); + } + }) + .doOnSubscribe(new Consumer<Disposable>() { + @Override + public void accept(Disposable disposable) throws Exception { + changeStateView(StateViewEnum.DIALOG_LOADING); + } + }) + .doFinally(new Action() { + @Override + public void run() throws Exception { + changeStateView(StateViewEnum.DIALOG_DISMISS); + } + }) + .compose(RxUtils.schedulersTransformer()) + .subscribe(new Observer<ResultData<String>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<String> stringResultData) { + if (stringResultData.getCode() == CODE_SUCCESS) { + AppManager.getAppManager().finishCurrentActivity(); + RxBus.getInstance().post(beanLiveData.getValue()); + messageLiveData.postValue("娣诲姞鎴愬姛"); + } else { + messageLiveData.postValue(stringResultData.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + }else { + model.addMeeting(beanLiveData.getValue()) + .compose(RxUtils.schedulersTransformer()) + .subscribe(new Observer<ResultData<String>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<String> stringResultData) { + if (stringResultData.getCode() == CODE_SUCCESS) { + AppManager.getAppManager().finishCurrentActivity(); + RxBus.getInstance().post(beanLiveData.getValue()); + messageLiveData.postValue("娣诲姞鎴愬姛"); + } else { + messageLiveData.postValue(stringResultData.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + } + /** + * 鍒犻櫎瀹跺ぇ浜嬭 + */ + public void delete() { + model.deleteMeeting(String.valueOf(beanLiveData.getValue().getId())) + .compose(RxUtils.schedulersTransformer()) + .subscribe(new Observer<ResultData<String>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<String> stringResultData) { + if (stringResultData.getCode() == CODE_SUCCESS){ + AppManager.getAppManager().finishCurrentActivity(); + RxBus.getInstance().post(beanLiveData.getValue()); + messageLiveData.postValue("鍒犻櫎鎴愬姛"); + }else { + messageLiveData.postValue(stringResultData.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + /** + * 缂栬緫瀹跺ぇ浜嬭 + */ + public void update() { + if (uploadFileList.size() > 0){ + List<Observable<String>> observables = new ArrayList<>(); + for (String path : uploadFileList) { + File file = new File(path); + RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); + MultipartBody.Part body = MultipartBody.Part.createFormData("uploadFile", file.getName(), requestBody); + Observable<String> uploadObservable = model.uploadFile(body) + .flatMap(new Function<ResultData<UploadFileResponseBean>, ObservableSource<String>>() { + @Override + public ObservableSource<String> apply(ResultData<UploadFileResponseBean> resultData) throws Exception { + if (resultData.getCode() == CODE_SUCCESS){ + MeetingBean bean = getBeanLiveData().getValue(); + if (bean != null){ + String urls = bean.getUrl(); + //鏇挎崲鍥剧墖鍦板潃 + urls = urls.replace(path,resultData.getData().getUrl()); + bean.setUrl(urls); + getBeanLiveData().postValue(bean); + } + return Observable.just(path); + }else { + return Observable.error(new Exception(resultData.getMsg())); + } + } + }); + + observables.add(uploadObservable); + } + Observable.zip(observables,result -> result) + .flatMap(new Function<Object[], Observable<ResultData<String>>>() { + @Override + public Observable<ResultData<String>> apply(Object[] objects) throws Exception { + //绉婚櫎宸茬粡涓婁紶鐨勬枃浠� + //鎶妎bjects鏁扮粍杞崲鎴恖ist锛岀劧鍚庣Щ闄� + for (Object object : objects) { + uploadFileList.remove((String) object); + } + return model.updateMeeting(beanLiveData.getValue()); + } + }) + .doOnSubscribe(new Consumer<Disposable>() { + @Override + public void accept(Disposable disposable) throws Exception { + changeStateView(StateViewEnum.DIALOG_LOADING); + } + }) + .doFinally(new Action() { + @Override + public void run() throws Exception { + changeStateView(StateViewEnum.DIALOG_DISMISS); + } + }) + .compose(RxUtils.schedulersTransformer()) + .subscribe(new Observer<ResultData<String>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<String> stringResultData) { + if (stringResultData.getCode() == CODE_SUCCESS){ + AppManager.getAppManager().finishCurrentActivity(); + RxBus.getInstance().post(beanLiveData.getValue()); + messageLiveData.postValue("淇敼鎴愬姛"); + }else { + messageLiveData.postValue(stringResultData.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + }else { + model.updateMeeting(beanLiveData.getValue()) + .compose(RxUtils.schedulersTransformer()) + .subscribe(new Observer<ResultData<String>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<String> stringResultData) { + if (stringResultData.getCode() == CODE_SUCCESS){ + AppManager.getAppManager().finishCurrentActivity(); + RxBus.getInstance().post(beanLiveData.getValue()); + messageLiveData.postValue("淇敼鎴愬姛"); + }else { + messageLiveData.postValue(stringResultData.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + + + + + + + + + + + + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + + } + + public MutableLiveData<MeetingBean> getBeanLiveData() { + if (beanLiveData == null){ + beanLiveData = new MutableLiveData<>(); + } + if (beanLiveData.getValue() == null){ + beanLiveData.setValue(new MeetingBean()); + } + return beanLiveData; + } + + public void setBeanLiveData(MutableLiveData<MeetingBean> beanLiveData) { + this.beanLiveData = beanLiveData; + } + + public MutableLiveData<Boolean> getTypeLiveData() { + if (typeLiveData == null){ + typeLiveData = new MutableLiveData<>(); + } + return typeLiveData; + } + + public void setTypeLiveData(MutableLiveData<Boolean> typeLiveData) { + this.typeLiveData = typeLiveData; + } + + public List<String> getUploadFileList() { + return uploadFileList; + } + + public void addUploadFile(String url) { + uploadFileList.add(url); + } + + +} diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaActivity.java new file mode 100644 index 0000000..9068a5c --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaActivity.java @@ -0,0 +1,389 @@ +package com.application.zhangshi_app_android.ui.function; + +import android.view.View; +import android.widget.PopupWindow; + +import androidx.lifecycle.Observer; + +import com.android.app_base.utils.ScreenSizeUtils; +import com.android.app_base.utils.rxbus.RxBus; +import com.android.app_base.widget.LinearItemDecoration; +import com.application.zhangshi_app_android.BR; +import com.application.zhangshi_app_android.R; +import com.application.zhangshi_app_android.adapter.MeetingStaRvAdapter; +import com.application.zhangshi_app_android.bean.MeetingStaBean; +import com.application.zhangshi_app_android.databinding.ActivityMeetingStaBinding; +import com.application.zhangshi_app_android.ui.DLBaseActivity; + +import java.util.List; + +/** + * @author Ljj + * @date 2023.03.18. 10:00 + * @desc 瀹跺ぇ浜嬭 Activity + */ +public class MeetingStaActivity extends DLBaseActivity<ActivityMeetingStaBinding,MeetingStaActivityViewModel>{ + + MeetingStaRvAdapter adapter; + private PopupWindow mOperatePopupWindow; + private boolean isSearchLayoutVisible; + private int dateType; //0:寮�濮嬫椂闂� 1:缁撴潫鏃堕棿 + + @Override + public int getLayoutId() { + return R.layout.activity_meeting_sta; + } + + + + @Override + public int getVariableId() { + return BR.viewModel; + } + + @Override + public void initParam() { + + } + + + + + @Override + public void initView() { + //涓嬫媺鍒锋柊甯冨眬 + binding.refreshLayout.setEnableRefresh(false); + binding.refreshLayout.setEnableLoadMore(true); + binding.refreshLayout.setEnableOverScrollDrag(true); + binding.refreshLayout.setOnLoadMoreListener(refreshLayout -> { + viewModel.getMoreMeeting(); + }); + //recyclerView閫傞厤鍣� + adapter = new MeetingStaRvAdapter(this,viewModel); + LinearItemDecoration itemDecoration = new LinearItemDecoration(); + itemDecoration.setBottomSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_12)); + itemDecoration.setHorizontalSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20)); + binding.recyclerView.addItemDecoration(itemDecoration); + binding.recyclerView.setAdapter(adapter); + //鍙充笂瑙掓搷浣滃脊绐� + mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate,null)); + setOnClickListener( +// mOperatePopupWindow.getContentView().findViewById(R.id.tv_add), +// mOperatePopupWindow.getContentView().findViewById(R.id.tv_select), + mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old), + mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new), + mOperatePopupWindow.getContentView().findViewById(R.id.tv_own_top) + ); +// //鐐瑰嚮鏀惧ぇ闀滄寜閽樉绀哄嚭鎼滅储妗� +// binding.ivSearchDefault.setOnClickListener(v -> { +// binding.layoutSearch.setVisibility(View.VISIBLE); +// binding.layoutDefault.setVisibility(View.GONE); +// }); +// //鐐瑰嚮鎼滅储妗嗚彍鍗曚笅鎷夊嚭 鎼滅储鍙傛暟 +// binding.ivSearchType.setOnClickListener(v -> { +// if (!isSearchLayoutVisible){ +// binding.layoutSearchParameter.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); +// int targetHeight = binding.layoutSearchParameter.getMeasuredHeight(); +// Utils.pullCollapse(binding.containerSearchParameter,0,targetHeight); +// isSearchLayoutVisible = true; +// } +// }); +// //鎼滅储鍙傛暟layout娣诲姞绌虹偣鍑讳簨浠讹紝闃叉鐐瑰嚮瀹冨唴閮╲iew鏃跺畠鍚庨潰鐨剅ecycler杩樿兘鍝嶅簲鐐瑰嚮浜嬩欢 +// binding.layoutSearchParameter.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// } +// }); +// //鐐瑰嚮鎼滅储鎸夐挳杩涜鎼滅储 +// binding.ivSearch.setOnClickListener(v -> { +// viewModel.getMeeting(); +// binding.layoutSearch.setVisibility(View.GONE); +// binding.layoutDefault.setVisibility(View.VISIBLE); +// binding.tvTitle.setText("鎼滅储缁撴灉"); +// hideSoftKeyboard(); +// }); + //鐐瑰嚮娣诲姞鎸夐挳璺宠浆鍒板垱寤哄澶т簨璁伴〉闈� +// binding.fabAdd.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// AppManager.getAppManager().startActivity(new Intent(getSelfActivity(), MeetingStaDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1)); +// } +// }); + +// binding.etStartTime.addTextChangedListener(new TextWatcher() { +// @Override +// public void beforeTextChanged(CharSequence s, int start, int count, int after) { +// } +// +// @Override +// public void onTextChanged(CharSequence s, int start, int before, int count) { +// if (!TextUtils.isEmpty(s)) { +// binding.ivTimeClear.setVisibility(View.VISIBLE); +// } else { +// if (TextUtils.isEmpty(binding.etEndTime.getText().toString())) { +// binding.ivTimeClear.setVisibility(View.INVISIBLE); +// } +// } +// } +// +// @Override +// public void afterTextChanged(Editable s) { +// +// } +// }); +// binding.etEndTime.addTextChangedListener(new TextWatcher() { +// @Override +// public void beforeTextChanged(CharSequence s, int start, int count, int after) { +// } +// +// @Override +// public void onTextChanged(CharSequence s, int start, int before, int count) { +// if (!TextUtils.isEmpty(s)) { +// binding.ivTimeClear.setVisibility(View.VISIBLE); +// } else { +// if (TextUtils.isEmpty(binding.etStartTime.getText().toString())) { +// binding.ivTimeClear.setVisibility(View.INVISIBLE); +// } +// } } +// +// @Override +// public void afterTextChanged(Editable s) { +// +// } +// }); +// binding.etStartTime.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// hideSoftKeyboard(); +// DatePicker datePicker = getDatePicker(); +// datePicker.setTitle("璇烽�夋嫨寮�濮嬫椂闂�"); +// datePicker.setOnDatePickedListener(new OnDatePickedListener() { +// @Override +// public void onDatePicked(int year, int month, int day) { +// //浠yyy-MM-dd鐨勬牸寮忔樉绀猴紝鏈堟棩灏忎簬10鏃跺墠闈㈣ˉ0 +// binding.etStartTime.setText(String.format("%d-%02d-%02d", year, month, day)); +// if (binding.etEndTime.getText().toString().isEmpty()){ +// binding.etEndTime.setText(String.format("%d-%02d-%02d", year, month, day)); +// }else { +// //姣旇緝寮�濮嬫椂闂村拰缁撴潫鏃堕棿鐨勫ぇ灏� +// String startTime = binding.etStartTime.getText().toString(); +// String endTime = binding.etEndTime.getText().toString(); +// if (Utils.compareDate(startTime,endTime) > 0){ +// //浜ゆ崲 +// binding.etStartTime.setText(endTime); +// binding.etEndTime.setText(startTime); +// } +// } +// } +// }); +// datePicker.show(); +// +// } +// }); +// binding.etEndTime.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// hideSoftKeyboard(); +// DatePicker datePicker = getDatePicker(); +// datePicker.setTitle("璇烽�夋嫨缁撴潫鏃堕棿"); +// datePicker.setOnDatePickedListener(new OnDatePickedListener() { +// @Override +// public void onDatePicked(int year, int month, int day) { +// binding.etEndTime.setText(String.format("%d-%02d-%02d", year, month, day)); +// if (binding.etStartTime.getText().toString().isEmpty()){ +// binding.etStartTime.setText(String.format("%d-%02d-%02d", year, month, day)); +// }else { +// //姣旇緝寮�濮嬫椂闂村拰缁撴潫鏃堕棿鐨勫ぇ灏� +// String startTime = binding.etStartTime.getText().toString(); +// String endTime = binding.etEndTime.getText().toString(); +// if (Utils.compareDate(startTime,endTime) > 0){ +// //浜ゆ崲 +// binding.etStartTime.setText(endTime); +// binding.etEndTime.setText(startTime); +// } +// } +// } +// }); +// datePicker.show(); +// } +// }); +// binding.ivTimeClear.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// binding.etStartTime.setText(""); +// binding.etEndTime.setText(""); +// } +// }); + } + + + + @Override + public void initData() { + viewModel.getMeetingSta(); + + } + +// @Override +// public boolean dispatchTouchEvent(MotionEvent event) { +// float x = event.getX(); +// float y = event.getY(); +// if (isSearchLayoutVisible){ +// if (!Utils.isPointInsideView(x, y, binding.layoutSearchParameter)) { +// Utils.pullCollapse(binding.containerSearchParameter, binding.layoutSearchParameter.getMeasuredHeight(),0); +// isSearchLayoutVisible = false; +// return true; +// +// } +// +// } +// return super.dispatchTouchEvent(event); +// +// +// } + + + + + + + + + + @Override + public void initLiveDataObserve() { + viewModel.getDataListLiveData().observe(this, new Observer<List<MeetingStaBean>>() { + @Override + public void onChanged(List<MeetingStaBean> meetingstaBeans) { + adapter.setData(meetingstaBeans); + } + }); + viewModel.getCheckListLiveData().observe(this, new Observer<List<MeetingStaBean>>() { + @Override + public void onChanged(List<MeetingStaBean> meetingStaBeans) { + if (viewModel.getOperateTypeLiveData().getValue() == 0){ + return; + } + if (meetingStaBeans.isEmpty()){ + viewModel.getOperateTypeLiveData().setValue(1); + }else{ + viewModel.getOperateTypeLiveData().setValue(2); + } + } + }); + viewModel.getMoreListLiveData().observe(this, new Observer<List<MeetingStaBean>>() { + @Override + public void onChanged(List<MeetingStaBean> meetingStaBeans) { + adapter.addData(meetingStaBeans); + } + }); + viewModel.getOperateTypeLiveData().observe(this, integer -> { + if (integer == 0){ + binding.ivOperate.setBackgroundResource(R.drawable.ic_operate); + binding.ivOperate.setOnClickListener(v -> { + mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); + }); + adapter.setCheckable(false); + }else if (integer == 1){ + binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish); + binding.ivOperate.setOnClickListener(v -> { + viewModel.getOperateTypeLiveData().postValue(0); + }); + adapter.setCheckable(true); + } +// else if (integer == 2){ +// binding.ivOperate.setBackgroundResource(R.drawable.ic_delete_white); +// binding.ivOperate.setOnClickListener(v -> { +// new UIDialog.Builder(this) +// .setTitle("鎮ㄧ‘瀹氳鍒犻櫎閫変腑鐨勯」鐩悧") +// .setContent("椤圭洰鍒犻櫎鍚庡皢鏃犳硶鎭㈠") +// .setConfirm("纭畾") +// .setCancel("鍙栨秷") +// .setListener(new UIDialog.OnListener() { +// @Override +// public void onConfirm(BaseDialog dialog) { +// viewModel.deleteCheckList(); +// } +// }) +// .show(); +// }); +// } + }); + viewModel.getFinishDeleteListLiveData().observe(this, beans -> { + for (MeetingStaBean bean : beans) { + adapter.removeItem(bean); + } + }); + //瑙傚療瀹跺ぇ浜嬭鏁版嵁鐨勫彉鍖栵紝鏈夊彉鍖栧寘鎷坊鍔犮�佷慨鏀广�佸垹闄ら兘浼氬彂閫佹秷鎭紝鎺ユ敹鍒版秷鎭悗閲嶆柊鑾峰彇鏁版嵁 + RxBus.getInstance().toObservable(this, MeetingStaBean.class) + .subscribe(bean -> { + viewModel.getMeetingSta(); + }); + } + + + @Override + protected void dataNull() { + super.dataNull(); + binding.layoutDataNull.setVisibility(View.VISIBLE); + binding.refreshLayout.setVisibility(View.GONE); + + } + + @Override + protected void dataFinish() { + super.dataFinish(); + binding.refreshLayout.finishLoadMore(); + } + + @Override + protected void hide() { + super.hide(); + binding.layoutDataNull.setVisibility(View.GONE); + binding.refreshLayout.setVisibility(View.VISIBLE); + binding.refreshLayout.finishLoadMore(); + } + +// @Override +// public void onClick(View v) { +// int id = v.getId(); +// if (id == R.id.tv_add){ +// AppManager.getAppManager().startActivity(new Intent(this, MeetingDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1)); +// }else if (id == R.id.tv_select){ +// viewModel.getOperateTypeLiveData().postValue(1); +// mOperatePopupWindow.dismiss(); +// } else if (id == R.id.tv_from_new_to_old) { +// viewModel.changeOrder(true); +// mOperatePopupWindow.dismiss(); +// } else if (id == R.id.tv_from_old_to_new) { +// viewModel.changeOrder(false); +// mOperatePopupWindow.dismiss(); +// } else if (id == R.id.tv_own_top) { +// viewModel.ownTop(); +// mOperatePopupWindow.dismiss(); +// } +// } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (mOperatePopupWindow != null){ + mOperatePopupWindow.dismiss(); + } + + } + +// private static final String TAG = "Meeting123"; +// @Override +// protected void onCreate(Bundle savedInstanceState){ +// super.onCreate(savedInstanceState); +// setContentView(R.layout.activity_meeting); +// MeetingBean data = new MeetingBean(); +// String b = String.valueOf(data.getDate1()); +// String c = String.valueOf(data.getTime1()); +// String d = String.valueOf(data.getStartTime()); +// Log.d(TAG,b+c+d); +// } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaActivityViewModel.java new file mode 100644 index 0000000..b4da281 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaActivityViewModel.java @@ -0,0 +1,399 @@ +package com.application.zhangshi_app_android.ui.function; + +import static com.android.app_base.base.BaseConfig.CODE_SUCCESS; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.android.app_base.base.StateViewEnum; +import com.android.app_base.base.viewmodel.BaseViewModel; +import com.android.app_base.http.ResultData; +import com.android.app_base.utils.RxUtils; +import com.application.zhangshi_app_android.bean.MeetingStaBean; +import com.application.zhangshi_app_android.bean.MeetingStaRequestBean; +import com.application.zhangshi_app_android.bean.PageResponseBean; +import com.application.zhangshi_app_android.data.DataRepository; + +import java.util.ArrayList; +import java.util.List; + +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Action; + +/** + * @author Ljj + * @date 2023.03.18. 10:00 + * @desc 瀹跺ぇ浜嬭 viewmodel + */ +public class MeetingStaActivityViewModel extends BaseViewModel<DataRepository> { + + private MutableLiveData<List<MeetingStaBean>> checkListLiveData;//閫変腑鐨勬暟鎹� + private MutableLiveData<List<MeetingStaBean>> dataListLiveData;//鎵�鏈夋暟鎹� + private MutableLiveData<Integer> operateTypeLiveData;//鍙充笂瑙掓搷浣滄 鎿嶄綔绫诲瀷 0 寮瑰嚭閫夋嫨鎿嶄綔 1.瀹屾垚 2.鍒犻櫎 + private MutableLiveData<MeetingStaRequestBean> requestBeanLiveData;//璇锋眰鍙傛暟 + private MutableLiveData<List<MeetingStaBean>> moreListLiveData;//涓嬫媺鍔犺浇鏁版嵁 + private MutableLiveData<List<MeetingStaBean>> finishDeleteListLiveData;//宸茬粡瀹屾垚鍒犻櫎鐨勬暟鎹紝鐢ㄤ簬adapter鐨剅emove鎿嶄綔 + + //鍒涘缓骞跺垵濮嬪寲ViewModel + public MeetingStaActivityViewModel(@NonNull Application application) { + super(application); + } + + + //DataRepository 鏄竴涓暟鎹粨搴撶被锛岃礋璐g鐞嗘暟鎹殑鑾峰彇鍜屽瓨鍌紝 + // 璇ユ柟娉曢�氳繃璋冪敤 DataRepository.getInstance() 鏉ヨ幏鍙� DataRepository 鐨勫崟渚嬪疄渚嬶紝骞跺皢鍏惰繑鍥瀖odel銆� + @Override + protected DataRepository initModel() { + return DataRepository.getInstance(); + } + /** + * 鑾峰彇瀹跺ぇ浜� + * 璁� + */ + + + + //getRequestBeanLiveData().getValue() 妫�鏌ヨ姹傛暟鎹殑 LiveData 鏄惁涓虹┖銆� + // 濡傛灉涓虹┖锛屽垯鍒涘缓涓�涓柊鐨凪eetingRequestBean 瀵硅薄锛屽苟灏嗗叾璁剧疆涓� LiveData 鐨勫�硷紝浠ョ‘淇濊姹傛暟鎹笉涓� null銆� + public void getMeetingSta() { + if (getRequestBeanLiveData().getValue() == null){ + getRequestBeanLiveData().setValue(new MeetingStaRequestBean()); + } + //璁剧疆璇锋眰鏁版嵁瀵硅薄鐨勯〉鐮佷负 1锛岃〃绀鸿鑾峰彇绗竴椤电殑鏁版嵁銆� + getRequestBeanLiveData().getValue().setPageNum(1); + + //閫氳繃model(ViewModel 涓殑鏁版嵁浠撳簱瀵硅薄)鍙戣捣缃戠粶璇锋眰锛屽苟灏嗚姹傛暟鎹浆鎹负 Map 绫诲瀷锛屼互渚垮彂閫佺粰鏈嶅姟鍣ㄣ�� + model.getMeetingSta(getRequestBeanLiveData().getValue().toMap()) + + //搴旂敤绾跨▼璋冨害鍣紝纭繚瑙傚療鑰呭湪姝g‘鐨勭嚎绋嬩笂杩愯銆� + .compose(RxUtils.schedulersTransformer()) + + //璁㈤槄杩欎釜缃戠粶璇锋眰鐨勭粨鏋� + .subscribe(new Observer<ResultData<PageResponseBean<MeetingStaBean>>>() { + @Override + + //灏嗚闃呭璞℃坊鍔犲埌 addSubscribe() 涓紝浠ヤ究鍦ㄤ笉鍐嶉渶瑕佹椂鍙栨秷璁㈤槄銆� + //鍒涘缓 Disposable 瀵硅薄鏉ョ鐞嗚闃� + // 浣跨敤 Disposable锛屽彲浠ユ湁鏁堝湴绠$悊寮傛鎿嶄綔鐨勭敓鍛藉懆鏈燂紝纭繚璧勬簮鍦ㄤ笉鍐嶉渶瑕佹椂琚纭噴鏀俱�� + + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + + + @Override + //onNext()澶勭悊鎴愬姛鑾峰彇鏁版嵁鐨勬儏鍐� + public void onNext(ResultData<PageResponseBean<MeetingStaBean>> data) { + if (data.getCode() == CODE_SUCCESS){ + if (data.getData().getData().isEmpty()){ + + //鏇存柊鐣岄潰鐘舵�佷负 StateViewEnum.DATA_NULL + changeStateView(StateViewEnum.DATA_NULL); + }else { + //闅愯棌鐘舵�佽鍥惧苟灏嗘暟鎹垪琛ㄥ彂甯冨埌 dataListLiveData + changeStateView(StateViewEnum.HIDE); + dataListLiveData.postValue(data.getData().getData + + + ()); + } + + //濡傛灉杩斿洖鐨勬暟鎹笉鎴愬姛锛屽垯灏嗘湇鍔″櫒杩斿洖鐨勬秷鎭彂甯冨埌 messageLiveData锛屼互渚块�氱煡鐢ㄦ埛銆� + }else { + messageLiveData.postValue(data.getMsg()); + } + } + + @Override + //onError()澶勭悊鍙戠敓閿欒鐨勬儏鍐碉紝灏嗛敊璇秷鎭彂甯冨埌 messageLiveData銆� + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + /** + * 鍔犺浇鏇村 + */ + public void getMoreMeeting() { + if (getRequestBeanLiveData().getValue() == null){ + getRequestBeanLiveData().setValue(new MeetingStaBean()); + } + getRequestBeanLiveData().getValue().setPageNum(getRequestBeanLiveData().getValue().getPageNum() + 1); + model.getMeetingSta(getRequestBeanLiveData().getValue().toMap()) + .compose(RxUtils.schedulersTransformer()) + .doFinally(new Action() { + @Override + public void run() throws Exception { + changeStateView(StateViewEnum.DATA_FINISH); + } + }) + .subscribe(new Observer<ResultData<PageResponseBean<MeetingStaBean>>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<PageResponseBean<MeetingStaBean>> data) { + if (data.getCode() == CODE_SUCCESS){ + if (data.getData().getData().isEmpty()){ + messageLiveData.postValue("娌℃湁鏇村鏁版嵁浜�"); + }else { + changeStateView(StateViewEnum.HIDE); + moreListLiveData.postValue(data.getData().getData()); + } + }else { + messageLiveData.postValue(data.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + /** + * 鍒犻櫎瀹跺ぇ浜嬭 + */ +// public void deleteCheckList() { +// List<MeetingBean> deleteList = getCheckListLiveData().getValue(); +// if (deleteList == null){ +// return; +// } +// StringBuffer sb = new StringBuffer(); +// deleteList.forEach(MeetingBean -> sb.append(MeetingBean.getId()).append(",")); +// sb.deleteCharAt(sb.length()-1); +// model.deleteMeeting(sb.toString()) +// .compose(RxUtils.schedulersTransformer()) +// .subscribe(new Observer<ResultData<String>>() { +// @Override +// public void onSubscribe(Disposable d) { +// addSubscribe(d); +// } +// +// @Override +// public void onNext(ResultData<String> stringResultData) { +// if (stringResultData.getCode() == CODE_SUCCESS){ +// messageLiveData.postValue("鍒犻櫎鎴愬姛"); +// finishDeleteListLiveData.postValue(checkListLiveData.getValue()); +// getCheckListLiveData().postValue(new ArrayList<>()); +// }else { +// messageLiveData.postValue(stringResultData.getMsg()); +// } +// } +// +// @Override +// public void onError(Throwable e) { +// messageLiveData.postValue(e.getMessage()); +// } +// +// @Override +// public void onComplete() { +// +// } +// }); +// } + /** + * 鍒犻櫎鍗曚釜鏁版嵁 + */ +// public void deleteItem(MeetingBean bean) { +// model.deleteMeeting(String.valueOf(bean.getId())) +// .compose(RxUtils.schedulersTransformer()) +// .subscribe(new Observer<ResultData<String>>() { +// @Override +// public void onSubscribe(Disposable d) { +// addSubscribe(d); +// } +// +// @Override +// public void onNext(ResultData<String> stringResultData) { +// if (stringResultData.getCode() == CODE_SUCCESS){ +// List<MeetingStaBean> list = new ArrayList<>(); +// list.add(bean); +// finishDeleteListLiveData.postValue(list); +// messageLiveData.postValue("鍒犻櫎鎴愬姛"); +// }else { +// messageLiveData.postValue(stringResultData.getMsg()); +// } +// } +// +// @Override +// public void onError(Throwable e) { +// messageLiveData.postValue(e.getMessage()); +// } +// +// @Override +// public void onComplete() { +// +// } +// }); +// } + + public MutableLiveData<List<MeetingStaBean>> getCheckListLiveData() { + if (checkListLiveData==null){ + checkListLiveData = new MutableLiveData<>(); + checkListLiveData.postValue(new ArrayList<>()); + } + if (checkListLiveData.getValue() == null){ + checkListLiveData.postValue(new ArrayList<>()); + } + return checkListLiveData; + } + + public void setCheckListLiveData(MutableLiveData<List<MeetingStaBean>> checkListLiveData) { + this.checkListLiveData = checkListLiveData; + } + + @NonNull //NonNull 鐢ㄤ簬鏍囪鏂规硶鍙傛暟銆佽繑鍥炲�笺�佸瓧娈垫垨鏂规硶鐨勮繑鍥炵被鍨嬩笉鍏佽涓� null + + //getRequestBeanLiveData() 鑾峰彇涓�涓寘鍚玀eetingRequestBean 鏁版嵁鐨� MutableLiveData 瀵硅薄銆� + public MutableLiveData<MeetingStaRequestBean> getRequestBeanLiveData() { + if (requestBeanLiveData == null){ + requestBeanLiveData = new MutableLiveData<>(); + } + if (requestBeanLiveData.getValue() == null){ + requestBeanLiveData.setValue(new MeetingStaRequestBean()); + } + return requestBeanLiveData; + } + + public void setRequestBeanLiveData(MutableLiveData<MeetingStaRequestBean> requestBeanLiveData) { + this.requestBeanLiveData = requestBeanLiveData; + } + + public MutableLiveData<List<MeetingStaBean>> getDataListLiveData() { + if (dataListLiveData == null){ + dataListLiveData = new MutableLiveData<>(); + } + return dataListLiveData; + } + + public void setDataListLiveData(MutableLiveData<List<MeetingStaBean>> dataListLiveData) { + this.dataListLiveData = dataListLiveData; + } + + @NonNull + public MutableLiveData<List<MeetingStaBean>> getMoreListLiveData() { + if (moreListLiveData == null){ + moreListLiveData = new MutableLiveData<>(); + } + return moreListLiveData; + } + + public void setMoreListLiveData(MutableLiveData<List<MeetingStaBean>> moreListLiveData) { + this.moreListLiveData = moreListLiveData; + } + + @NonNull + public MutableLiveData<Integer> getOperateTypeLiveData() { + if (operateTypeLiveData == null){ + operateTypeLiveData = new MutableLiveData<>(); + operateTypeLiveData.setValue(0); + } + return operateTypeLiveData; + } + + public void setOperateTypeLiveData(MutableLiveData<Integer> operateTypeLiveData) { + this.operateTypeLiveData = operateTypeLiveData; + } + + public LiveData<List<MeetingStaBean>> getFinishDeleteListLiveData() { + if (finishDeleteListLiveData == null){ + finishDeleteListLiveData = new MutableLiveData<>(); + } + return finishDeleteListLiveData; + } + + public void setFinishDeleteListLiveData(MutableLiveData<List<MeetingStaBean>> finishDeleteListLiveData) { + this.finishDeleteListLiveData = finishDeleteListLiveData; + } + + /** + * 鏀瑰彉鎺掑簭 + * @param b true 闄嶅簭 false 鍗囧簭 + */ +// public void changeOrder(boolean b) { +// List<MeetingStaBean> list = getDataListLiveData().getValue(); +// if (list == null || list.isEmpty()){ +// return; +// } +// if (b) { +// // 浠庢柊鍒版棫锛宯ull鎺掓渶鍚� +// list.sort((o1, o2) -> { +// String happenTime1 = o1.getHappenTime(); +// String happenTime2 = o2.getHappenTime(); +// if (TextUtils.isEmpty(happenTime1) && TextUtils.isEmpty(happenTime2)) { +// return 0; +// } else if (TextUtils.isEmpty(happenTime1)) { +// return 1; +// } else if (TextUtils.isEmpty(happenTime2)) { +// return -1; +// } else { +// Date date1 = Utils.parseDate(happenTime1); +// Date date2 = Utils.parseDate(happenTime2); +// if (date1 != null && date2 != null) { +// return date2.compareTo(date1); +// } +// return 0; +// } +// }); +// } else { +// // 浠庢棫鍒版柊锛宯ull鎺掓渶鍓� +// list.sort((o1, o2) -> { +// String happenTime1 = o1.getHappenTime(); +// String happenTime2 = o2.getHappenTime(); +// if (TextUtils.isEmpty(happenTime1) && TextUtils.isEmpty(happenTime2)) { +// return 0; +// } else if (TextUtils.isEmpty(happenTime1)) { +// return -1; +// } else if (TextUtils.isEmpty(happenTime2)) { +// return 1; +// } else { +// Date date1 = Utils.parseDate(happenTime1); +// Date date2 = Utils.parseDate(happenTime2); +// if (date1 != null && date2 != null) { +// return date1.compareTo(date2); +// } +// return 0; +// } +// }); +// } +// getDataListLiveData().setValue(list); +// } + + /** + * 鏈鏁版嵁 缃《 + */ + public void ownTop(){ + List<MeetingStaBean> list = getDataListLiveData().getValue(); + if (list == null || list.isEmpty()){ + return; + } + //鏍规嵁ownData鍊间负1鐨� 鏀惧埌鍓嶉潰 + list.sort((o1, o2) -> { + if (o1.getOwnData() == 1 && o2.getOwnData() == 0) { + return -1; + } else if (o1.getOwnData() == 0 && o2.getOwnData() == 1) { + return 1; + } + return 0; + }); + getDataListLiveData().setValue(list); + } +} diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaDetailActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaDetailActivity.java new file mode 100644 index 0000000..00e4348 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaDetailActivity.java @@ -0,0 +1,285 @@ +package com.application.zhangshi_app_android.ui.function; + +import android.content.Intent; +import android.widget.PopupWindow; + +import androidx.activity.result.ActivityResultLauncher; +import androidx.lifecycle.MutableLiveData; +import androidx.recyclerview.widget.GridLayoutManager; + +import com.android.app_base.base.BaseConfig; +import com.android.app_base.base.dialog.BaseDialog; +import com.android.app_base.base.dialog.WaitDialog; +import com.android.app_base.utils.Utils; +import com.application.zhangshi_app_android.BR; +import com.application.zhangshi_app_android.R; +import com.application.zhangshi_app_android.adapter.ElectronicFileAddAdapter; +import com.application.zhangshi_app_android.bean.MeetingStaBean; +import com.application.zhangshi_app_android.databinding.ActivityMeetingStaDetailBinding; +import com.application.zhangshi_app_android.ui.DLBaseActivity; + +import java.util.List; + + +/** + * @author Gss + * @date 2023.03.25. 16:00 + * @desc 瀹跺ぇ浜嬭 MeetingDetailActivity + */ +public class MeetingStaDetailActivity extends DLBaseActivity<ActivityMeetingStaDetailBinding, MeetingStaDetailActivityViewModel> { + private int type;// 0 鏌ョ湅鍙慨鏀瑰垹闄� 1 鏂板 2 鐩存帴淇敼 + private PopupWindow popupWindow; + private MutableLiveData<MeetingStaBean> beanLiveData; + private ElectronicFileAddAdapter adapter; + private BaseDialog mWaitDialog; + private ActivityResultLauncher<Intent> activityResultLauncher; + @Override + public int getLayoutId() { + return R.layout.activity_meeting_sta_detail; + } + + @Override + public int getVariableId() { + return BR.viewModel; + } + + @Override + public void initParam() { + type = getIntent().getIntExtra(BaseConfig.EXTRA_TYPE,0); + if (type == 0 || type == 2){ + MeetingStaBean bean = (MeetingStaBean) getIntent().getSerializableExtra("bean"); + if (bean !=null){ + viewModel.getBeanLiveData().setValue(bean); + } + } + } + + + + @Override + public void initView() { + adapter = new ElectronicFileAddAdapter(this); + GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3); +// binding.rvImage.setLayoutManager(gridLayoutManager); +// binding.rvImage.setNestedScrollingEnabled(false); +// adapter.setOnChildClickListener(R.id.iv_delete, new BaseRVAdapter.OnChildClickListener() { +// @Override +// public void onChildClick(RecyclerView recyclerView, View childView, int position) { +// MeetingStaBean bean = viewModel.getBeanLiveData().getValue(); +// if (bean !=null){ +// List<String> urlList = Utils.splitString2List(bean.getUrl(),","); +// urlList.remove(adapter.getItem(position)); +// bean.setUrl(Utils.appendList2String(urlList,",")); +// } +// adapter.removeItem(position); +// viewModel.getBeanLiveData().setValue(bean); +// } +// }); +//// binding.rvImage.setAdapter(adapter); +// if (type == 1){ +// viewModel.getTypeLiveData().setValue(true); +// binding.titleBar.setTitle("鏂板瀹跺ぇ浜嬭"); +// binding.ivOperate.setOnClickListener(v -> { +// viewModel.add(); +// }); +// }else if (type == 0){ +// popupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_delete,null)); +// popupWindow.getContentView().findViewById(R.id.tv_modify).setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// viewModel.getTypeLiveData().postValue(true); +// popupWindow.dismiss(); +// } +// }); +// viewModel.getTypeLiveData().postValue(false); +// }else if (type == 2){ +// viewModel.getTypeLiveData().postValue(true); +// +// } + + + +// binding.etDate1.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// DatePicker picker = getDatePicker(); +// picker.setTitle("閫夋嫨鏃堕棿"); +// picker.setOnDatePickedListener(new OnDatePickedListener() { +// @Override +// public void onDatePicked(int year, int month, int day) { +// String date = String.format(Locale.CHINA, "%d-%02d-%02d", year, month, day); +// binding.etDate1.setText(date); +// } +// }); +// picker.show(); +// } +// }); + +// binding.etDate2.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// DatePicker picker = getDatePicker(); +// picker.setTitle("閫夋嫨鏃堕棿"); +// picker.setOnDatePickedListener(new OnDatePickedListener() { +// @Override +// public void onDatePicked(int year, int month, int day) { +// String date = String.format(Locale.CHINA, "%d-%02d-%02d", year, month, day); +// binding.etDate2.setText(date); +// } +// }); +// picker.show(); +// } +// }); + +// binding.etTime1.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// TimePicker picker = getTimePicker(); +// picker.setTitle("閫夋嫨鏃堕棿"); +// picker.setOnTimePickedListener(new OnTimePickedListener() { +// +// @Override +// +// public void onTimePicked(int hour, int Minute,int second) { +//// second = '0'; +// String date = String.format(Locale.CHINA, "%d:%02d:%02d",hour,Minute,second); +// binding.etTime1.setText(date); +// } +// }); +// picker.show(); +// } +// }); + + + + +// binding.etTime2.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// TimePicker picker = getTimePicker(); +// picker.setTitle("閫夋嫨鏃堕棿"); +// picker.setOnTimePickedListener(new OnTimePickedListener() { +// @Override +// public void onTimePicked(int hour, int Minute, int second) { +// String date = String.format(Locale.CHINA, "%d:%02d:%02d",hour,Minute,second ); +// binding.etTime2.setText(date); +// } +// }); +// picker.show(); +// } +// }); + + + + + + +// activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() { +// @Override +// public void onActivityResult(ActivityResult result) { +// if (result.getResultCode() == Activity.RESULT_OK) { +// if (result.getData() == null){ +// return; +// } +// // 鑾峰彇閫変腑鐨勫涓枃浠剁殑 URI +// ClipData clipData = result.getData().getClipData(); +// if (clipData != null) { +// int itemCount = clipData.getItemCount(); +// for (int i = 0; i < itemCount; i++) { +// Uri uri = clipData.getItemAt(i).getUri(); +// // 浣跨敤閫変腑鐨勬枃浠� URI 杩涜鍚庣画鎿嶄綔锛屾瘮濡傝鍙栨枃浠跺唴瀹圭瓑 +// String path = GetFilePathFromUri.getFileAbsolutePath(getSelfActivity(),uri); +// if (path!=null){ +// viewModel.addUploadFile(path); +// MeetingStaBean bean = viewModel.getBeanLiveData().getValue(); +// if (bean !=null){ +// List<String> urlList = Utils.splitString2List(bean.getUrl(),","); +// urlList.add(path); +// bean.setUrl(Utils.appendList2String(urlList,",")); +// } +// viewModel.getBeanLiveData().setValue(bean); +// } +// } +// }else { +// // 鑾峰彇閫変腑鐨勫崟涓枃浠剁殑 URI +// Uri selectedFileUri = result.getData().getData(); +// String path = GetFilePathFromUri.getFileAbsolutePath(getSelfActivity(),selectedFileUri); +// if (path!=null){ +// viewModel.addUploadFile(path); +// MeetingStaBean bean = viewModel.getBeanLiveData().getValue(); +// if (bean !=null){ +// List<String> urlList = Utils.splitString2List(bean.getUrl(),","); +// urlList.add(path); +// bean.setUrl(Utils.appendList2String(urlList,",")); +// } +// viewModel.getBeanLiveData().setValue(bean); +// } +// } +// } +// } +// }); + + } + + @Override + public void initData() { +// beanLiveData.setValue=MeetingStaBean; + + } + + + @Override + public void initLiveDataObserve() { + viewModel.getBeanLiveData().observe(this, bean -> { + if (bean!=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + adapter.setData(urlList); + } + }); +// viewModel.getTypeLiveData().observe(this,operateType -> { +// if (operateType){ +// if (type == 1) { +// binding.ivOperate.setOnClickListener(v -> { +// viewModel.add(); +// }); +// }else { +// binding.ivOperate.setOnClickListener(v -> { +// viewModel.update(); +// }); +// } +// setIsEdited(true); +// }else { +// binding.ivOperate.setOnClickListener(v -> { +// popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); +// }); +// setIsEdited(false); +// } +// }); + } + + public void setIsEdited(boolean isEdited){ + adapter.setIsEdited(isEdited); + } + + @Override + protected void dialogLoading() { + if (mWaitDialog == null) { + mWaitDialog = new WaitDialog.Builder(this) + // 娑堟伅鏂囨湰鍙互涓嶇敤濉啓 + .setMessage("姝e湪涓婁紶") + .create(); + } + if (!mWaitDialog.isShowing()) { + mWaitDialog.show(); + } + } + + @Override + protected void dialogDismiss() { + if (mWaitDialog != null && mWaitDialog.isShowing()) { + mWaitDialog.dismiss(); + mWaitDialog = null; + } + } + +} diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaDetailActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaDetailActivityViewModel.java new file mode 100644 index 0000000..f466432 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaDetailActivityViewModel.java @@ -0,0 +1,90 @@ +package com.application.zhangshi_app_android.ui.function; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.MutableLiveData; + +import com.android.app_base.base.viewmodel.BaseViewModel; +import com.application.zhangshi_app_android.bean.MeetingStaBean; +import com.application.zhangshi_app_android.data.DataRepository; + +import java.util.List; + +/** + * @author Ljj + * @date 2023.04.21. 21:16 + * @desc + */ +public class MeetingStaDetailActivityViewModel extends BaseViewModel<DataRepository> { + + private MutableLiveData<MeetingStaBean> beanLiveData; + private MutableLiveData<List<MeetingStaBean>> meetingStaListLiveData; + + public MeetingStaDetailActivityViewModel(@NonNull Application application) { + super(application); + } + + @Override + protected DataRepository initModel() { + return DataRepository.getInstance(); + } + + /** + * 鑾峰彇澶囧繕褰� + */ +// public void getMeetingSta() { +// if (beanLiveData.getValue() == null) { +// return; +// } +// +// model.getMeetingSta(getBeanLiveData().getValue().toMap()) +// .compose(RxUtils.schedulersTransformer()) +// .subscribe(new Observer<ResultData<List<MeetingStaBean>>>() { +// @Override +// public void onSubscribe(Disposable d) { +// addSubscribe(d); +// } +// +// @Override +// public void onNext(ResultData<List<MeetingStaBean>> data) { +// if (data.getCode() == CODE_SUCCESS){ +// meetingStaListLiveData.postValue(data.getData()); +// }else { +// messageLiveData.postValue(data.getMsg()); +// } +// } +// +// @Override +// public void onError(Throwable e) { +// messageLiveData.postValue(e.getMessage()); +// } +// +// @Override +// public void onComplete() { +// +// } +// }); +// } + public MutableLiveData<MeetingStaBean> getBeanLiveData() { + if (beanLiveData == null) { + beanLiveData = new MutableLiveData<>(); + } + return beanLiveData; + } + + public void setBeanLiveData(MutableLiveData<MeetingStaBean> beanLiveData) { + this.beanLiveData = beanLiveData; + } + + public MutableLiveData<List<MeetingStaBean>> getMeetingStaListLiveData() { + if (meetingStaListLiveData == null){ + meetingStaListLiveData = new MutableLiveData<>(); + } + return meetingStaListLiveData; + } + + public void setMeetingStaListLiveData(MutableLiveData<List<MeetingStaBean>> meetingStaListLiveData) { + this.meetingStaListLiveData = meetingStaListLiveData; + } +} diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveActivity.java new file mode 100644 index 0000000..e75f157 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveActivity.java @@ -0,0 +1,400 @@ +package com.application.zhangshi_app_android.ui.function; + +import android.content.Intent; +import android.text.Editable; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.view.MotionEvent; +import android.view.View; +import android.widget.PopupWindow; + +import androidx.lifecycle.Observer; + +import com.android.app_base.base.BaseConfig; +import com.android.app_base.base.dialog.BaseDialog; +import com.android.app_base.base.dialog.UIDialog; +import com.android.app_base.manager.AppManager; +import com.android.app_base.utils.ScreenSizeUtils; +import com.android.app_base.utils.Utils; +import com.android.app_base.utils.rxbus.RxBus; +import com.android.app_base.widget.LinearItemDecoration; +import com.application.zhangshi_app_android.BR; +import com.application.zhangshi_app_android.R; +import com.application.zhangshi_app_android.adapter.MeetingapproveRvAdapter; +import com.application.zhangshi_app_android.bean.MeetingBean; +import com.application.zhangshi_app_android.databinding.ActivityMeetingApproveBinding; +import com.application.zhangshi_app_android.ui.DLBaseActivity; +import com.github.gzuliyujiang.wheelpicker.DatePicker; +import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener; + +import java.util.List; + +/** + * @author Ljj + * @date 2023.03.18. 10:00 + * @desc 瀹跺ぇ浜嬭 Activity + */ +public class MeetingapproveActivity extends DLBaseActivity<ActivityMeetingApproveBinding,MeetingapproveActivityViewModel>{ + + MeetingapproveRvAdapter adapter; + private PopupWindow mOperatePopupWindow; + private boolean isSearchLayoutVisible; + private int dateType; //0:寮�濮嬫椂闂� 1:缁撴潫鏃堕棿 + + @Override + public int getLayoutId() { + return R.layout.activity_meeting_approve; + } + + + + @Override + public int getVariableId() { + return BR.viewModel; + } + + @Override + public void initParam() { + + } + + + + + @Override + public void initView() { + //涓嬫媺鍒锋柊甯冨眬 + binding.refreshLayout.setEnableRefresh(false); + binding.refreshLayout.setEnableLoadMore(true); + binding.refreshLayout.setEnableOverScrollDrag(true); + binding.refreshLayout.setOnLoadMoreListener(refreshLayout -> { + viewModel.getMoreMeeting(); + }); + //recyclerView閫傞厤鍣� + adapter = new MeetingapproveRvAdapter(this,viewModel); + LinearItemDecoration itemDecoration = new LinearItemDecoration(); + itemDecoration.setBottomSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_12)); + itemDecoration.setHorizontalSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20)); + binding.recyclerView.addItemDecoration(itemDecoration); + binding.recyclerView.setAdapter(adapter); + //鍙充笂瑙掓搷浣滃脊绐� + mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate,null)); + setOnClickListener( + mOperatePopupWindow.getContentView().findViewById(R.id.tv_add), + mOperatePopupWindow.getContentView().findViewById(R.id.tv_select), + mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old), + mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new), + mOperatePopupWindow.getContentView().findViewById(R.id.tv_own_top) + ); + //鐐瑰嚮鏀惧ぇ闀滄寜閽樉绀哄嚭鎼滅储妗� + binding.ivSearchDefault.setOnClickListener(v -> { + binding.layoutSearch.setVisibility(View.VISIBLE); + binding.layoutDefault.setVisibility(View.GONE); + }); + //鐐瑰嚮鎼滅储妗嗚彍鍗曚笅鎷夊嚭 鎼滅储鍙傛暟 + binding.ivSearchType.setOnClickListener(v -> { + if (!isSearchLayoutVisible){ + binding.layoutSearchParameter.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); + int targetHeight = binding.layoutSearchParameter.getMeasuredHeight(); + Utils.pullCollapse(binding.containerSearchParameter,0,targetHeight); + isSearchLayoutVisible = true; + } + }); + //鎼滅储鍙傛暟layout娣诲姞绌虹偣鍑讳簨浠讹紝闃叉鐐瑰嚮瀹冨唴閮╲iew鏃跺畠鍚庨潰鐨剅ecycler杩樿兘鍝嶅簲鐐瑰嚮浜嬩欢 + binding.layoutSearchParameter.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + } + }); + //鐐瑰嚮鎼滅储鎸夐挳杩涜鎼滅储 + binding.ivSearch.setOnClickListener(v -> { + viewModel.getMeeting(); + binding.layoutSearch.setVisibility(View.GONE); + binding.layoutDefault.setVisibility(View.VISIBLE); + binding.tvTitle.setText("鎼滅储缁撴灉"); + hideSoftKeyboard(); + }); + //鐐瑰嚮娣诲姞鎸夐挳璺宠浆鍒板垱寤哄澶т簨璁伴〉闈� + binding.fabAdd.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + AppManager.getAppManager().startActivity(new Intent(getSelfActivity(), MeetingapproveDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1)); + } + }); + + binding.etStartTime.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + if (!TextUtils.isEmpty(s)) { + binding.ivTimeClear.setVisibility(View.VISIBLE); + } else { + if (TextUtils.isEmpty(binding.etEndTime.getText().toString())) { + binding.ivTimeClear.setVisibility(View.INVISIBLE); + } + } + } + + @Override + public void afterTextChanged(Editable s) { + + } + }); + binding.etEndTime.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + if (!TextUtils.isEmpty(s)) { + binding.ivTimeClear.setVisibility(View.VISIBLE); + } else { + if (TextUtils.isEmpty(binding.etStartTime.getText().toString())) { + binding.ivTimeClear.setVisibility(View.INVISIBLE); + } + } } + + @Override + public void afterTextChanged(Editable s) { + + } + }); + binding.etStartTime.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + hideSoftKeyboard(); + DatePicker datePicker = getDatePicker(); + datePicker.setTitle("璇烽�夋嫨寮�濮嬫椂闂�"); + datePicker.setOnDatePickedListener(new OnDatePickedListener() { + @Override + public void onDatePicked(int year, int month, int day) { + //浠yyy-MM-dd鐨勬牸寮忔樉绀猴紝鏈堟棩灏忎簬10鏃跺墠闈㈣ˉ0 + binding.etStartTime.setText(String.format("%d-%02d-%02d", year, month, day)); + if (binding.etEndTime.getText().toString().isEmpty()){ + binding.etEndTime.setText(String.format("%d-%02d-%02d", year, month, day)); + }else { + //姣旇緝寮�濮嬫椂闂村拰缁撴潫鏃堕棿鐨勫ぇ灏� + String startTime = binding.etStartTime.getText().toString(); + String endTime = binding.etEndTime.getText().toString(); + if (Utils.compareDate(startTime,endTime) > 0){ + //浜ゆ崲 + binding.etStartTime.setText(endTime); + binding.etEndTime.setText(startTime); + } + } + } + }); + datePicker.show(); + + } + }); + binding.etEndTime.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + hideSoftKeyboard(); + DatePicker datePicker = getDatePicker(); + datePicker.setTitle("璇烽�夋嫨缁撴潫鏃堕棿"); + datePicker.setOnDatePickedListener(new OnDatePickedListener() { + @Override + public void onDatePicked(int year, int month, int day) { + binding.etEndTime.setText(String.format("%d-%02d-%02d", year, month, day)); + if (binding.etStartTime.getText().toString().isEmpty()){ + binding.etStartTime.setText(String.format("%d-%02d-%02d", year, month, day)); + }else { + //姣旇緝寮�濮嬫椂闂村拰缁撴潫鏃堕棿鐨勫ぇ灏� + String startTime = binding.etStartTime.getText().toString(); + String endTime = binding.etEndTime.getText().toString(); + if (Utils.compareDate(startTime,endTime) > 0){ + //浜ゆ崲 + binding.etStartTime.setText(endTime); + binding.etEndTime.setText(startTime); + } + } + } + }); + datePicker.show(); + } + }); + binding.ivTimeClear.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + binding.etStartTime.setText(""); + binding.etEndTime.setText(""); + } + }); + } + + + + @Override + public void initData() { + viewModel.getMeeting(); + + } + + @Override + public boolean dispatchTouchEvent(MotionEvent event) { + float x = event.getX(); + float y = event.getY(); + if (isSearchLayoutVisible){ + if (!Utils.isPointInsideView(x, y, binding.layoutSearchParameter)) { + Utils.pullCollapse(binding.containerSearchParameter, binding.layoutSearchParameter.getMeasuredHeight(),0); + isSearchLayoutVisible = false; + return true; + + } + + } + return super.dispatchTouchEvent(event); + + + } + + + + + + + + + + @Override + public void initLiveDataObserve() { + viewModel.getDataListLiveData().observe(this, new Observer<List<MeetingBean>>() { + @Override + public void onChanged(List<MeetingBean> meetingBeans) { + adapter.setData(meetingBeans); + } + }); + viewModel.getCheckListLiveData().observe(this, new Observer<List<MeetingBean>>() { + @Override + public void onChanged(List<MeetingBean> meetingBeans) { + if (viewModel.getOperateTypeLiveData().getValue() == 0){ + return; + } + if (meetingBeans.isEmpty()){ + viewModel.getOperateTypeLiveData().setValue(1); + }else{ + viewModel.getOperateTypeLiveData().setValue(2); + } + } + }); + viewModel.getMoreListLiveData().observe(this, new Observer<List<MeetingBean>>() { + @Override + public void onChanged(List<MeetingBean> meetingBeans) { + adapter.addData(meetingBeans); + } + }); + viewModel.getOperateTypeLiveData().observe(this, integer -> { + if (integer == 0){ + binding.ivOperate.setBackgroundResource(R.drawable.ic_operate); + binding.ivOperate.setOnClickListener(v -> { + mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); + }); + adapter.setCheckable(false); + }else if (integer == 1){ + binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish); + binding.ivOperate.setOnClickListener(v -> { + viewModel.getOperateTypeLiveData().postValue(0); + }); + adapter.setCheckable(true); + }else if (integer == 2){ + binding.ivOperate.setBackgroundResource(R.drawable.ic_delete_white); + binding.ivOperate.setOnClickListener(v -> { + new UIDialog.Builder(this) + .setTitle("鎮ㄧ‘瀹氳鍒犻櫎閫変腑鐨勯」鐩悧") + .setContent("椤圭洰鍒犻櫎鍚庡皢鏃犳硶鎭㈠") + .setConfirm("纭畾") + .setCancel("鍙栨秷") + .setListener(new UIDialog.OnListener() { + @Override + public void onConfirm(BaseDialog dialog) { + viewModel.deleteCheckList(); + } + }) + .show(); + }); + } + }); + viewModel.getFinishDeleteListLiveData().observe(this, beans -> { + for (MeetingBean bean : beans) { + adapter.removeItem(bean); + } + }); + //瑙傚療瀹跺ぇ浜嬭鏁版嵁鐨勫彉鍖栵紝鏈夊彉鍖栧寘鎷坊鍔犮�佷慨鏀广�佸垹闄ら兘浼氬彂閫佹秷鎭紝鎺ユ敹鍒版秷鎭悗閲嶆柊鑾峰彇鏁版嵁 + RxBus.getInstance().toObservable(this, MeetingBean.class) + .subscribe(bean -> { + viewModel.getMeeting(); + }); + } + + + @Override + protected void dataNull() { + super.dataNull(); + binding.layoutDataNull.setVisibility(View.VISIBLE); + binding.refreshLayout.setVisibility(View.GONE); + + } + + @Override + protected void dataFinish() { + super.dataFinish(); + binding.refreshLayout.finishLoadMore(); + } + + @Override + protected void hide() { + super.hide(); + binding.layoutDataNull.setVisibility(View.GONE); + binding.refreshLayout.setVisibility(View.VISIBLE); + binding.refreshLayout.finishLoadMore(); + } + + @Override + public void onClick(View v) { + int id = v.getId(); + if (id == R.id.tv_add){ + AppManager.getAppManager().startActivity(new Intent(this, MeetingapproveDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1)); + }else if (id == R.id.tv_select){ + viewModel.getOperateTypeLiveData().postValue(1); + mOperatePopupWindow.dismiss(); + } else if (id == R.id.tv_from_new_to_old) { + viewModel.changeOrder(true); + mOperatePopupWindow.dismiss(); + } else if (id == R.id.tv_from_old_to_new) { + viewModel.changeOrder(false); + mOperatePopupWindow.dismiss(); + } else if (id == R.id.tv_own_top) { + viewModel.ownTop(); + mOperatePopupWindow.dismiss(); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (mOperatePopupWindow != null){ + mOperatePopupWindow.dismiss(); + } + + } + +// private static final String TAG = "Meeting123"; +// @Override +// protected void onCreate(Bundle savedInstanceState){ +// super.onCreate(savedInstanceState); +// setContentView(R.layout.activity_meeting); +// MeetingBean data = new MeetingBean(); +// String b = String.valueOf(data.getDate1()); +// String c = String.valueOf(data.getTime1()); +// String d = String.valueOf(data.getStartTime()); +// Log.d(TAG,b+c+d); +// } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveActivityViewModel.java new file mode 100644 index 0000000..e57d58a --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveActivityViewModel.java @@ -0,0 +1,399 @@ +package com.application.zhangshi_app_android.ui.function; + +import static com.android.app_base.base.BaseConfig.CODE_SUCCESS; + +import android.app.Application; +import android.text.TextUtils; + +import androidx.annotation.NonNull; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.android.app_base.base.StateViewEnum; +import com.android.app_base.base.viewmodel.BaseViewModel; +import com.android.app_base.http.ResultData; +import com.android.app_base.utils.RxUtils; +import com.android.app_base.utils.Utils; +import com.application.zhangshi_app_android.bean.MeetingBean; +import com.application.zhangshi_app_android.bean.MeetingRequestBean; +import com.application.zhangshi_app_android.bean.PageResponseBean; +import com.application.zhangshi_app_android.data.DataRepository; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Action; + +/** + * @author Ljj + * @date 2023.03.18. 10:00 + * @desc 瀹跺ぇ浜嬭 viewmodel + */ +public class MeetingapproveActivityViewModel extends BaseViewModel<DataRepository> { + + private MutableLiveData<List<MeetingBean>> checkListLiveData;//閫変腑鐨勬暟鎹� + private MutableLiveData<List<MeetingBean>> dataListLiveData;//鎵�鏈夋暟鎹� + private MutableLiveData<Integer> operateTypeLiveData;//鍙充笂瑙掓搷浣滄 鎿嶄綔绫诲瀷 0 寮瑰嚭閫夋嫨鎿嶄綔 1.瀹屾垚 2.鍒犻櫎 + private MutableLiveData<MeetingRequestBean> requestBeanLiveData;//璇锋眰鍙傛暟 + private MutableLiveData<List<MeetingBean>> moreListLiveData;//涓嬫媺鍔犺浇鏁版嵁 + private MutableLiveData<List<MeetingBean>> finishDeleteListLiveData;//宸茬粡瀹屾垚鍒犻櫎鐨勬暟鎹紝鐢ㄤ簬adapter鐨剅emove鎿嶄綔 + + //鍒涘缓骞跺垵濮嬪寲ViewModel + public MeetingapproveActivityViewModel(@NonNull Application application) { + super(application); + } + + + //DataRepository 鏄竴涓暟鎹粨搴撶被锛岃礋璐g鐞嗘暟鎹殑鑾峰彇鍜屽瓨鍌紝 + // 璇ユ柟娉曢�氳繃璋冪敤 DataRepository.getInstance() 鏉ヨ幏鍙� DataRepository 鐨勫崟渚嬪疄渚嬶紝骞跺皢鍏惰繑鍥瀖odel銆� + @Override + protected DataRepository initModel() { + return DataRepository.getInstance(); + } + /** + * 鑾峰彇瀹跺ぇ浜� + * 璁� + */ + + + + //getRequestBeanLiveData().getValue() 妫�鏌ヨ姹傛暟鎹殑 LiveData 鏄惁涓虹┖銆� + // 濡傛灉涓虹┖锛屽垯鍒涘缓涓�涓柊鐨凪eetingRequestBean 瀵硅薄锛屽苟灏嗗叾璁剧疆涓� LiveData 鐨勫�硷紝浠ョ‘淇濊姹傛暟鎹笉涓� null銆� + public void getMeeting() { + if (getRequestBeanLiveData().getValue() == null){ + getRequestBeanLiveData().setValue(new MeetingRequestBean()); + } + //璁剧疆璇锋眰鏁版嵁瀵硅薄鐨勯〉鐮佷负 1锛岃〃绀鸿鑾峰彇绗竴椤电殑鏁版嵁銆� + getRequestBeanLiveData().getValue().setPageNum(1); + + //閫氳繃model(ViewModel 涓殑鏁版嵁浠撳簱瀵硅薄)鍙戣捣缃戠粶璇锋眰锛屽苟灏嗚姹傛暟鎹浆鎹负 Map 绫诲瀷锛屼互渚垮彂閫佺粰鏈嶅姟鍣ㄣ�� + model.getMeeting(getRequestBeanLiveData().getValue().toMap()) + + //搴旂敤绾跨▼璋冨害鍣紝纭繚瑙傚療鑰呭湪姝g‘鐨勭嚎绋嬩笂杩愯銆� + .compose(RxUtils.schedulersTransformer()) + + //璁㈤槄杩欎釜缃戠粶璇锋眰鐨勭粨鏋� + .subscribe(new Observer<ResultData<PageResponseBean<MeetingBean>>>() { + @Override + + //灏嗚闃呭璞℃坊鍔犲埌 addSubscribe() 涓紝浠ヤ究鍦ㄤ笉鍐嶉渶瑕佹椂鍙栨秷璁㈤槄銆� + //鍒涘缓 Disposable 瀵硅薄鏉ョ鐞嗚闃� + // 浣跨敤 Disposable锛屽彲浠ユ湁鏁堝湴绠$悊寮傛鎿嶄綔鐨勭敓鍛藉懆鏈燂紝纭繚璧勬簮鍦ㄤ笉鍐嶉渶瑕佹椂琚纭噴鏀俱�� + + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + + + @Override + //onNext()澶勭悊鎴愬姛鑾峰彇鏁版嵁鐨勬儏鍐� + public void onNext(ResultData<PageResponseBean<MeetingBean>> data) { + if (data.getCode() == CODE_SUCCESS){ + if (data.getData().getData().isEmpty()){ + + //鏇存柊鐣岄潰鐘舵�佷负 StateViewEnum.DATA_NULL + changeStateView(StateViewEnum.DATA_NULL); + }else { + //闅愯棌鐘舵�佽鍥惧苟灏嗘暟鎹垪琛ㄥ彂甯冨埌 dataListLiveData + changeStateView(StateViewEnum.HIDE); + dataListLiveData.postValue(data.getData().getData()); + } + + //濡傛灉杩斿洖鐨勬暟鎹笉鎴愬姛锛屽垯灏嗘湇鍔″櫒杩斿洖鐨勬秷鎭彂甯冨埌 messageLiveData锛屼互渚块�氱煡鐢ㄦ埛銆� + }else { + messageLiveData.postValue(data.getMsg()); + } + } + + @Override + //onError()澶勭悊鍙戠敓閿欒鐨勬儏鍐碉紝灏嗛敊璇秷鎭彂甯冨埌 messageLiveData銆� + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + /** + * 鍔犺浇鏇村 + */ + public void getMoreMeeting() { + if (getRequestBeanLiveData().getValue() == null){ + getRequestBeanLiveData().setValue(new MeetingRequestBean()); + } + getRequestBeanLiveData().getValue().setPageNum(getRequestBeanLiveData().getValue().getPageNum() + 1); + model.getMeeting(getRequestBeanLiveData().getValue().toMap()) + .compose(RxUtils.schedulersTransformer()) + .doFinally(new Action() { + @Override + public void run() throws Exception { + changeStateView(StateViewEnum.DATA_FINISH); + } + }) + .subscribe(new Observer<ResultData<PageResponseBean<MeetingBean>>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<PageResponseBean<MeetingBean>> data) { + if (data.getCode() == CODE_SUCCESS){ + if (data.getData().getData().isEmpty()){ + messageLiveData.postValue("娌℃湁鏇村鏁版嵁浜�"); + }else { + changeStateView(StateViewEnum.HIDE); + moreListLiveData.postValue(data.getData().getData()); + } + }else { + messageLiveData.postValue(data.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + /** + * 鍒犻櫎瀹跺ぇ浜嬭 + */ + public void deleteCheckList() { + List<MeetingBean> deleteList = getCheckListLiveData().getValue(); + if (deleteList == null){ + return; + } + StringBuffer sb = new StringBuffer(); + deleteList.forEach(MeetingBean -> sb.append(MeetingBean.getId()).append(",")); + sb.deleteCharAt(sb.length()-1); + model.deleteMeeting(sb.toString()) + .compose(RxUtils.schedulersTransformer()) + .subscribe(new Observer<ResultData<String>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<String> stringResultData) { + if (stringResultData.getCode() == CODE_SUCCESS){ + messageLiveData.postValue("鍒犻櫎鎴愬姛"); + finishDeleteListLiveData.postValue(checkListLiveData.getValue()); + getCheckListLiveData().postValue(new ArrayList<>()); + }else { + messageLiveData.postValue(stringResultData.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + /** + * 鍒犻櫎鍗曚釜鏁版嵁 + */ + public void deleteItem(MeetingBean bean) { + model.deleteMeeting(String.valueOf(bean.getId())) + .compose(RxUtils.schedulersTransformer()) + .subscribe(new Observer<ResultData<String>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<String> stringResultData) { + if (stringResultData.getCode() == CODE_SUCCESS){ + List<MeetingBean> list = new ArrayList<>(); + list.add(bean); + finishDeleteListLiveData.postValue(list); + messageLiveData.postValue("鍒犻櫎鎴愬姛"); + }else { + messageLiveData.postValue(stringResultData.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + + public MutableLiveData<List<MeetingBean>> getCheckListLiveData() { + if (checkListLiveData==null){ + checkListLiveData = new MutableLiveData<>(); + checkListLiveData.postValue(new ArrayList<>()); + } + if (checkListLiveData.getValue() == null){ + checkListLiveData.postValue(new ArrayList<>()); + } + return checkListLiveData; + } + + public void setCheckListLiveData(MutableLiveData<List<MeetingBean>> checkListLiveData) { + this.checkListLiveData = checkListLiveData; + } + + @NonNull //NonNull 鐢ㄤ簬鏍囪鏂规硶鍙傛暟銆佽繑鍥炲�笺�佸瓧娈垫垨鏂规硶鐨勮繑鍥炵被鍨嬩笉鍏佽涓� null + + //getRequestBeanLiveData() 鑾峰彇涓�涓寘鍚玀eetingRequestBean 鏁版嵁鐨� MutableLiveData 瀵硅薄銆� + public MutableLiveData<MeetingRequestBean> getRequestBeanLiveData() { + if (requestBeanLiveData == null){ + requestBeanLiveData = new MutableLiveData<>(); + } + if (requestBeanLiveData.getValue() == null){ + requestBeanLiveData.setValue(new MeetingRequestBean()); + } + return requestBeanLiveData; + } + + public void setRequestBeanLiveData(MutableLiveData<MeetingRequestBean> requestBeanLiveData) { + this.requestBeanLiveData = requestBeanLiveData; + } + + public MutableLiveData<List<MeetingBean>> getDataListLiveData() { + if (dataListLiveData == null){ + dataListLiveData = new MutableLiveData<>(); + } + return dataListLiveData; + } + + public void setDataListLiveData(MutableLiveData<List<MeetingBean>> dataListLiveData) { + this.dataListLiveData = dataListLiveData; + } + + @NonNull + public MutableLiveData<List<MeetingBean>> getMoreListLiveData() { + if (moreListLiveData == null){ + moreListLiveData = new MutableLiveData<>(); + } + return moreListLiveData; + } + + public void setMoreListLiveData(MutableLiveData<List<MeetingBean>> moreListLiveData) { + this.moreListLiveData = moreListLiveData; + } + + @NonNull + public MutableLiveData<Integer> getOperateTypeLiveData() { + if (operateTypeLiveData == null){ + operateTypeLiveData = new MutableLiveData<>(); + operateTypeLiveData.setValue(0); + } + return operateTypeLiveData; + } + + public void setOperateTypeLiveData(MutableLiveData<Integer> operateTypeLiveData) { + this.operateTypeLiveData = operateTypeLiveData; + } + + public LiveData<List<MeetingBean>> getFinishDeleteListLiveData() { + if (finishDeleteListLiveData == null){ + finishDeleteListLiveData = new MutableLiveData<>(); + } + return finishDeleteListLiveData; + } + + public void setFinishDeleteListLiveData(MutableLiveData<List<MeetingBean>> finishDeleteListLiveData) { + this.finishDeleteListLiveData = finishDeleteListLiveData; + } + + /** + * 鏀瑰彉鎺掑簭 + * @param b true 闄嶅簭 false 鍗囧簭 + */ + public void changeOrder(boolean b) { + List<MeetingBean> list = getDataListLiveData().getValue(); + if (list == null || list.isEmpty()){ + return; + } + if (b) { + // 浠庢柊鍒版棫锛宯ull鎺掓渶鍚� + list.sort((o1, o2) -> { + String happenTime1 = o1.getHappenTime(); + String happenTime2 = o2.getHappenTime(); + if (TextUtils.isEmpty(happenTime1) && TextUtils.isEmpty(happenTime2)) { + return 0; + } else if (TextUtils.isEmpty(happenTime1)) { + return 1; + } else if (TextUtils.isEmpty(happenTime2)) { + return -1; + } else { + Date date1 = Utils.parseDate(happenTime1); + Date date2 = Utils.parseDate(happenTime2); + if (date1 != null && date2 != null) { + return date2.compareTo(date1); + } + return 0; + } + }); + } else { + // 浠庢棫鍒版柊锛宯ull鎺掓渶鍓� + list.sort((o1, o2) -> { + String happenTime1 = o1.getHappenTime(); + String happenTime2 = o2.getHappenTime(); + if (TextUtils.isEmpty(happenTime1) && TextUtils.isEmpty(happenTime2)) { + return 0; + } else if (TextUtils.isEmpty(happenTime1)) { + return -1; + } else if (TextUtils.isEmpty(happenTime2)) { + return 1; + } else { + Date date1 = Utils.parseDate(happenTime1); + Date date2 = Utils.parseDate(happenTime2); + if (date1 != null && date2 != null) { + return date1.compareTo(date2); + } + return 0; + } + }); + } + getDataListLiveData().setValue(list); + } + + /** + * 鏈鏁版嵁 缃《 + */ + public void ownTop(){ + List<MeetingBean> list = getDataListLiveData().getValue(); + if (list == null || list.isEmpty()){ + return; + } + //鏍规嵁ownData鍊间负1鐨� 鏀惧埌鍓嶉潰 + list.sort((o1, o2) -> { + if (o1.getOwnData() == 1 && o2.getOwnData() == 0) { + return -1; + } else if (o1.getOwnData() == 0 && o2.getOwnData() == 1) { + return 1; + } + return 0; + }); + getDataListLiveData().setValue(list); + } +} diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveDetailActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveDetailActivity.java new file mode 100644 index 0000000..0e08dd8 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveDetailActivity.java @@ -0,0 +1,388 @@ +package com.application.zhangshi_app_android.ui.function; + +import android.app.Activity; +import android.content.ClipData; +import android.content.Intent; +import android.net.Uri; +import android.view.View; +import android.widget.PopupWindow; + +import androidx.activity.result.ActivityResult; +import androidx.activity.result.ActivityResultCallback; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; +import androidx.lifecycle.MutableLiveData; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.android.app_base.base.BaseConfig; +import com.android.app_base.base.adapter.BaseRVAdapter; +import com.android.app_base.base.dialog.BaseDialog; +import com.android.app_base.base.dialog.WaitDialog; +import com.android.app_base.manager.UserManager; +import com.android.app_base.utils.GetFilePathFromUri; +import com.android.app_base.utils.ScreenSizeUtils; +import com.android.app_base.utils.Utils; +import com.application.zhangshi_app_android.BR; +import com.application.zhangshi_app_android.R; +import com.application.zhangshi_app_android.adapter.ElectronicFileAddAdapter; +import com.application.zhangshi_app_android.bean.MeetingBean; +import com.application.zhangshi_app_android.databinding.ActivityMeetingApproveDetailBinding; +import com.application.zhangshi_app_android.ui.DLBaseActivity; +import com.github.gzuliyujiang.wheelpicker.DatePicker; +import com.github.gzuliyujiang.wheelpicker.OptionPicker; +import com.github.gzuliyujiang.wheelpicker.TimePicker; +import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener; +import com.github.gzuliyujiang.wheelpicker.contract.OnOptionPickedListener; +import com.github.gzuliyujiang.wheelpicker.contract.OnTimePickedListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.interfaces.OnResultCallbackListener; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Locale; + + +/** + * @author Gss + * @date 2023.03.25. 16:00 + * @desc 瀹跺ぇ浜嬭 MeetingDetailActivity + */ +public class MeetingapproveDetailActivity extends DLBaseActivity<ActivityMeetingApproveDetailBinding, MeetingapproveDetailActivityViewModel> { + private int type;// 0 鏌ョ湅鍙慨鏀瑰垹闄� 1 鏂板 2 鐩存帴淇敼 + private PopupWindow popupWindow; + private MutableLiveData<MeetingBean> beanLiveData; + private ElectronicFileAddAdapter adapter; + private BaseDialog mWaitDialog; + private ActivityResultLauncher<Intent> activityResultLauncher; + @Override + public int getLayoutId() { + return R.layout.activity_meeting_approve_detail; + } + + @Override + public int getVariableId() { + return BR.viewModel; + } + + @Override + public void initParam() { + type = getIntent().getIntExtra(BaseConfig.EXTRA_TYPE,0); + if (type == 0 || type == 2){ + MeetingBean bean = (MeetingBean) getIntent().getSerializableExtra("bean"); + if (bean !=null){ + viewModel.getBeanLiveData().setValue(bean); + } + } + } + + + + @Override + public void initView() { + adapter = new ElectronicFileAddAdapter(this); + GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3); + binding.rvImage.setLayoutManager(gridLayoutManager); + binding.rvImage.setNestedScrollingEnabled(false); + adapter.setItemAndAddClickListener(new ElectronicFileAddAdapter.OnItemAndAddClickListener() { + @Override + public void onItemClick(View v, int position) { + + } + + @Override + public void onAddClick() { + OptionPicker picker = getOptionPicker(Arrays.asList("鍥剧墖瑙嗛","鍏朵粬鏂囦欢")); + picker.setTitle("閫夋嫨鏂囦欢绫诲瀷"); + picker.setOnOptionPickedListener(new OnOptionPickedListener() { + @Override + public void onOptionPicked(int position, Object item) { + if (item.equals("鍥剧墖瑙嗛")) { + UserManager.getInstance().selectImage(getSelfActivity(), 0,9, new OnResultCallbackListener<LocalMedia>() { + @Override + public void onResult(ArrayList<LocalMedia> result) { + if (result.size() == 0) return; + for (LocalMedia media : result) { + String path = media.getRealPath(); + if (path!=null){ + viewModel.addUploadFile(path); + MeetingBean bean = viewModel.getBeanLiveData().getValue(); + if (bean !=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + urlList.add(path); + bean.setUrl(Utils.appendList2String(urlList,",")); + } + viewModel.getBeanLiveData().setValue(bean); + } + } + } + @Override + public void onCancel() { + + } + }); + }else { + Intent intent = new Intent(Intent.ACTION_GET_CONTENT); +// Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); + intent.setType("*/*"); // 闄愬埗鏂囦欢绫诲瀷 + intent.addCategory(Intent.CATEGORY_OPENABLE); // 娣诲姞 CATEGORY_OPENABLE 鍒嗙被,鍛婅瘔绯荤粺瑕侀�夋嫨鐨勫唴瀹瑰彲浠ヨ鎵撳紑锛岃繖鏍风郴缁熶細杩囨护鎺変笉鑳借搴旂敤鎵撳紑鐨勬枃浠讹紝浠ユ彁渚涙洿濂界殑鐢ㄦ埛浣撻獙銆� + intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); // 鍏佽澶氶�� + activityResultLauncher.launch(intent); + } + } + }); + picker.show(); + + } + }); + adapter.setOnChildClickListener(R.id.iv_delete, new BaseRVAdapter.OnChildClickListener() { + @Override + public void onChildClick(RecyclerView recyclerView, View childView, int position) { + MeetingBean bean = viewModel.getBeanLiveData().getValue(); + if (bean !=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + urlList.remove(adapter.getItem(position)); + bean.setUrl(Utils.appendList2String(urlList,",")); + } + adapter.removeItem(position); + viewModel.getBeanLiveData().setValue(bean); + } + }); + + binding.rvImage.setAdapter(adapter); + if (type == 1){ + viewModel.getTypeLiveData().setValue(true); + binding.titleBar.setTitle("鏂板瀹跺ぇ浜嬭"); + binding.ivOperate.setOnClickListener(v -> { + viewModel.add(); + }); + }else if (type == 0){ + popupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_approve,null)); + popupWindow.getContentView().findViewById(R.id.tv_disagree).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + popupWindow.dismiss(); + viewModel.disagree(); + viewModel.getTypeLiveData().postValue(true); + } + }); + viewModel.getTypeLiveData().postValue(true); + + popupWindow.getContentView().findViewById(R.id.tv_agreed).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + popupWindow.dismiss(); + viewModel.agree(); + viewModel.getTypeLiveData().postValue(true); + + } + }); + + viewModel.getTypeLiveData().postValue(false); + }else if (type == 2){ + viewModel.getTypeLiveData().postValue(true); + + } + + + + binding.etDate1.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + DatePicker picker = getDatePicker(); + picker.setTitle("閫夋嫨鏃堕棿"); + picker.setOnDatePickedListener(new OnDatePickedListener() { + @Override + public void onDatePicked(int year, int month, int day) { + String date = String.format(Locale.CHINA, "%d-%02d-%02d", year, month, day); + binding.etDate1.setText(date); + } + }); + picker.show(); + } + }); + + binding.etDate2.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + DatePicker picker = getDatePicker(); + picker.setTitle("閫夋嫨鏃堕棿"); + picker.setOnDatePickedListener(new OnDatePickedListener() { + @Override + public void onDatePicked(int year, int month, int day) { + String date = String.format(Locale.CHINA, "%d-%02d-%02d", year, month, day); + binding.etDate2.setText(date); + } + }); + picker.show(); + } + }); + + binding.etTime1.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + TimePicker picker = getTimePicker(); + picker.setTitle("閫夋嫨鏃堕棿"); + picker.setOnTimePickedListener(new OnTimePickedListener() { + + @Override + + public void onTimePicked(int hour, int Minute,int second) { +// second = '0'; + String date = String.format(Locale.CHINA, "%d:%02d:%02d",hour,Minute,second); + binding.etTime1.setText(date); + } + }); + picker.show(); + } + }); + + + + + binding.etTime2.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + TimePicker picker = getTimePicker(); + picker.setTitle("閫夋嫨鏃堕棿"); + picker.setOnTimePickedListener(new OnTimePickedListener() { + @Override + public void onTimePicked(int hour, int Minute, int second) { + String date = String.format(Locale.CHINA, "%d:%02d:%02d",hour,Minute,second ); + binding.etTime2.setText(date); + } + }); + picker.show(); + } + }); + + + + + + + activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() { + @Override + public void onActivityResult(ActivityResult result) { + if (result.getResultCode() == Activity.RESULT_OK) { + if (result.getData() == null){ + return; + } + // 鑾峰彇閫変腑鐨勫涓枃浠剁殑 URI + ClipData clipData = result.getData().getClipData(); + if (clipData != null) { + int itemCount = clipData.getItemCount(); + for (int i = 0; i < itemCount; i++) { + Uri uri = clipData.getItemAt(i).getUri(); + // 浣跨敤閫変腑鐨勬枃浠� URI 杩涜鍚庣画鎿嶄綔锛屾瘮濡傝鍙栨枃浠跺唴瀹圭瓑 + String path = GetFilePathFromUri.getFileAbsolutePath(getSelfActivity(),uri); + if (path!=null){ + viewModel.addUploadFile(path); + MeetingBean bean = viewModel.getBeanLiveData().getValue(); + if (bean !=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + urlList.add(path); + bean.setUrl(Utils.appendList2String(urlList,",")); + } + viewModel.getBeanLiveData().setValue(bean); + } + } + }else { + // 鑾峰彇閫変腑鐨勫崟涓枃浠剁殑 URI + Uri selectedFileUri = result.getData().getData(); + String path = GetFilePathFromUri.getFileAbsolutePath(getSelfActivity(),selectedFileUri); + if (path!=null){ + viewModel.addUploadFile(path); + MeetingBean bean = viewModel.getBeanLiveData().getValue(); + if (bean !=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + urlList.add(path); + bean.setUrl(Utils.appendList2String(urlList,",")); + } + viewModel.getBeanLiveData().setValue(bean); + } + } + } + } + }); + + } + + @Override + public void initData() { +// beanLiveData.setValue=MeetingBean; + + } + + + @Override + public void initLiveDataObserve() { + viewModel.getBeanLiveData().observe(this, bean -> { + if (bean!=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + adapter.setData(urlList); + } + }); + viewModel.getTypeLiveData().observe(this,operateType -> { + if (operateType){ + if (type == 1) { + binding.ivOperate.setOnClickListener(v -> { + viewModel.add(); + }); + }else { + binding.ivOperate.setOnClickListener(v -> { + viewModel.update(); + }); + } + setIsEdited(true); + }else { + binding.ivOperate.setOnClickListener(v -> { + popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); + }); + setIsEdited(false); + } + }); + } + + public void setIsEdited(boolean isEdited){ + adapter.setIsEdited(isEdited); + } + + @Override + protected void dialogLoading() { + if (mWaitDialog == null) { + mWaitDialog = new WaitDialog.Builder(this) + // 娑堟伅鏂囨湰鍙互涓嶇敤濉啓 + .setMessage("姝e湪涓婁紶") + .create(); + } + if (!mWaitDialog.isShowing()) { + mWaitDialog.show(); + } + } + + @Override + protected void dialogDismiss() { + if (mWaitDialog != null && mWaitDialog.isShowing()) { + mWaitDialog.dismiss(); + mWaitDialog = null; + } + } + +} + + + + + + + + + + + + + + + diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveDetailActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveDetailActivityViewModel.java new file mode 100644 index 0000000..8e15b10 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveDetailActivityViewModel.java @@ -0,0 +1,430 @@ +package com.application.zhangshi_app_android.ui.function; + +import static com.android.app_base.base.BaseConfig.CODE_SUCCESS; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.MutableLiveData; + +import com.android.app_base.base.StateViewEnum; +import com.android.app_base.base.viewmodel.BaseViewModel; +import com.android.app_base.http.ResultData; +import com.android.app_base.manager.AppManager; +import com.android.app_base.utils.RxUtils; +import com.android.app_base.utils.rxbus.RxBus; +import com.application.zhangshi_app_android.bean.MeetingBean; +import com.application.zhangshi_app_android.bean.UploadFileResponseBean; +import com.application.zhangshi_app_android.data.DataRepository; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import io.reactivex.Observable; +import io.reactivex.ObservableSource; +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Action; +import io.reactivex.functions.Consumer; +import io.reactivex.functions.Function; +import okhttp3.MediaType; +import okhttp3.MultipartBody; +import okhttp3.RequestBody; + +public class MeetingapproveDetailActivityViewModel extends BaseViewModel<DataRepository> { + + private MutableLiveData<MeetingBean> beanLiveData; + private MutableLiveData<Boolean> typeLiveData;//true 缂栬緫鐘舵�� false 灞曠ず鐘舵�� + private final List<String> uploadFileList = new ArrayList<>();//闇�瑕佷笂浼犵殑鏂囦欢鍒楄〃 + public MeetingapproveDetailActivityViewModel(@NonNull Application application) { + super(application); + } + + @Override + protected DataRepository initModel() { + return DataRepository.getInstance(); + } + + /** + * 澧炲姞瀹跺ぇ浜嬭 + */ + public void add() { + if (uploadFileList.size() > 0) { + List<Observable<String>> observables = new ArrayList<>(); + for (String path : uploadFileList) { + File file = new File(path); + RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); + MultipartBody.Part body = MultipartBody.Part.createFormData("uploadFile", file.getName(), requestBody); + Observable<String> uploadObservable = model.uploadFile(body) + .flatMap(new Function<ResultData<UploadFileResponseBean>, ObservableSource<String>>() { + @Override + public ObservableSource<String> apply(ResultData<UploadFileResponseBean> resultData) throws Exception { + if (resultData.getCode() == CODE_SUCCESS) { + MeetingBean bean = getBeanLiveData().getValue(); + if (bean != null) { + String urls = bean.getUrl(); + //鏇挎崲鍥剧墖鍦板潃 + urls = urls.replace(path, resultData.getData().getUrl()); + bean.setUrl(urls); + getBeanLiveData().postValue(bean); + } + return Observable.just(path); + } else { + return Observable.error(new Exception(resultData.getMsg())); + } + } + }); + + observables.add(uploadObservable); + } + Observable.zip(observables, result -> result) + .flatMap(new Function<Object[], Observable<ResultData<String>>>() { + @Override + public Observable<ResultData<String>> apply(Object[] objects) throws Exception { + //绉婚櫎宸茬粡涓婁紶鐨勬枃浠� + //鎶妎bjects鏁扮粍杞崲鎴恖ist锛岀劧鍚庣Щ闄� + for (Object object : objects) { + uploadFileList.remove((String) object); + } + return model.addMeeting(beanLiveData.getValue()); + } + }) + .doOnSubscribe(new Consumer<Disposable>() { + @Override + public void accept(Disposable disposable) throws Exception { + changeStateView(StateViewEnum.DIALOG_LOADING); + } + }) + .doFinally(new Action() { + @Override + public void run() throws Exception { + changeStateView(StateViewEnum.DIALOG_DISMISS); + } + }) + .compose(RxUtils.schedulersTransformer()) + .subscribe(new Observer<ResultData<String>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<String> stringResultData) { + if (stringResultData.getCode() == CODE_SUCCESS) { + AppManager.getAppManager().finishCurrentActivity(); + RxBus.getInstance().post(beanLiveData.getValue()); + messageLiveData.postValue("娣诲姞鎴愬姛"); + } else { + messageLiveData.postValue(stringResultData.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + }else { + model.addMeeting(beanLiveData.getValue()) + .compose(RxUtils.schedulersTransformer()) + .subscribe(new Observer<ResultData<String>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<String> stringResultData) { + if (stringResultData.getCode() == CODE_SUCCESS) { + AppManager.getAppManager().finishCurrentActivity(); + RxBus.getInstance().post(beanLiveData.getValue()); + messageLiveData.postValue("娣诲姞鎴愬姛"); + } else { + messageLiveData.postValue(stringResultData.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + } + /** + * 瀹℃壒 + */ + public void agree() { + model.approveMeeting(Integer.valueOf((int) beanLiveData.getValue().getId()),1) + .compose(RxUtils.schedulersTransformer()) + .subscribe(new Observer<ResultData<String>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<String> stringResultData) { + if (stringResultData.getCode() == CODE_SUCCESS){ + AppManager.getAppManager().finishCurrentActivity(); + RxBus.getInstance().post(beanLiveData.getValue()); + messageLiveData.postValue("瀹℃壒閫氳繃"); + }else { + messageLiveData.postValue(stringResultData.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + + + + public void disagree() { + model.approveMeeting(Integer.valueOf((int) beanLiveData.getValue().getId()),0) + .compose(RxUtils.schedulersTransformer()) + .subscribe(new Observer<ResultData<String>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<String> stringResultData) { + if (stringResultData.getCode() == CODE_SUCCESS){ + AppManager.getAppManager().finishCurrentActivity(); + RxBus.getInstance().post(beanLiveData.getValue()); + messageLiveData.postValue("瀹℃壒鎷掔粷"); + }else { + messageLiveData.postValue(stringResultData.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + + + + + + + /** + * 鍒犻櫎瀹跺ぇ浜嬭 + */ + public void delete() { + model.deleteMeeting(String.valueOf(beanLiveData.getValue().getId())) + .compose(RxUtils.schedulersTransformer()) + .subscribe(new Observer<ResultData<String>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<String> stringResultData) { + if (stringResultData.getCode() == CODE_SUCCESS){ + AppManager.getAppManager().finishCurrentActivity(); + RxBus.getInstance().post(beanLiveData.getValue()); + messageLiveData.postValue("鍒犻櫎鎴愬姛"); + }else { + messageLiveData.postValue(stringResultData.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + /** + * 缂栬緫瀹跺ぇ浜嬭 + */ + public void update() { + if (uploadFileList.size() > 0){ + List<Observable<String>> observables = new ArrayList<>(); + for (String path : uploadFileList) { + File file = new File(path); + RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); + MultipartBody.Part body = MultipartBody.Part.createFormData("uploadFile", file.getName(), requestBody); + Observable<String> uploadObservable = model.uploadFile(body) + .flatMap(new Function<ResultData<UploadFileResponseBean>, ObservableSource<String>>() { + @Override + public ObservableSource<String> apply(ResultData<UploadFileResponseBean> resultData) throws Exception { + if (resultData.getCode() == CODE_SUCCESS){ + MeetingBean bean = getBeanLiveData().getValue(); + if (bean != null){ + String urls = bean.getUrl(); + //鏇挎崲鍥剧墖鍦板潃 + urls = urls.replace(path,resultData.getData().getUrl()); + bean.setUrl(urls); + getBeanLiveData().postValue(bean); + } + return Observable.just(path); + }else { + return Observable.error(new Exception(resultData.getMsg())); + } + } + }); + + observables.add(uploadObservable); + } + Observable.zip(observables,result -> result) + .flatMap(new Function<Object[], Observable<ResultData<String>>>() { + @Override + public Observable<ResultData<String>> apply(Object[] objects) throws Exception { + //绉婚櫎宸茬粡涓婁紶鐨勬枃浠� + //鎶妎bjects鏁扮粍杞崲鎴恖ist锛岀劧鍚庣Щ闄� + for (Object object : objects) { + uploadFileList.remove((String) object); + } + return model.updateMeeting(beanLiveData.getValue()); + } + }) + .doOnSubscribe(new Consumer<Disposable>() { + @Override + public void accept(Disposable disposable) throws Exception { + changeStateView(StateViewEnum.DIALOG_LOADING); + } + }) + .doFinally(new Action() { + @Override + public void run() throws Exception { + changeStateView(StateViewEnum.DIALOG_DISMISS); + } + }) + .compose(RxUtils.schedulersTransformer()) + .subscribe(new Observer<ResultData<String>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<String> stringResultData) { + if (stringResultData.getCode() == CODE_SUCCESS){ + AppManager.getAppManager().finishCurrentActivity(); + RxBus.getInstance().post(beanLiveData.getValue()); + messageLiveData.postValue("淇敼鎴愬姛"); + }else { + messageLiveData.postValue(stringResultData.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + }else { + model.updateMeeting(beanLiveData.getValue()) + .compose(RxUtils.schedulersTransformer()) + .subscribe(new Observer<ResultData<String>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<String> stringResultData) { + if (stringResultData.getCode() == CODE_SUCCESS){ + AppManager.getAppManager().finishCurrentActivity(); + RxBus.getInstance().post(beanLiveData.getValue()); + messageLiveData.postValue("淇敼鎴愬姛"); + }else { + messageLiveData.postValue(stringResultData.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + + } + + + + + + + public MutableLiveData<MeetingBean> getBeanLiveData() { + if (beanLiveData == null){ + beanLiveData = new MutableLiveData<>(); + } + if (beanLiveData.getValue() == null){ + beanLiveData.setValue(new MeetingBean()); + } + return beanLiveData; + } + + public void setBeanLiveData(MutableLiveData<MeetingBean> beanLiveData) { + this.beanLiveData = beanLiveData; + } + + public MutableLiveData<Boolean> getTypeLiveData() { + if (typeLiveData == null){ + typeLiveData = new MutableLiveData<>(); + } + return typeLiveData; + } + + public void setTypeLiveData(MutableLiveData<Boolean> typeLiveData) { + this.typeLiveData = typeLiveData; + } + + public List<String> getUploadFileList() { + return uploadFileList; + } + + public void addUploadFile(String url) { + uploadFileList.add(url); + } + + +} diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebbackActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebbackActivity.java new file mode 100644 index 0000000..d11859e --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebbackActivity.java @@ -0,0 +1,389 @@ +package com.application.zhangshi_app_android.ui.function; + +import android.text.Editable; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.view.MotionEvent; +import android.view.View; +import android.widget.PopupWindow; + +import androidx.lifecycle.Observer; + +import com.android.app_base.utils.ScreenSizeUtils; +import com.android.app_base.utils.Utils; +import com.android.app_base.utils.rxbus.RxBus; +import com.android.app_base.widget.LinearItemDecoration; +import com.application.zhangshi_app_android.BR; +import com.application.zhangshi_app_android.R; +import com.application.zhangshi_app_android.adapter.databinding.WebbackRvAdapter; +import com.application.zhangshi_app_android.bean.WebbackBean; +import com.application.zhangshi_app_android.databinding.ActivityWebbackBinding; +import com.application.zhangshi_app_android.ui.DLBaseActivity; +import com.github.gzuliyujiang.wheelpicker.DatePicker; +import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener; + +import java.util.List; + +/** + * @author Ljj + * @date 2023.03.18. 10:00 + * @desc 瀹跺ぇ浜嬭 Activity + */ +public class WebbackActivity extends DLBaseActivity<ActivityWebbackBinding,WebbackActivityViewModel>{ + + WebbackRvAdapter adapter; + private PopupWindow mOperatePopupWindow; + private boolean isSearchLayoutVisible; + private int dateType; //0:寮�濮嬫椂闂� 1:缁撴潫鏃堕棿 + + @Override + public int getLayoutId() { + return R.layout.activity_webback; + } + + + + @Override + public int getVariableId() { + return BR.viewModel; + } + + @Override + public void initParam() { + + } + + + + + @Override + public void initView() { + //涓嬫媺鍒锋柊甯冨眬 + binding.refreshLayout.setEnableRefresh(false); + binding.refreshLayout.setEnableLoadMore(true); + binding.refreshLayout.setEnableOverScrollDrag(true); + binding.refreshLayout.setOnLoadMoreListener(refreshLayout -> { + viewModel.getMoreWebback(); + }); + //recyclerView閫傞厤鍣� + adapter = new WebbackRvAdapter(this,viewModel); + LinearItemDecoration itemDecoration = new LinearItemDecoration(); + itemDecoration.setBottomSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_12)); + itemDecoration.setHorizontalSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20)); + binding.recyclerView.addItemDecoration(itemDecoration); + binding.recyclerView.setAdapter(adapter); + //鍙充笂瑙掓搷浣滃脊绐� + mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_read,null)); + setOnClickListener( + mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old), + mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new), + mOperatePopupWindow.getContentView().findViewById(R.id.tv_own_top) + ); + //鐐瑰嚮鏀惧ぇ闀滄寜閽樉绀哄嚭鎼滅储妗� + binding.ivSearchDefault.setOnClickListener(v -> { + binding.layoutSearch.setVisibility(View.VISIBLE); + binding.layoutDefault.setVisibility(View.GONE); + }); + //鐐瑰嚮鎼滅储妗嗚彍鍗曚笅鎷夊嚭 鎼滅储鍙傛暟 + binding.ivSearchType.setOnClickListener(v -> { + if (!isSearchLayoutVisible){ + binding.layoutSearchParameter.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); + int targetHeight = binding.layoutSearchParameter.getMeasuredHeight(); + Utils.pullCollapse(binding.containerSearchParameter,0,targetHeight); + isSearchLayoutVisible = true; + } + }); + //鎼滅储鍙傛暟layout娣诲姞绌虹偣鍑讳簨浠讹紝闃叉鐐瑰嚮瀹冨唴閮╲iew鏃跺畠鍚庨潰鐨剅ecycler杩樿兘鍝嶅簲鐐瑰嚮浜嬩欢 + binding.layoutSearchParameter.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + } + }); + //鐐瑰嚮鎼滅储鎸夐挳杩涜鎼滅储 + binding.ivSearch.setOnClickListener(v -> { + viewModel.getWebback(); + binding.layoutSearch.setVisibility(View.GONE); + binding.layoutDefault.setVisibility(View.VISIBLE); + binding.tvTitle.setText("鎼滅储缁撴灉"); + hideSoftKeyboard(); + }); +// //鐐瑰嚮娣诲姞鎸夐挳璺宠浆鍒板垱寤哄澶т簨璁伴〉闈� +// binding.fabAdd.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// AppManager.getAppManager().startActivity(new Intent(getSelfActivity(), WebbackDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1)); +// } +// }); + + binding.etStartTime.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + if (!TextUtils.isEmpty(s)) { + binding.ivTimeClear.setVisibility(View.VISIBLE); + } else { + if (TextUtils.isEmpty(binding.etEndTime.getText().toString())) { + binding.ivTimeClear.setVisibility(View.INVISIBLE); + } + } + } + + @Override + public void afterTextChanged(Editable s) { + + } + }); + binding.etEndTime.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + if (!TextUtils.isEmpty(s)) { + binding.ivTimeClear.setVisibility(View.VISIBLE); + } else { + if (TextUtils.isEmpty(binding.etStartTime.getText().toString())) { + binding.ivTimeClear.setVisibility(View.INVISIBLE); + } + } } + + @Override + public void afterTextChanged(Editable s) { + + } + }); + binding.etStartTime.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + hideSoftKeyboard(); + DatePicker datePicker = getDatePicker(); + datePicker.setTitle("璇烽�夋嫨寮�濮嬫椂闂�"); + datePicker.setOnDatePickedListener(new OnDatePickedListener() { + @Override + public void onDatePicked(int year, int month, int day) { + //浠yyy-MM-dd鐨勬牸寮忔樉绀猴紝鏈堟棩灏忎簬10鏃跺墠闈㈣ˉ0 + binding.etStartTime.setText(String.format("%d-%02d-%02d", year, month, day)); + if (binding.etEndTime.getText().toString().isEmpty()){ + binding.etEndTime.setText(String.format("%d-%02d-%02d", year, month, day)); + }else { + //姣旇緝寮�濮嬫椂闂村拰缁撴潫鏃堕棿鐨勫ぇ灏� + String startTime = binding.etStartTime.getText().toString(); + String endTime = binding.etEndTime.getText().toString(); + if (Utils.compareDate(startTime,endTime) > 0){ + //浜ゆ崲 + binding.etStartTime.setText(endTime); + binding.etEndTime.setText(startTime); + } + } + } + }); + datePicker.show(); + + } + }); + binding.etEndTime.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + hideSoftKeyboard(); + DatePicker datePicker = getDatePicker(); + datePicker.setTitle("璇烽�夋嫨缁撴潫鏃堕棿"); + datePicker.setOnDatePickedListener(new OnDatePickedListener() { + @Override + public void onDatePicked(int year, int month, int day) { + binding.etEndTime.setText(String.format("%d-%02d-%02d", year, month, day)); + if (binding.etStartTime.getText().toString().isEmpty()){ + binding.etStartTime.setText(String.format("%d-%02d-%02d", year, month, day)); + }else { + //姣旇緝寮�濮嬫椂闂村拰缁撴潫鏃堕棿鐨勫ぇ灏� + String startTime = binding.etStartTime.getText().toString(); + String endTime = binding.etEndTime.getText().toString(); + if (Utils.compareDate(startTime,endTime) > 0){ + //浜ゆ崲 + binding.etStartTime.setText(endTime); + binding.etEndTime.setText(startTime); + } + } + } + }); + datePicker.show(); + } + }); + binding.ivTimeClear.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + binding.etStartTime.setText(""); + binding.etEndTime.setText(""); + } + }); + } + + + + @Override + public void initData() { + viewModel.getWebback(); + + } + + @Override + public boolean dispatchTouchEvent(MotionEvent event) { + float x = event.getX(); + float y = event.getY(); + if (isSearchLayoutVisible){ + if (!Utils.isPointInsideView(x, y, binding.layoutSearchParameter)) { + Utils.pullCollapse(binding.containerSearchParameter, binding.layoutSearchParameter.getMeasuredHeight(),0); + isSearchLayoutVisible = false; + return true; + + } + + } + return super.dispatchTouchEvent(event); + + + } + + + + + + + + + + @Override + public void initLiveDataObserve() { + viewModel.getDataListLiveData().observe(this, new Observer<List<WebbackBean>>() { + @Override + public void onChanged(List<WebbackBean> webbackBeans) { + adapter.setData(webbackBeans); + } + }); + viewModel.getCheckListLiveData().observe(this, new Observer<List<WebbackBean>>() { + @Override + public void onChanged(List<WebbackBean> webbackBeans) { + if (viewModel.getOperateTypeLiveData().getValue() == 0){ + return; + } + if (webbackBeans.isEmpty()){ + viewModel.getOperateTypeLiveData().setValue(1); + }else{ + viewModel.getOperateTypeLiveData().setValue(2); + } + } + }); + viewModel.getMoreListLiveData().observe(this, new Observer<List<WebbackBean>>() { + @Override + public void onChanged(List<WebbackBean> webbackBeans) { + adapter.addData(webbackBeans); + } + }); + viewModel.getOperateTypeLiveData().observe(this, integer -> { + if (integer == 0){ + binding.ivOperate.setBackgroundResource(R.drawable.ic_operate); + binding.ivOperate.setOnClickListener(v -> { + mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); + }); + adapter.setCheckable(false); + }else if (integer == 1){ + binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish); + binding.ivOperate.setOnClickListener(v -> { + viewModel.getOperateTypeLiveData().postValue(0); + }); + adapter.setCheckable(true); + } +// else if (integer == 2){ +// binding.ivOperate.setBackgroundResource(R.drawable.ic_delete_white); +// binding.ivOperate.setOnClickListener(v -> { +// new UIDialog.Builder(this) +// .setTitle("鎮ㄧ‘瀹氳鍒犻櫎閫変腑鐨勯」鐩悧") +// .setContent("椤圭洰鍒犻櫎鍚庡皢鏃犳硶鎭㈠") +// .setConfirm("纭畾") +// .setCancel("鍙栨秷") +// .setListener(new UIDialog.OnListener() { +// @Override +// public void onConfirm(BaseDialog dialog) { +// viewModel.deleteCheckList(); +// } +// }) +// .show(); +// }); +// } + }); + viewModel.getFinishDeleteListLiveData().observe(this, beans -> { + for (WebbackBean bean : beans) { + adapter.removeItem(bean); + } + }); + //瑙傚療瀹跺ぇ浜嬭鏁版嵁鐨勫彉鍖栵紝鏈夊彉鍖栧寘鎷坊鍔犮�佷慨鏀广�佸垹闄ら兘浼氬彂閫佹秷鎭紝鎺ユ敹鍒版秷鎭悗閲嶆柊鑾峰彇鏁版嵁 + RxBus.getInstance().toObservable(this, WebbackBean.class) + .subscribe(bean -> { + viewModel.getWebback(); + }); + } + + + @Override + protected void dataNull() { + super.dataNull(); + binding.layoutDataNull.setVisibility(View.VISIBLE); + binding.refreshLayout.setVisibility(View.GONE); + + } + + @Override + protected void dataFinish() { + super.dataFinish(); + binding.refreshLayout.finishLoadMore(); + } + + @Override + protected void hide() { + super.hide(); + binding.layoutDataNull.setVisibility(View.GONE); + binding.refreshLayout.setVisibility(View.VISIBLE); + binding.refreshLayout.finishLoadMore(); + } + + @Override + public void onClick(View v) { + int id = v.getId(); + if (id == R.id.tv_from_new_to_old) { + viewModel.changeOrder(true); + mOperatePopupWindow.dismiss(); + } else if (id == R.id.tv_from_old_to_new) { + viewModel.changeOrder(false); + mOperatePopupWindow.dismiss(); + } else if (id == R.id.tv_own_top) { + viewModel.ownTop(); + mOperatePopupWindow.dismiss(); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (mOperatePopupWindow != null){ + mOperatePopupWindow.dismiss(); + } + + } + +// private static final String TAG = "Meeting123"; +// @Override +// protected void onCreate(Bundle savedInstanceState){ +// super.onCreate(savedInstanceState); +// setContentView(R.layout.activity_meeting); +// MeetingBean data = new MeetingBean(); +// String b = String.valueOf(data.getDate1()); +// String c = String.valueOf(data.getTime1()); +// String d = String.valueOf(data.getStartTime()); +// Log.d(TAG,b+c+d); +// } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebbackActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebbackActivityViewModel.java new file mode 100644 index 0000000..61c6ff7 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebbackActivityViewModel.java @@ -0,0 +1,399 @@ +package com.application.zhangshi_app_android.ui.function; + +import static com.android.app_base.base.BaseConfig.CODE_SUCCESS; + +import android.app.Application; +import android.text.TextUtils; + +import androidx.annotation.NonNull; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.android.app_base.base.StateViewEnum; +import com.android.app_base.base.viewmodel.BaseViewModel; +import com.android.app_base.http.ResultData; +import com.android.app_base.utils.RxUtils; +import com.android.app_base.utils.Utils; +import com.application.zhangshi_app_android.bean.PageResponseBean; +import com.application.zhangshi_app_android.bean.WebbackBean; +import com.application.zhangshi_app_android.bean.WebbackRequestBean; +import com.application.zhangshi_app_android.data.DataRepository; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Action; + +/** + * @author Ljj + * @date 2023.03.18. 10:00 + * @desc 瀹跺ぇ浜嬭 viewmodel + */ +public class WebbackActivityViewModel extends BaseViewModel<DataRepository> { + + private MutableLiveData<List<WebbackBean>> checkListLiveData;//閫変腑鐨勬暟鎹� + private MutableLiveData<List<WebbackBean>> dataListLiveData;//鎵�鏈夋暟鎹� + private MutableLiveData<Integer> operateTypeLiveData;//鍙充笂瑙掓搷浣滄 鎿嶄綔绫诲瀷 0 寮瑰嚭閫夋嫨鎿嶄綔 1.瀹屾垚 2.鍒犻櫎 + private MutableLiveData<WebbackRequestBean> requestBeanLiveData;//璇锋眰鍙傛暟 + private MutableLiveData<List<WebbackBean>> moreListLiveData;//涓嬫媺鍔犺浇鏁版嵁 + private MutableLiveData<List<WebbackBean>> finishDeleteListLiveData;//宸茬粡瀹屾垚鍒犻櫎鐨勬暟鎹紝鐢ㄤ簬adapter鐨剅emove鎿嶄綔 + + //鍒涘缓骞跺垵濮嬪寲ViewModel + public WebbackActivityViewModel(@NonNull Application application) { + super(application); + } + + + //DataRepository 鏄竴涓暟鎹粨搴撶被锛岃礋璐g鐞嗘暟鎹殑鑾峰彇鍜屽瓨鍌紝 + // 璇ユ柟娉曢�氳繃璋冪敤 DataRepository.getInstance() 鏉ヨ幏鍙� DataRepository 鐨勫崟渚嬪疄渚嬶紝骞跺皢鍏惰繑鍥瀖odel銆� + @Override + protected DataRepository initModel() { + return DataRepository.getInstance(); + } + /** + * 鑾峰彇瀹跺ぇ浜� + * 璁� + */ + + + + //getRequestBeanLiveData().getValue() 妫�鏌ヨ姹傛暟鎹殑 LiveData 鏄惁涓虹┖銆� + // 濡傛灉涓虹┖锛屽垯鍒涘缓涓�涓柊鐨刉ebbackRequestBean 瀵硅薄锛屽苟灏嗗叾璁剧疆涓� LiveData 鐨勫�硷紝浠ョ‘淇濊姹傛暟鎹笉涓� null銆� + public void getWebback() { + if (getRequestBeanLiveData().getValue() == null){ + getRequestBeanLiveData().setValue(new WebbackRequestBean()); + } + //璁剧疆璇锋眰鏁版嵁瀵硅薄鐨勯〉鐮佷负 1锛岃〃绀鸿鑾峰彇绗竴椤电殑鏁版嵁銆� + getRequestBeanLiveData().getValue().setPageNum(1); + + //閫氳繃model(ViewModel 涓殑鏁版嵁浠撳簱瀵硅薄)鍙戣捣缃戠粶璇锋眰锛屽苟灏嗚姹傛暟鎹浆鎹负 Map 绫诲瀷锛屼互渚垮彂閫佺粰鏈嶅姟鍣ㄣ�� + model.getWebback(getRequestBeanLiveData().getValue().toMap()) + + //搴旂敤绾跨▼璋冨害鍣紝纭繚瑙傚療鑰呭湪姝g‘鐨勭嚎绋嬩笂杩愯銆� + .compose(RxUtils.schedulersTransformer()) + + //璁㈤槄杩欎釜缃戠粶璇锋眰鐨勭粨鏋� + .subscribe(new Observer<ResultData<PageResponseBean<WebbackBean>>>() { + @Override + + //灏嗚闃呭璞℃坊鍔犲埌 addSubscribe() 涓紝浠ヤ究鍦ㄤ笉鍐嶉渶瑕佹椂鍙栨秷璁㈤槄銆� + //鍒涘缓 Disposable 瀵硅薄鏉ョ鐞嗚闃� + // 浣跨敤 Disposable锛屽彲浠ユ湁鏁堝湴绠$悊寮傛鎿嶄綔鐨勭敓鍛藉懆鏈燂紝纭繚璧勬簮鍦ㄤ笉鍐嶉渶瑕佹椂琚纭噴鏀俱�� + + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + + + @Override + //onNext()澶勭悊鎴愬姛鑾峰彇鏁版嵁鐨勬儏鍐� + public void onNext(ResultData<PageResponseBean<WebbackBean>> data) { + if (data.getCode() == CODE_SUCCESS){ + if (data.getData().getData().isEmpty()){ + + //鏇存柊鐣岄潰鐘舵�佷负 StateViewEnum.DATA_NULL + changeStateView(StateViewEnum.DATA_NULL); + }else { + //闅愯棌鐘舵�佽鍥惧苟灏嗘暟鎹垪琛ㄥ彂甯冨埌 dataListLiveData + changeStateView(StateViewEnum.HIDE); + dataListLiveData.postValue(data.getData().getData()); + } + + //濡傛灉杩斿洖鐨勬暟鎹笉鎴愬姛锛屽垯灏嗘湇鍔″櫒杩斿洖鐨勬秷鎭彂甯冨埌 messageLiveData锛屼互渚块�氱煡鐢ㄦ埛銆� + }else { + messageLiveData.postValue(data.getMsg()); + } + } + + @Override + //onError()澶勭悊鍙戠敓閿欒鐨勬儏鍐碉紝灏嗛敊璇秷鎭彂甯冨埌 messageLiveData銆� + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + /** + * 鍔犺浇鏇村 + */ + public void getMoreWebback() { + if (getRequestBeanLiveData().getValue() == null){ + getRequestBeanLiveData().setValue(new WebbackRequestBean()); + } + getRequestBeanLiveData().getValue().setPageNum(getRequestBeanLiveData().getValue().getPageNum() + 1); + model.getWebback(getRequestBeanLiveData().getValue().toMap()) + .compose(RxUtils.schedulersTransformer()) + .doFinally(new Action() { + @Override + public void run() throws Exception { + changeStateView(StateViewEnum.DATA_FINISH); + } + }) + .subscribe(new Observer<ResultData<PageResponseBean<WebbackBean>>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<PageResponseBean<WebbackBean>> data) { + if (data.getCode() == CODE_SUCCESS){ + if (data.getData().getData().isEmpty()){ + messageLiveData.postValue("娌℃湁鏇村鏁版嵁浜�"); + }else { + changeStateView(StateViewEnum.HIDE); + moreListLiveData.postValue(data.getData().getData()); + } + }else { + messageLiveData.postValue(data.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + /** + * 鍒犻櫎瀹跺ぇ浜嬭 + */ +// public void deleteCheckList() { +// List<WebbackBean> deleteList = getCheckListLiveData().getValue(); +// if (deleteList == null){ +// return; +// } +// StringBuffer sb = new StringBuffer(); +// deleteList.forEach(WebbackBean -> sb.append(WebbackBean.getId()).append(",")); +// sb.deleteCharAt(sb.length()-1); +// model.deleteWebback(sb.toString()) +// .compose(RxUtils.schedulersTransformer()) +// .subscribe(new Observer<ResultData<String>>() { +// @Override +// public void onSubscribe(Disposable d) { +// addSubscribe(d); +// } +// +// @Override +// public void onNext(ResultData<String> stringResultData) { +// if (stringResultData.getCode() == CODE_SUCCESS){ +// messageLiveData.postValue("鍒犻櫎鎴愬姛"); +// finishDeleteListLiveData.postValue(checkListLiveData.getValue()); +// getCheckListLiveData().postValue(new ArrayList<>()); +// }else { +// messageLiveData.postValue(stringResultData.getMsg()); +// } +// } +// +// @Override +// public void onError(Throwable e) { +// messageLiveData.postValue(e.getMessage()); +// } +// +// @Override +// public void onComplete() { +// +// } +// }); +// } + /** + * 鍒犻櫎鍗曚釜鏁版嵁 + */ +// public void deleteItem(WebbackBean bean) { +// model.deleteWebback(String.valueOf(bean.getId())) +// .compose(RxUtils.schedulersTransformer()) +// .subscribe(new Observer<ResultData<String>>() { +// @Override +// public void onSubscribe(Disposable d) { +// addSubscribe(d); +// } +// +// @Override +// public void onNext(ResultData<String> stringResultData) { +// if (stringResultData.getCode() == CODE_SUCCESS){ +// List<WebbackBean> list = new ArrayList<>(); +// list.add(bean); +// finishDeleteListLiveData.postValue(list); +// messageLiveData.postValue("鍒犻櫎鎴愬姛"); +// }else { +// messageLiveData.postValue(stringResultData.getMsg()); +// } +// } +// +// @Override +// public void onError(Throwable e) { +// messageLiveData.postValue(e.getMessage()); +// } +// +// @Override +// public void onComplete() { +// +// } +// }); +// } + + public MutableLiveData<List<WebbackBean>> getCheckListLiveData() { + if (checkListLiveData==null){ + checkListLiveData = new MutableLiveData<>(); + checkListLiveData.postValue(new ArrayList<>()); + } + if (checkListLiveData.getValue() == null){ + checkListLiveData.postValue(new ArrayList<>()); + } + return checkListLiveData; + } + + public void setCheckListLiveData(MutableLiveData<List<WebbackBean>> checkListLiveData) { + this.checkListLiveData = checkListLiveData; + } + + @NonNull //NonNull 鐢ㄤ簬鏍囪鏂规硶鍙傛暟銆佽繑鍥炲�笺�佸瓧娈垫垨鏂规硶鐨勮繑鍥炵被鍨嬩笉鍏佽涓� null + + //getRequestBeanLiveData() 鑾峰彇涓�涓寘鍚玏ebbackRequestBean 鏁版嵁鐨� MutableLiveData 瀵硅薄銆� + public MutableLiveData<WebbackRequestBean> getRequestBeanLiveData() { + if (requestBeanLiveData == null){ + requestBeanLiveData = new MutableLiveData<>(); + } + if (requestBeanLiveData.getValue() == null){ + requestBeanLiveData.setValue(new WebbackRequestBean()); + } + return requestBeanLiveData; + } + + public void setRequestBeanLiveData(MutableLiveData<WebbackRequestBean> requestBeanLiveData) { + this.requestBeanLiveData = requestBeanLiveData; + } + + public MutableLiveData<List<WebbackBean>> getDataListLiveData() { + if (dataListLiveData == null){ + dataListLiveData = new MutableLiveData<>(); + } + return dataListLiveData; + } + + public void setDataListLiveData(MutableLiveData<List<WebbackBean>> dataListLiveData) { + this.dataListLiveData = dataListLiveData; + } + + @NonNull + public MutableLiveData<List<WebbackBean>> getMoreListLiveData() { + if (moreListLiveData == null){ + moreListLiveData = new MutableLiveData<>(); + } + return moreListLiveData; + } + + public void setMoreListLiveData(MutableLiveData<List<WebbackBean>> moreListLiveData) { + this.moreListLiveData = moreListLiveData; + } + + @NonNull + public MutableLiveData<Integer> getOperateTypeLiveData() { + if (operateTypeLiveData == null){ + operateTypeLiveData = new MutableLiveData<>(); + operateTypeLiveData.setValue(0); + } + return operateTypeLiveData; + } + + public void setOperateTypeLiveData(MutableLiveData<Integer> operateTypeLiveData) { + this.operateTypeLiveData = operateTypeLiveData; + } + + public LiveData<List<WebbackBean>> getFinishDeleteListLiveData() { + if (finishDeleteListLiveData == null){ + finishDeleteListLiveData = new MutableLiveData<>(); + } + return finishDeleteListLiveData; + } + + public void setFinishDeleteListLiveData(MutableLiveData<List<WebbackBean>> finishDeleteListLiveData) { + this.finishDeleteListLiveData = finishDeleteListLiveData; + } + + /** + * 鏀瑰彉鎺掑簭 + * @param b true 闄嶅簭 false 鍗囧簭 + */ + public void changeOrder(boolean b) { + List<WebbackBean> list = getDataListLiveData().getValue(); + if (list == null || list.isEmpty()){ + return; + } + if (b) { + // 浠庢柊鍒版棫锛宯ull鎺掓渶鍚� + list.sort((o1, o2) -> { + String happenTime1 = o1.getDate1(); + String happenTime2 = o2.getDate2(); + if (TextUtils.isEmpty(happenTime1) && TextUtils.isEmpty(happenTime2)) { + return 0; + } else if (TextUtils.isEmpty(happenTime1)) { + return 1; + } else if (TextUtils.isEmpty(happenTime2)) { + return -1; + } else { + Date date1 = Utils.parseDate(happenTime1); + Date date2 = Utils.parseDate(happenTime2); + if (date1 != null && date2 != null) { + return date2.compareTo(date1); + } + return 0; + } + }); + } else { + // 浠庢棫鍒版柊锛宯ull鎺掓渶鍓� + list.sort((o1, o2) -> { + String happenTime1 = o1.getDate1(); + String happenTime2 = o2.getDate2(); + if (TextUtils.isEmpty(happenTime1) && TextUtils.isEmpty(happenTime2)) { + return 0; + } else if (TextUtils.isEmpty(happenTime1)) { + return -1; + } else if (TextUtils.isEmpty(happenTime2)) { + return 1; + } else { + Date date1 = Utils.parseDate(happenTime1); + Date date2 = Utils.parseDate(happenTime2); + if (date1 != null && date2 != null) { + return date1.compareTo(date2); + } + return 0; + } + }); + } + getDataListLiveData().setValue(list); + } + + /** + * 鏈鏁版嵁 缃《 + */ + public void ownTop(){ + List<WebbackBean> list = getDataListLiveData().getValue(); + if (list == null || list.isEmpty()){ + return; + } + //鏍规嵁ownData鍊间负1鐨� 鏀惧埌鍓嶉潰 + list.sort((o1, o2) -> { + if (o1.getOwnData() == 1 && o2.getOwnData() == 0) { + return -1; + } else if (o1.getOwnData() == 0 && o2.getOwnData() == 1) { + return 1; + } + return 0; + }); + getDataListLiveData().setValue(list); + } +} diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebbackDetailActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebbackDetailActivity.java new file mode 100644 index 0000000..90a6fd9 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebbackDetailActivity.java @@ -0,0 +1,356 @@ +package com.application.zhangshi_app_android.ui.function; + +import android.app.Activity; +import android.content.ClipData; +import android.content.Intent; +import android.net.Uri; +import android.view.View; +import android.widget.PopupWindow; + +import androidx.activity.result.ActivityResult; +import androidx.activity.result.ActivityResultCallback; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; +import androidx.lifecycle.MutableLiveData; +import androidx.recyclerview.widget.GridLayoutManager; + +import com.android.app_base.base.BaseConfig; +import com.android.app_base.base.dialog.BaseDialog; +import com.android.app_base.base.dialog.WaitDialog; +import com.android.app_base.manager.UserManager; +import com.android.app_base.utils.GetFilePathFromUri; +import com.android.app_base.utils.Utils; +import com.application.zhangshi_app_android.BR; +import com.application.zhangshi_app_android.R; +import com.application.zhangshi_app_android.adapter.ElectronicFileAddAdapter; +import com.application.zhangshi_app_android.bean.WebbackBean; +import com.application.zhangshi_app_android.databinding.ActivityWebbackDetailBinding; +import com.application.zhangshi_app_android.ui.DLBaseActivity; +import com.github.gzuliyujiang.wheelpicker.DatePicker; +import com.github.gzuliyujiang.wheelpicker.OptionPicker; +import com.github.gzuliyujiang.wheelpicker.TimePicker; +import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener; +import com.github.gzuliyujiang.wheelpicker.contract.OnOptionPickedListener; +import com.github.gzuliyujiang.wheelpicker.contract.OnTimePickedListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.interfaces.OnResultCallbackListener; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Locale; + + +/** + * @author Gss + * @date 2023.03.25. 16:00 + * @desc 瀹跺ぇ浜嬭 MeetingDetailActivity + */ +public class WebbackDetailActivity extends DLBaseActivity<ActivityWebbackDetailBinding, WebbackDetailActivityViewModel> { + private int type;// 0 鏌ョ湅鍙慨鏀瑰垹闄� 1 鏂板 2 鐩存帴淇敼 + private PopupWindow popupWindow; + private MutableLiveData<WebbackBean> beanLiveData; + private ElectronicFileAddAdapter adapter; + private BaseDialog mWaitDialog; + private ActivityResultLauncher<Intent> activityResultLauncher; + @Override + public int getLayoutId() { + return R.layout.activity_webback_detail; + } + + @Override + public int getVariableId() { + return BR.viewModel; + } + + @Override + public void initParam() { + type = getIntent().getIntExtra(BaseConfig.EXTRA_TYPE,0); + if (type == 0 || type == 2){ + WebbackBean bean = (WebbackBean) getIntent().getSerializableExtra("bean"); + if (bean !=null){ + viewModel.getBeanLiveData().setValue(bean); + } + } + } + + + + @Override + public void initView() { + adapter = new ElectronicFileAddAdapter(this); + GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3); + binding.rvImage.setLayoutManager(gridLayoutManager); + binding.rvImage.setNestedScrollingEnabled(false); + adapter.setItemAndAddClickListener(new ElectronicFileAddAdapter.OnItemAndAddClickListener() { + @Override + public void onItemClick(View v, int position) { + + } + + @Override + public void onAddClick() { + OptionPicker picker = getOptionPicker(Arrays.asList("鍥剧墖瑙嗛","鍏朵粬鏂囦欢")); + picker.setTitle("閫夋嫨鏂囦欢绫诲瀷"); + picker.setOnOptionPickedListener(new OnOptionPickedListener() { + @Override + public void onOptionPicked(int position, Object item) { + if (item.equals("鍥剧墖瑙嗛")) { + UserManager.getInstance().selectImage(getSelfActivity(), 0,9, new OnResultCallbackListener<LocalMedia>() { + @Override + public void onResult(ArrayList<LocalMedia> result) { + if (result.size() == 0) return; + for (LocalMedia media : result) { + String path = media.getRealPath(); + if (path!=null){ + viewModel.addUploadFile(path); + WebbackBean bean = viewModel.getBeanLiveData().getValue(); + if (bean !=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + urlList.add(path); + bean.setUrl(Utils.appendList2String(urlList,",")); + } + viewModel.getBeanLiveData().setValue(bean); + } + } + } + @Override + public void onCancel() { + + } + }); + }else { + Intent intent = new Intent(Intent.ACTION_GET_CONTENT); +// Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); + intent.setType("*/*"); // 闄愬埗鏂囦欢绫诲瀷 + intent.addCategory(Intent.CATEGORY_OPENABLE); // 娣诲姞 CATEGORY_OPENABLE 鍒嗙被,鍛婅瘔绯荤粺瑕侀�夋嫨鐨勫唴瀹瑰彲浠ヨ鎵撳紑锛岃繖鏍风郴缁熶細杩囨护鎺変笉鑳借搴旂敤鎵撳紑鐨勬枃浠讹紝浠ユ彁渚涙洿濂界殑鐢ㄦ埛浣撻獙銆� + intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); // 鍏佽澶氶�� + activityResultLauncher.launch(intent); + } + } + }); + picker.show(); + + } + }); +// adapter.setOnChildClickListener(R.id.iv_delete, new BaseRVAdapter.OnChildClickListener() { +// @Override +// public void onChildClick(RecyclerView recyclerView, View childView, int position) { +// WebbackBean bean = viewModel.getBeanLiveData().getValue(); +// if (bean !=null){ +// List<String> urlList = Utils.splitString2List(bean.getUrl(),","); +// urlList.remove(adapter.getItem(position)); +// bean.setUrl(Utils.appendList2String(urlList,",")); +// } +// adapter.removeItem(position); +// viewModel.getBeanLiveData().setValue(bean); +// } +// }); + binding.rvImage.setAdapter(adapter); +// if (type == 1){ +// viewModel.getTypeLiveData().setValue(true); +// binding.titleBar.setTitle("鏂板瀹跺ぇ浜嬭"); +// binding.ivOperate.setOnClickListener(v -> { +// viewModel.add(); +// }); +// }else if (type == 0){ +// popupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_delete,null)); +// popupWindow.getContentView().findViewById(R.id.tv_modify).setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// viewModel.getTypeLiveData().postValue(true); +// popupWindow.dismiss(); +// } +// }); +// viewModel.getTypeLiveData().postValue(false); +// }else if (type == 2){ +// viewModel.getTypeLiveData().postValue(true); +// +// } + + + + binding.etDate1.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + DatePicker picker = getDatePicker(); + picker.setTitle("閫夋嫨鏃堕棿"); + picker.setOnDatePickedListener(new OnDatePickedListener() { + @Override + public void onDatePicked(int year, int month, int day) { + String date = String.format(Locale.CHINA, "%d-%02d-%02d", year, month, day); + binding.etDate1.setText(date); + } + }); + picker.show(); + } + }); + + binding.etDate2.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + DatePicker picker = getDatePicker(); + picker.setTitle("閫夋嫨鏃堕棿"); + picker.setOnDatePickedListener(new OnDatePickedListener() { + @Override + public void onDatePicked(int year, int month, int day) { + String date = String.format(Locale.CHINA, "%d-%02d-%02d", year, month, day); + binding.etDate2.setText(date); + } + }); + picker.show(); + } + }); + + binding.etTime1.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + TimePicker picker = getTimePicker(); + picker.setTitle("閫夋嫨鏃堕棿"); + picker.setOnTimePickedListener(new OnTimePickedListener() { + + @Override + + public void onTimePicked(int hour, int Minute,int second) { +// second = '0'; + String date = String.format(Locale.CHINA, "%d:%02d:%02d",hour,Minute,second); + binding.etTime1.setText(date); + } + }); + picker.show(); + } + }); + + + + + binding.etTime2.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + TimePicker picker = getTimePicker(); + picker.setTitle("閫夋嫨鏃堕棿"); + picker.setOnTimePickedListener(new OnTimePickedListener() { + @Override + public void onTimePicked(int hour, int Minute, int second) { + String date = String.format(Locale.CHINA, "%d:%02d:%02d",hour,Minute,second ); + binding.etTime2.setText(date); + } + }); + picker.show(); + } + }); + + + + + + + activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() { + @Override + public void onActivityResult(ActivityResult result) { + if (result.getResultCode() == Activity.RESULT_OK) { + if (result.getData() == null){ + return; + } + // 鑾峰彇閫変腑鐨勫涓枃浠剁殑 URI + ClipData clipData = result.getData().getClipData(); + if (clipData != null) { + int itemCount = clipData.getItemCount(); + for (int i = 0; i < itemCount; i++) { + Uri uri = clipData.getItemAt(i).getUri(); + // 浣跨敤閫変腑鐨勬枃浠� URI 杩涜鍚庣画鎿嶄綔锛屾瘮濡傝鍙栨枃浠跺唴瀹圭瓑 + String path = GetFilePathFromUri.getFileAbsolutePath(getSelfActivity(),uri); + if (path!=null){ + viewModel.addUploadFile(path); + WebbackBean bean = viewModel.getBeanLiveData().getValue(); + if (bean !=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + urlList.add(path); + bean.setUrl(Utils.appendList2String(urlList,",")); + } + viewModel.getBeanLiveData().setValue(bean); + } + } + }else { + // 鑾峰彇閫変腑鐨勫崟涓枃浠剁殑 URI + Uri selectedFileUri = result.getData().getData(); + String path = GetFilePathFromUri.getFileAbsolutePath(getSelfActivity(),selectedFileUri); + if (path!=null){ + viewModel.addUploadFile(path); + WebbackBean bean = viewModel.getBeanLiveData().getValue(); + if (bean !=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + urlList.add(path); + bean.setUrl(Utils.appendList2String(urlList,",")); + } + viewModel.getBeanLiveData().setValue(bean); + } + } + } + } + }); + + } + + @Override + public void initData() { +// beanLiveData.setValue=WebbackBean; + + } + + + @Override + public void initLiveDataObserve() { + viewModel.getBeanLiveData().observe(this, bean -> { + if (bean!=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + adapter.setData(urlList); + } + }); +// viewModel.getTypeLiveData().observe(this,operateType -> { +// if (operateType){ +// if (type == 1) { +// binding.ivOperate.setOnClickListener(v -> { +// viewModel.add(); +// }); +// }else { +// binding.ivOperate.setOnClickListener(v -> { +// viewModel.update(); +// }); +// } +// setIsEdited(true); +// }else { +// binding.ivOperate.setOnClickListener(v -> { +// popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); +// }); +// setIsEdited(false); +// } +// }); + } + + public void setIsEdited(boolean isEdited){ + adapter.setIsEdited(isEdited); + } + + @Override + protected void dialogLoading() { + if (mWaitDialog == null) { + mWaitDialog = new WaitDialog.Builder(this) + // 娑堟伅鏂囨湰鍙互涓嶇敤濉啓 + .setMessage("姝e湪涓婁紶") + .create(); + } + if (!mWaitDialog.isShowing()) { + mWaitDialog.show(); + } + } + + @Override + protected void dialogDismiss() { + if (mWaitDialog != null && mWaitDialog.isShowing()) { + mWaitDialog.dismiss(); + mWaitDialog = null; + } + } + +} diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebbackDetailActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebbackDetailActivityViewModel.java new file mode 100644 index 0000000..c728ea1 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebbackDetailActivityViewModel.java @@ -0,0 +1,342 @@ +package com.application.zhangshi_app_android.ui.function; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.MutableLiveData; + +import com.android.app_base.base.viewmodel.BaseViewModel; +import com.application.zhangshi_app_android.bean.WebbackBean; +import com.application.zhangshi_app_android.data.DataRepository; + +import java.util.ArrayList; +import java.util.List; + +public class WebbackDetailActivityViewModel extends BaseViewModel<DataRepository> { + + private MutableLiveData<WebbackBean> beanLiveData; + private MutableLiveData<Boolean> typeLiveData;//true 缂栬緫鐘舵�� false 灞曠ず鐘舵�� + private final List<String> uploadFileList = new ArrayList<>();//闇�瑕佷笂浼犵殑鏂囦欢鍒楄〃 + public WebbackDetailActivityViewModel(@NonNull Application application) { + super(application); + } + + @Override + protected DataRepository initModel() { + return DataRepository.getInstance(); + } + + /** + * 澧炲姞瀹跺ぇ浜嬭 + */ +// public void add() { +// if (uploadFileList.size() > 0) { +// List<Observable<String>> observables = new ArrayList<>(); +// for (String path : uploadFileList) { +// File file = new File(path); +// RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); +// MultipartBody.Part body = MultipartBody.Part.createFormData("uploadFile", file.getName(), requestBody); +// Observable<String> uploadObservable = model.uploadFile(body) +// .flatMap(new Function<ResultData<UploadFileResponseBean>, ObservableSource<String>>() { +// @Override +// public ObservableSource<String> apply(ResultData<UploadFileResponseBean> resultData) throws Exception { +// if (resultData.getCode() == CODE_SUCCESS) { +// WebbackBean bean = getBeanLiveData().getValue(); +// if (bean != null) { +// String urls = bean.getUrl(); +// //鏇挎崲鍥剧墖鍦板潃 +// urls = urls.replace(path, resultData.getData().getUrl()); +// bean.setUrl(urls); +// getBeanLiveData().postValue(bean); +// } +// return Observable.just(path); +// } else { +// return Observable.error(new Exception(resultData.getMsg())); +// } +// } +// }); +// +// observables.add(uploadObservable); +// } +// Observable.zip(observables, result -> result) +// .flatMap(new Function<Object[], Observable<ResultData<String>>>() { +// @Override +// public Observable<ResultData<String>> apply(Object[] objects) throws Exception { +// //绉婚櫎宸茬粡涓婁紶鐨勬枃浠� +// //鎶妎bjects鏁扮粍杞崲鎴恖ist锛岀劧鍚庣Щ闄� +// for (Object object : objects) { +// uploadFileList.remove((String) object); +// } +// return model.addWebback(beanLiveData.getValue()); +// } +// }) +// .doOnSubscribe(new Consumer<Disposable>() { +// @Override +// public void accept(Disposable disposable) throws Exception { +// changeStateView(StateViewEnum.DIALOG_LOADING); +// } +// }) +// .doFinally(new Action() { +// @Override +// public void run() throws Exception { +// changeStateView(StateViewEnum.DIALOG_DISMISS); +// } +// }) +// .compose(RxUtils.schedulersTransformer()) +// .subscribe(new Observer<ResultData<String>>() { +// @Override +// public void onSubscribe(Disposable d) { +// addSubscribe(d); +// } +// +// @Override +// public void onNext(ResultData<String> stringResultData) { +// if (stringResultData.getCode() == CODE_SUCCESS) { +// AppManager.getAppManager().finishCurrentActivity(); +// RxBus.getInstance().post(beanLiveData.getValue()); +// messageLiveData.postValue("娣诲姞鎴愬姛"); +// } else { +// messageLiveData.postValue(stringResultData.getMsg()); +// } +// } +// +// @Override +// public void onError(Throwable e) { +// messageLiveData.postValue(e.getMessage()); +// } +// +// @Override +// public void onComplete() { +// +// } +// }); +// }else { +// model.addMeeting(beanLiveData.getValue()) +// .compose(RxUtils.schedulersTransformer()) +// .subscribe(new Observer<ResultData<String>>() { +// @Override +// public void onSubscribe(Disposable d) { +// addSubscribe(d); +// } +// +// @Override +// public void onNext(ResultData<String> stringResultData) { +// if (stringResultData.getCode() == CODE_SUCCESS) { +// AppManager.getAppManager().finishCurrentActivity(); +// RxBus.getInstance().post(beanLiveData.getValue()); +// messageLiveData.postValue("娣诲姞鎴愬姛"); +// } else { +// messageLiveData.postValue(stringResultData.getMsg()); +// } +// } +// +// @Override +// public void onError(Throwable e) { +// messageLiveData.postValue(e.getMessage()); +// } +// +// @Override +// public void onComplete() { +// +// } +// }); +// } +// } + /** + * 鍒犻櫎瀹跺ぇ浜嬭 + */ +// public void delete() { +// model.deleteMeeting(String.valueOf(beanLiveData.getValue().getId())) +// .compose(RxUtils.schedulersTransformer()) +// .subscribe(new Observer<ResultData<String>>() { +// @Override +// public void onSubscribe(Disposable d) { +// addSubscribe(d); +// } +// +// @Override +// public void onNext(ResultData<String> stringResultData) { +// if (stringResultData.getCode() == CODE_SUCCESS){ +// AppManager.getAppManager().finishCurrentActivity(); +// RxBus.getInstance().post(beanLiveData.getValue()); +// messageLiveData.postValue("鍒犻櫎鎴愬姛"); +// }else { +// messageLiveData.postValue(stringResultData.getMsg()); +// } +// } +// +// @Override +// public void onError(Throwable e) { +// messageLiveData.postValue(e.getMessage()); +// } +// +// @Override +// public void onComplete() { +// +// } +// }); +// } + /** + * 缂栬緫瀹跺ぇ浜嬭 + */ +// public void update() { +// if (uploadFileList.size() > 0){ +// List<Observable<String>> observables = new ArrayList<>(); +// for (String path : uploadFileList) { +// File file = new File(path); +// RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); +// MultipartBody.Part body = MultipartBody.Part.createFormData("uploadFile", file.getName(), requestBody); +// Observable<String> uploadObservable = model.uploadFile(body) +// .flatMap(new Function<ResultData<UploadFileResponseBean>, ObservableSource<String>>() { +// @Override +// public ObservableSource<String> apply(ResultData<UploadFileResponseBean> resultData) throws Exception { +// if (resultData.getCode() == CODE_SUCCESS){ +// MeetingBean bean = getBeanLiveData().getValue(); +// if (bean != null){ +// String urls = bean.getUrl(); +// //鏇挎崲鍥剧墖鍦板潃 +// urls = urls.replace(path,resultData.getData().getUrl()); +// bean.setUrl(urls); +// getBeanLiveData().postValue(bean); +// } +// return Observable.just(path); +// }else { +// return Observable.error(new Exception(resultData.getMsg())); +// } +// } +// }); +// +// observables.add(uploadObservable); +// } +// Observable.zip(observables,result -> result) +// .flatMap(new Function<Object[], Observable<ResultData<String>>>() { +// @Override +// public Observable<ResultData<String>> apply(Object[] objects) throws Exception { +// //绉婚櫎宸茬粡涓婁紶鐨勬枃浠� +// //鎶妎bjects鏁扮粍杞崲鎴恖ist锛岀劧鍚庣Щ闄� +// for (Object object : objects) { +// uploadFileList.remove((String) object); +// } +// return model.updateMeeting(beanLiveData.getValue()); +// } +// }) +// .doOnSubscribe(new Consumer<Disposable>() { +// @Override +// public void accept(Disposable disposable) throws Exception { +// changeStateView(StateViewEnum.DIALOG_LOADING); +// } +// }) +// .doFinally(new Action() { +// @Override +// public void run() throws Exception { +// changeStateView(StateViewEnum.DIALOG_DISMISS); +// } +// }) +// .compose(RxUtils.schedulersTransformer()) +// .subscribe(new Observer<ResultData<String>>() { +// @Override +// public void onSubscribe(Disposable d) { +// addSubscribe(d); +// } +// +// @Override +// public void onNext(ResultData<String> stringResultData) { +// if (stringResultData.getCode() == CODE_SUCCESS){ +// AppManager.getAppManager().finishCurrentActivity(); +// RxBus.getInstance().post(beanLiveData.getValue()); +// messageLiveData.postValue("淇敼鎴愬姛"); +// }else { +// messageLiveData.postValue(stringResultData.getMsg()); +// } +// } +// +// @Override +// public void onError(Throwable e) { +// messageLiveData.postValue(e.getMessage()); +// } +// +// @Override +// public void onComplete() { +// +// } +// }); +// }else { +// model.updateMeeting(beanLiveData.getValue()) +// .compose(RxUtils.schedulersTransformer()) +// .subscribe(new Observer<ResultData<String>>() { +// @Override +// public void onSubscribe(Disposable d) { +// addSubscribe(d); +// } +// +// @Override +// public void onNext(ResultData<String> stringResultData) { +// if (stringResultData.getCode() == CODE_SUCCESS){ +// AppManager.getAppManager().finishCurrentActivity(); +// RxBus.getInstance().post(beanLiveData.getValue()); +// messageLiveData.postValue("淇敼鎴愬姛"); +// }else { +// messageLiveData.postValue(stringResultData.getMsg()); +// } +// } +// +// @Override +// public void onError(Throwable e) { +// +// +// +// +// +// +// +// +// +// +// +// messageLiveData.postValue(e.getMessage()); +// } +// +// @Override +// public void onComplete() { +// +// } +// }); +// } +// +// } + + public MutableLiveData<WebbackBean> getBeanLiveData() { + if (beanLiveData == null){ + beanLiveData = new MutableLiveData<>(); + } + if (beanLiveData.getValue() == null){ + beanLiveData.setValue(new WebbackBean()); + } + return beanLiveData; + } + + public void setBeanLiveData(MutableLiveData<WebbackBean> beanLiveData) { + this.beanLiveData = beanLiveData; + } + + public MutableLiveData<Boolean> getTypeLiveData() { + if (typeLiveData == null){ + typeLiveData = new MutableLiveData<>(); + } + return typeLiveData; + } + + public void setTypeLiveData(MutableLiveData<Boolean> typeLiveData) { + this.typeLiveData = typeLiveData; + } + + public List<String> getUploadFileList() { + return uploadFileList; + } + + public void addUploadFile(String url) { + uploadFileList.add(url); + } + + +} diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebcastActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebcastActivity.java new file mode 100644 index 0000000..c26901b --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebcastActivity.java @@ -0,0 +1,399 @@ +package com.application.zhangshi_app_android.ui.function; + +import android.content.Intent; +import android.text.Editable; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.view.MotionEvent; +import android.view.View; +import android.widget.PopupWindow; + +import androidx.lifecycle.Observer; + +import com.android.app_base.base.BaseConfig; +import com.android.app_base.manager.AppManager; +import com.android.app_base.utils.ScreenSizeUtils; +import com.android.app_base.utils.Utils; +import com.android.app_base.utils.rxbus.RxBus; +import com.android.app_base.widget.LinearItemDecoration; +import com.application.zhangshi_app_android.BR; +import com.application.zhangshi_app_android.R; +import com.application.zhangshi_app_android.adapter.WebcastRvAdapter; +import com.application.zhangshi_app_android.bean.WebcastBean; +import com.application.zhangshi_app_android.databinding.ActivityWebcastBinding; +import com.application.zhangshi_app_android.ui.DLBaseActivity; +import com.github.gzuliyujiang.wheelpicker.DatePicker; +import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener; + +import java.util.List; + +/** + * @author Ljj + * @date 2023.03.18. 10:00 + * @desc 瀹跺ぇ浜嬭 Activity + */ +public class WebcastActivity extends DLBaseActivity<ActivityWebcastBinding,WebcastActivityViewModel>{ + + WebcastRvAdapter adapter; + private PopupWindow mOperatePopupWindow; + private boolean isSearchLayoutVisible; + private int dateType; //0:寮�濮嬫椂闂� 1:缁撴潫鏃堕棿 + + @Override + public int getLayoutId() { + return R.layout.activity_webcast; + } + + + + @Override + public int getVariableId() { + return BR.viewModel; + } + + @Override + public void initParam() { + + } + + + + + @Override + public void initView() { + //涓嬫媺鍒锋柊甯冨眬 + binding.refreshLayout.setEnableRefresh(false); + binding.refreshLayout.setEnableLoadMore(true); + binding.refreshLayout.setEnableOverScrollDrag(true); + binding.refreshLayout.setOnLoadMoreListener(refreshLayout -> { + viewModel.getMoreWebcast(); + }); + //recyclerView閫傞厤鍣� + adapter = new WebcastRvAdapter(this,viewModel); + LinearItemDecoration itemDecoration = new LinearItemDecoration(); + itemDecoration.setBottomSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_12)); + itemDecoration.setHorizontalSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20)); + binding.recyclerView.addItemDecoration(itemDecoration); + binding.recyclerView.setAdapter(adapter); + //鍙充笂瑙掓搷浣滃脊绐� + mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate,null)); + setOnClickListener( + mOperatePopupWindow.getContentView().findViewById(R.id.tv_add), + mOperatePopupWindow.getContentView().findViewById(R.id.tv_select), + mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old), + mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new), + mOperatePopupWindow.getContentView().findViewById(R.id.tv_own_top) + ); + //鐐瑰嚮鏀惧ぇ闀滄寜閽樉绀哄嚭鎼滅储妗� + binding.ivSearchDefault.setOnClickListener(v -> { + binding.layoutSearch.setVisibility(View.VISIBLE); + binding.layoutDefault.setVisibility(View.GONE); + }); + //鐐瑰嚮鎼滅储妗嗚彍鍗曚笅鎷夊嚭 鎼滅储鍙傛暟 + binding.ivSearchType.setOnClickListener(v -> { + if (!isSearchLayoutVisible){ + binding.layoutSearchParameter.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); + int targetHeight = binding.layoutSearchParameter.getMeasuredHeight(); + Utils.pullCollapse(binding.containerSearchParameter,0,targetHeight); + isSearchLayoutVisible = true; + } + }); + //鎼滅储鍙傛暟layout娣诲姞绌虹偣鍑讳簨浠讹紝闃叉鐐瑰嚮瀹冨唴閮╲iew鏃跺畠鍚庨潰鐨剅ecycler杩樿兘鍝嶅簲鐐瑰嚮浜嬩欢 + binding.layoutSearchParameter.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + } + }); + //鐐瑰嚮鎼滅储鎸夐挳杩涜鎼滅储 + binding.ivSearch.setOnClickListener(v -> { + viewModel.getWebcast(); + binding.layoutSearch.setVisibility(View.GONE); + binding.layoutDefault.setVisibility(View.VISIBLE); + binding.tvTitle.setText("鎼滅储缁撴灉"); + hideSoftKeyboard(); + }); + //鐐瑰嚮娣诲姞鎸夐挳璺宠浆鍒板垱寤哄澶т簨璁伴〉闈� + binding.fabAdd.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + AppManager.getAppManager().startActivity(new Intent(getSelfActivity(),WebcastDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1)); + } + }); + + binding.etStartTime.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + if (!TextUtils.isEmpty(s)) { + binding.ivTimeClear.setVisibility(View.VISIBLE); + } else { + if (TextUtils.isEmpty(binding.etEndTime.getText().toString())) { + binding.ivTimeClear.setVisibility(View.INVISIBLE); + } + } + } + + @Override + public void afterTextChanged(Editable s) { + + } + }); + binding.etEndTime.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + if (!TextUtils.isEmpty(s)) { + binding.ivTimeClear.setVisibility(View.VISIBLE); + } else { + if (TextUtils.isEmpty(binding.etStartTime.getText().toString())) { + binding.ivTimeClear.setVisibility(View.INVISIBLE); + } + } } + + @Override + public void afterTextChanged(Editable s) { + + } + }); + binding.etStartTime.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + hideSoftKeyboard(); + DatePicker datePicker = getDatePicker(); + datePicker.setTitle("璇烽�夋嫨寮�濮嬫椂闂�"); + datePicker.setOnDatePickedListener(new OnDatePickedListener() { + @Override + public void onDatePicked(int year, int month, int day) { + //浠yyy-MM-dd鐨勬牸寮忔樉绀猴紝鏈堟棩灏忎簬10鏃跺墠闈㈣ˉ0 + binding.etStartTime.setText(String.format("%d-%02d-%02d", year, month, day)); + if (binding.etEndTime.getText().toString().isEmpty()){ + binding.etEndTime.setText(String.format("%d-%02d-%02d", year, month, day)); + }else { + //姣旇緝寮�濮嬫椂闂村拰缁撴潫鏃堕棿鐨勫ぇ灏� + String startTime = binding.etStartTime.getText().toString(); + String endTime = binding.etEndTime.getText().toString(); + if (Utils.compareDate(startTime,endTime) > 0){ + //浜ゆ崲 + binding.etStartTime.setText(endTime); + binding.etEndTime.setText(startTime); + } + } + } + }); + datePicker.show(); + + } + }); + binding.etEndTime.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + hideSoftKeyboard(); + DatePicker datePicker = getDatePicker(); + datePicker.setTitle("璇烽�夋嫨缁撴潫鏃堕棿"); + datePicker.setOnDatePickedListener(new OnDatePickedListener() { + @Override + public void onDatePicked(int year, int month, int day) { + binding.etEndTime.setText(String.format("%d-%02d-%02d", year, month, day)); + if (binding.etStartTime.getText().toString().isEmpty()){ + binding.etStartTime.setText(String.format("%d-%02d-%02d", year, month, day)); + }else { + //姣旇緝寮�濮嬫椂闂村拰缁撴潫鏃堕棿鐨勫ぇ灏� + String startTime = binding.etStartTime.getText().toString(); + String endTime = binding.etEndTime.getText().toString(); + if (Utils.compareDate(startTime,endTime) > 0){ + //浜ゆ崲 + binding.etStartTime.setText(endTime); + binding.etEndTime.setText(startTime); + } + } + } + }); + datePicker.show(); + } + }); + binding.ivTimeClear.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + binding.etStartTime.setText(""); + binding.etEndTime.setText(""); + } + }); + } + + + + @Override + public void initData() { + viewModel.getWebcast(); + + } + + @Override + public boolean dispatchTouchEvent(MotionEvent event) { + float x = event.getX(); + float y = event.getY(); + if (isSearchLayoutVisible){ + if (!Utils.isPointInsideView(x, y, binding.layoutSearchParameter)) { + Utils.pullCollapse(binding.containerSearchParameter, binding.layoutSearchParameter.getMeasuredHeight(),0); + isSearchLayoutVisible = false; + return true; + + } + + } + return super.dispatchTouchEvent(event); + + + } + + + + + + + + + + @Override + public void initLiveDataObserve() { + viewModel.getDataListLiveData().observe(this, new Observer<List<WebcastBean>>() { + @Override + public void onChanged(List<WebcastBean> webcastBeans) { + adapter.setData(webcastBeans); + } + }); + viewModel.getCheckListLiveData().observe(this, new Observer<List<WebcastBean>>() { + @Override + public void onChanged(List<WebcastBean> webcastBeans) { + if (viewModel.getOperateTypeLiveData().getValue() == 0){ + return; + } + if (webcastBeans.isEmpty()){ + viewModel.getOperateTypeLiveData().setValue(1); + }else{ + viewModel.getOperateTypeLiveData().setValue(2); + } + } + }); + viewModel.getMoreListLiveData().observe(this, new Observer<List<WebcastBean>>() { + @Override + public void onChanged(List<WebcastBean> webcastBeans) { + adapter.addData(webcastBeans); + } + }); + viewModel.getOperateTypeLiveData().observe(this, integer -> { + if (integer == 0){ + binding.ivOperate.setBackgroundResource(R.drawable.ic_operate); + binding.ivOperate.setOnClickListener(v -> { + mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); + }); + adapter.setCheckable(false); + }else if (integer == 1){ + binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish); + binding.ivOperate.setOnClickListener(v -> { + viewModel.getOperateTypeLiveData().postValue(0); + }); + adapter.setCheckable(true); + } +// else if (integer == 2){ +// binding.ivOperate.setBackgroundResource(R.drawable.ic_delete_white); +// binding.ivOperate.setOnClickListener(v -> { +// new UIDialog.Builder(this) +// .setTitle("鎮ㄧ‘瀹氳鍒犻櫎閫変腑鐨勯」鐩悧") +// .setContent("椤圭洰鍒犻櫎鍚庡皢鏃犳硶鎭㈠") +// .setConfirm("纭畾") +// .setCancel("鍙栨秷") +// .setListener(new UIDialog.OnListener() { +// @Override +// public void onConfirm(BaseDialog dialog) { +// viewModel.deleteCheckList(); +// } +// }) +// .show(); +// }); +// } + }); + viewModel.getFinishDeleteListLiveData().observe(this, beans -> { + for (WebcastBean bean : beans) { + adapter.removeItem(bean); + } + }); + //瑙傚療瀹跺ぇ浜嬭鏁版嵁鐨勫彉鍖栵紝鏈夊彉鍖栧寘鎷坊鍔犮�佷慨鏀广�佸垹闄ら兘浼氬彂閫佹秷鎭紝鎺ユ敹鍒版秷鎭悗閲嶆柊鑾峰彇鏁版嵁 + RxBus.getInstance().toObservable(this,WebcastBean.class) + .subscribe(bean -> { + viewModel.getWebcast(); + }); + } + + + @Override + protected void dataNull() { + super.dataNull(); + binding.layoutDataNull.setVisibility(View.VISIBLE); + binding.refreshLayout.setVisibility(View.GONE); + + } + + @Override + protected void dataFinish() { + super.dataFinish(); + binding.refreshLayout.finishLoadMore(); + } + + @Override + protected void hide() { + super.hide(); + binding.layoutDataNull.setVisibility(View.GONE); + binding.refreshLayout.setVisibility(View.VISIBLE); + binding.refreshLayout.finishLoadMore(); + } + + @Override + public void onClick(View v) { + int id = v.getId(); + if (id == R.id.tv_add){ + AppManager.getAppManager().startActivity(new Intent(this,WebcastDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1)); + }else if (id == R.id.tv_select){ + viewModel.getOperateTypeLiveData().postValue(1); + mOperatePopupWindow.dismiss(); + } else if (id == R.id.tv_from_new_to_old) { + viewModel.changeOrder(true); + mOperatePopupWindow.dismiss(); + } else if (id == R.id.tv_from_old_to_new) { + viewModel.changeOrder(false); + mOperatePopupWindow.dismiss(); + } else if (id == R.id.tv_own_top) { + viewModel.ownTop(); + mOperatePopupWindow.dismiss(); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (mOperatePopupWindow != null){ + mOperatePopupWindow.dismiss(); + } + + } + +// private static final String TAG = "Webcast123"; +// @Override +// protected void onCreate(Bundle savedInstanceState){ +// super.onCreate(savedInstanceState); +// setContentView(R.layout.activity_Webcast); +// WebcastBean data = newWebcastBean(); +// String b = String.valueOf(data.getDate1()); +// String c = String.valueOf(data.getTime1()); +// String d = String.valueOf(data.getStartTime()); +// Log.d(TAG,b+c+d); +// } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebcastActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebcastActivityViewModel.java new file mode 100644 index 0000000..9e0c919 --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebcastActivityViewModel.java @@ -0,0 +1,399 @@ +package com.application.zhangshi_app_android.ui.function; + +import static com.android.app_base.base.BaseConfig.CODE_SUCCESS; + +import android.app.Application; +import android.text.TextUtils; + +import androidx.annotation.NonNull; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.android.app_base.base.StateViewEnum; +import com.android.app_base.base.viewmodel.BaseViewModel; +import com.android.app_base.http.ResultData; +import com.android.app_base.utils.RxUtils; +import com.android.app_base.utils.Utils; +import com.application.zhangshi_app_android.bean.PageResponseBean; +import com.application.zhangshi_app_android.bean.WebcastBean; +import com.application.zhangshi_app_android.bean.WebcastRequestBean; +import com.application.zhangshi_app_android.data.DataRepository; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Action; + +/** + * @author Ljj + * @date 2023.03.18. 10:00 + * @desc 瀹跺ぇ浜嬭 viewmodel + */ +public class WebcastActivityViewModel extends BaseViewModel<DataRepository> { + + private MutableLiveData<List<WebcastBean>> checkListLiveData;//閫変腑鐨勬暟鎹� + private MutableLiveData<List<WebcastBean>> dataListLiveData;//鎵�鏈夋暟鎹� + private MutableLiveData<Integer> operateTypeLiveData;//鍙充笂瑙掓搷浣滄 鎿嶄綔绫诲瀷 0 寮瑰嚭閫夋嫨鎿嶄綔 1.瀹屾垚 2.鍒犻櫎 + private MutableLiveData<WebcastRequestBean> requestBeanLiveData;//璇锋眰鍙傛暟 + private MutableLiveData<List<WebcastBean>> moreListLiveData;//涓嬫媺鍔犺浇鏁版嵁 + private MutableLiveData<List<WebcastBean>> finishDeleteListLiveData;//宸茬粡瀹屾垚鍒犻櫎鐨勬暟鎹紝鐢ㄤ簬adapter鐨剅emove鎿嶄綔 + + //鍒涘缓骞跺垵濮嬪寲ViewModel + public WebcastActivityViewModel(@NonNull Application application) { + super(application); + } + + + //DataRepository 鏄竴涓暟鎹粨搴撶被锛岃礋璐g鐞嗘暟鎹殑鑾峰彇鍜屽瓨鍌紝 + // 璇ユ柟娉曢�氳繃璋冪敤 DataRepository.getInstance() 鏉ヨ幏鍙� DataRepository 鐨勫崟渚嬪疄渚嬶紝骞跺皢鍏惰繑鍥瀖odel銆� + @Override + protected DataRepository initModel() { + return DataRepository.getInstance(); + } + /** + * 鑾峰彇瀹跺ぇ浜� + * 璁� + */ + + + + //getRequestBeanLiveData().getValue() 妫�鏌ヨ姹傛暟鎹殑 LiveData 鏄惁涓虹┖銆� + // 濡傛灉涓虹┖锛屽垯鍒涘缓涓�涓柊鐨刉ebcastRequestBean 瀵硅薄锛屽苟灏嗗叾璁剧疆涓� LiveData 鐨勫�硷紝浠ョ‘淇濊姹傛暟鎹笉涓� null銆� + public void getWebcast() { + if (getRequestBeanLiveData().getValue() == null){ + getRequestBeanLiveData().setValue(new WebcastRequestBean()); + } + //璁剧疆璇锋眰鏁版嵁瀵硅薄鐨勯〉鐮佷负 1锛岃〃绀鸿鑾峰彇绗竴椤电殑鏁版嵁銆� + getRequestBeanLiveData().getValue().setPageNum(1); + + //閫氳繃model(ViewModel 涓殑鏁版嵁浠撳簱瀵硅薄)鍙戣捣缃戠粶璇锋眰锛屽苟灏嗚姹傛暟鎹浆鎹负 Map 绫诲瀷锛屼互渚垮彂閫佺粰鏈嶅姟鍣ㄣ�� + model.getWebcast(getRequestBeanLiveData().getValue().toMap()) + + //搴旂敤绾跨▼璋冨害鍣紝纭繚瑙傚療鑰呭湪姝g‘鐨勭嚎绋嬩笂杩愯銆� + .compose(RxUtils.schedulersTransformer()) + + //璁㈤槄杩欎釜缃戠粶璇锋眰鐨勭粨鏋� + .subscribe(new Observer<ResultData<PageResponseBean<WebcastBean>>>() { + @Override + + //灏嗚闃呭璞℃坊鍔犲埌 addSubscribe() 涓紝浠ヤ究鍦ㄤ笉鍐嶉渶瑕佹椂鍙栨秷璁㈤槄銆� + //鍒涘缓 Disposable 瀵硅薄鏉ョ鐞嗚闃� + // 浣跨敤 Disposable锛屽彲浠ユ湁鏁堝湴绠$悊寮傛鎿嶄綔鐨勭敓鍛藉懆鏈燂紝纭繚璧勬簮鍦ㄤ笉鍐嶉渶瑕佹椂琚纭噴鏀俱�� + + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + + + @Override + //onNext()澶勭悊鎴愬姛鑾峰彇鏁版嵁鐨勬儏鍐� + public void onNext(ResultData<PageResponseBean<WebcastBean>> data) { + if (data.getCode() == CODE_SUCCESS){ + if (data.getData().getData().isEmpty()){ + + //鏇存柊鐣岄潰鐘舵�佷负 StateViewEnum.DATA_NULL + changeStateView(StateViewEnum.DATA_NULL); + }else { + //闅愯棌鐘舵�佽鍥惧苟灏嗘暟鎹垪琛ㄥ彂甯冨埌 dataListLiveData + changeStateView(StateViewEnum.HIDE); + dataListLiveData.postValue(data.getData().getData()); + } + + //濡傛灉杩斿洖鐨勬暟鎹笉鎴愬姛锛屽垯灏嗘湇鍔″櫒杩斿洖鐨勬秷鎭彂甯冨埌 messageLiveData锛屼互渚块�氱煡鐢ㄦ埛銆� + }else { + messageLiveData.postValue(data.getMsg()); + } + } + + @Override + //onError()澶勭悊鍙戠敓閿欒鐨勬儏鍐碉紝灏嗛敊璇秷鎭彂甯冨埌 messageLiveData銆� + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + /** + * 鍔犺浇鏇村 + */ + public void getMoreWebcast() { + if (getRequestBeanLiveData().getValue() == null){ + getRequestBeanLiveData().setValue(new WebcastRequestBean()); + } + getRequestBeanLiveData().getValue().setPageNum(getRequestBeanLiveData().getValue().getPageNum() + 1); + model.getWebcast(getRequestBeanLiveData().getValue().toMap()) + .compose(RxUtils.schedulersTransformer()) + .doFinally(new Action() { + @Override + public void run() throws Exception { + changeStateView(StateViewEnum.DATA_FINISH); + } + }) + .subscribe(new Observer<ResultData<PageResponseBean<WebcastBean>>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<PageResponseBean<WebcastBean>> data) { + if (data.getCode() == CODE_SUCCESS){ + if (data.getData().getData().isEmpty()){ + messageLiveData.postValue("娌℃湁鏇村鏁版嵁浜�"); + }else { + changeStateView(StateViewEnum.HIDE); + moreListLiveData.postValue(data.getData().getData()); + } + }else { + messageLiveData.postValue(data.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + /** + * 鍒犻櫎瀹跺ぇ浜嬭 + */ +// public void deleteCheckList() { +// List<WebcastBean> deleteList = getCheckListLiveData().getValue(); +// if (deleteList == null){ +// return; +// } +// StringBuffer sb = new StringBuffer(); +// deleteList.forEach(WebcastBean -> sb.append(WebcastBean.getId()).append(",")); +// sb.deleteCharAt(sb.length()-1); +// model.deleteWebcast(sb.toString()) +// .compose(RxUtils.schedulersTransformer()) +// .subscribe(new Observer<ResultData<String>>() { +// @Override +// public void onSubscribe(Disposable d) { +// addSubscribe(d); +// } +// +// @Override +// public void onNext(ResultData<String> stringResultData) { +// if (stringResultData.getCode() == CODE_SUCCESS){ +// messageLiveData.postValue("鍒犻櫎鎴愬姛"); +// finishDeleteListLiveData.postValue(checkListLiveData.getValue()); +// getCheckListLiveData().postValue(new ArrayList<>()); +// }else { +// messageLiveData.postValue(stringResultData.getMsg()); +// } +// } +// +// @Override +// public void onError(Throwable e) { +// messageLiveData.postValue(e.getMessage()); +// } +// +// @Override +// public void onComplete() { +// +// } +// }); +// } + /** + * 鍒犻櫎鍗曚釜鏁版嵁 + */ +// public void deleteItem(WebcastBean bean) { +// model.deleteWebcast(String.valueOf(bean.getId())) +// .compose(RxUtils.schedulersTransformer()) +// .subscribe(new Observer<ResultData<String>>() { +// @Override +// public void onSubscribe(Disposable d) { +// addSubscribe(d); +// } +// +// @Override +// public void onNext(ResultData<String> stringResultData) { +// if (stringResultData.getCode() == CODE_SUCCESS){ +// List<WebcastBean> list = new ArrayList<>(); +// list.add(bean); +// finishDeleteListLiveData.postValue(list); +// messageLiveData.postValue("鍒犻櫎鎴愬姛"); +// }else { +// messageLiveData.postValue(stringResultData.getMsg()); +// } +// } +// +// @Override +// public void onError(Throwable e) { +// messageLiveData.postValue(e.getMessage()); +// } +// +// @Override +// public void onComplete() { +// +// } +// }); +// } + + public MutableLiveData<List<WebcastBean>> getCheckListLiveData() { + if (checkListLiveData==null){ + checkListLiveData = new MutableLiveData<>(); + checkListLiveData.postValue(new ArrayList<>()); + } + if (checkListLiveData.getValue() == null){ + checkListLiveData.postValue(new ArrayList<>()); + } + return checkListLiveData; + } + + public void setCheckListLiveData(MutableLiveData<List<WebcastBean>> checkListLiveData) { + this.checkListLiveData = checkListLiveData; + } + + @NonNull //NonNull 鐢ㄤ簬鏍囪鏂规硶鍙傛暟銆佽繑鍥炲�笺�佸瓧娈垫垨鏂规硶鐨勮繑鍥炵被鍨嬩笉鍏佽涓� null + + //getRequestBeanLiveData() 鑾峰彇涓�涓寘鍚玏ebcastRequestBean 鏁版嵁鐨� MutableLiveData 瀵硅薄銆� + public MutableLiveData<WebcastRequestBean> getRequestBeanLiveData() { + if (requestBeanLiveData == null){ + requestBeanLiveData = new MutableLiveData<>(); + } + if (requestBeanLiveData.getValue() == null){ + requestBeanLiveData.setValue(new WebcastRequestBean()); + } + return requestBeanLiveData; + } + + public void setRequestBeanLiveData(MutableLiveData<WebcastRequestBean> requestBeanLiveData) { + this.requestBeanLiveData = requestBeanLiveData; + } + + public MutableLiveData<List<WebcastBean>> getDataListLiveData() { + if (dataListLiveData == null){ + dataListLiveData = new MutableLiveData<>(); + } + return dataListLiveData; + } + + public void setDataListLiveData(MutableLiveData<List<WebcastBean>> dataListLiveData) { + this.dataListLiveData = dataListLiveData; + } + + @NonNull + public MutableLiveData<List<WebcastBean>> getMoreListLiveData() { + if (moreListLiveData == null){ + moreListLiveData = new MutableLiveData<>(); + } + return moreListLiveData; + } + + public void setMoreListLiveData(MutableLiveData<List<WebcastBean>> moreListLiveData) { + this.moreListLiveData = moreListLiveData; + } + + @NonNull + public MutableLiveData<Integer> getOperateTypeLiveData() { + if (operateTypeLiveData == null){ + operateTypeLiveData = new MutableLiveData<>(); + operateTypeLiveData.setValue(0); + } + return operateTypeLiveData; + } + + public void setOperateTypeLiveData(MutableLiveData<Integer> operateTypeLiveData) { + this.operateTypeLiveData = operateTypeLiveData; + } + + public LiveData<List<WebcastBean>> getFinishDeleteListLiveData() { + if (finishDeleteListLiveData == null){ + finishDeleteListLiveData = new MutableLiveData<>(); + } + return finishDeleteListLiveData; + } + + public void setFinishDeleteListLiveData(MutableLiveData<List<WebcastBean>> finishDeleteListLiveData) { + this.finishDeleteListLiveData = finishDeleteListLiveData; + } + + /** + * 鏀瑰彉鎺掑簭 + * @param b true 闄嶅簭 false 鍗囧簭 + */ + public void changeOrder(boolean b) { + List<WebcastBean> list = getDataListLiveData().getValue(); + if (list == null || list.isEmpty()){ + return; + } + if (b) { + // 浠庢柊鍒版棫锛宯ull鎺掓渶鍚� + list.sort((o1, o2) -> { + String happenTime1 = o1.getDate1(); + String happenTime2 = o2.getDate2(); + if (TextUtils.isEmpty(happenTime1) && TextUtils.isEmpty(happenTime2)) { + return 0; + } else if (TextUtils.isEmpty(happenTime1)) { + return 1; + } else if (TextUtils.isEmpty(happenTime2)) { + return -1; + } else { + Date date1 = Utils.parseDate(happenTime1); + Date date2 = Utils.parseDate(happenTime2); + if (date1 != null && date2 != null) { + return date2.compareTo(date1); + } + return 0; + } + }); + } else { + // 浠庢棫鍒版柊锛宯ull鎺掓渶鍓� + list.sort((o1, o2) -> { + String happenTime1 = o1.getDate1(); + String happenTime2 = o2.getDate2(); + if (TextUtils.isEmpty(happenTime1) && TextUtils.isEmpty(happenTime2)) { + return 0; + } else if (TextUtils.isEmpty(happenTime1)) { + return -1; + } else if (TextUtils.isEmpty(happenTime2)) { + return 1; + } else { + Date date1 = Utils.parseDate(happenTime1); + Date date2 = Utils.parseDate(happenTime2); + if (date1 != null && date2 != null) { + return date1.compareTo(date2); + } + return 0; + } + }); + } + getDataListLiveData().setValue(list); + } + + /** + * 鏈鏁版嵁 缃《 + */ + public void ownTop(){ + List<WebcastBean> list = getDataListLiveData().getValue(); + if (list == null || list.isEmpty()){ + return; + } + //鏍规嵁ownData鍊间负1鐨� 鏀惧埌鍓嶉潰 + list.sort((o1, o2) -> { + if (o1.getOwnData() == 1 && o2.getOwnData() == 0) { + return -1; + } else if (o1.getOwnData() == 0 && o2.getOwnData() == 1) { + return 1; + } + return 0; + }); + getDataListLiveData().setValue(list); + } +} diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebcastDetailActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebcastDetailActivity.java new file mode 100644 index 0000000..4fe323c --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebcastDetailActivity.java @@ -0,0 +1,360 @@ +package com.application.zhangshi_app_android.ui.function; + +import android.app.Activity; +import android.content.ClipData; +import android.content.Intent; +import android.net.Uri; +import android.view.View; +import android.widget.PopupWindow; + +import androidx.activity.result.ActivityResult; +import androidx.activity.result.ActivityResultCallback; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; +import androidx.lifecycle.MutableLiveData; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.android.app_base.base.BaseConfig; +import com.android.app_base.base.adapter.BaseRVAdapter; +import com.android.app_base.base.dialog.BaseDialog; +import com.android.app_base.base.dialog.WaitDialog; +import com.android.app_base.manager.UserManager; +import com.android.app_base.utils.GetFilePathFromUri; +import com.android.app_base.utils.ScreenSizeUtils; +import com.android.app_base.utils.Utils; +import com.application.zhangshi_app_android.BR; +import com.application.zhangshi_app_android.R; +import com.application.zhangshi_app_android.adapter.ElectronicFileAddAdapter; +import com.application.zhangshi_app_android.bean.WebcastBean; +import com.application.zhangshi_app_android.databinding.ActivityWebcastDetailBinding; +import com.application.zhangshi_app_android.ui.DLBaseActivity; +import com.github.gzuliyujiang.wheelpicker.DatePicker; +import com.github.gzuliyujiang.wheelpicker.OptionPicker; +import com.github.gzuliyujiang.wheelpicker.TimePicker; +import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener; +import com.github.gzuliyujiang.wheelpicker.contract.OnOptionPickedListener; +import com.github.gzuliyujiang.wheelpicker.contract.OnTimePickedListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.interfaces.OnResultCallbackListener; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Locale; + + +/** + * @author Gss + * @date 2023.03.25. 16:00 + * @desc 瀹跺ぇ浜嬭 WebcastDetailActivity + */ +public class WebcastDetailActivity extends DLBaseActivity<ActivityWebcastDetailBinding, WebcastDetailActivityViewModel> { + private int type;// 0 鏌ョ湅鍙慨鏀瑰垹闄� 1 鏂板 2 鐩存帴淇敼 + private PopupWindow popupWindow; + private MutableLiveData<WebcastBean> beanLiveData; + private ElectronicFileAddAdapter adapter; + private BaseDialog mWaitDialog; + private ActivityResultLauncher<Intent> activityResultLauncher; + @Override + public int getLayoutId() { + return R.layout.activity_webcast_detail; + } + + @Override + public int getVariableId() { + return BR.viewModel; + } + + @Override + public void initParam() { + type = getIntent().getIntExtra(BaseConfig.EXTRA_TYPE,0); + if (type == 0 || type == 2){ + WebcastBean bean = (WebcastBean) getIntent().getSerializableExtra("bean"); + if (bean !=null){ + viewModel.getBeanLiveData().setValue(bean); + } + } + } + + + + @Override + public void initView() { + adapter = new ElectronicFileAddAdapter(this); + GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3); + binding.rvImage.setLayoutManager(gridLayoutManager); + binding.rvImage.setNestedScrollingEnabled(false); + adapter.setItemAndAddClickListener(new ElectronicFileAddAdapter.OnItemAndAddClickListener() { + @Override + public void onItemClick(View v, int position) { + + } + + @Override + public void onAddClick() { + OptionPicker picker = getOptionPicker(Arrays.asList("鍥剧墖瑙嗛","鍏朵粬鏂囦欢")); + picker.setTitle("閫夋嫨鏂囦欢绫诲瀷"); + picker.setOnOptionPickedListener(new OnOptionPickedListener() { + @Override + public void onOptionPicked(int position, Object item) { + if (item.equals("鍥剧墖瑙嗛")) { + UserManager.getInstance().selectImage(getSelfActivity(), 0,9, new OnResultCallbackListener<LocalMedia>() { + @Override + public void onResult(ArrayList<LocalMedia> result) { + if (result.size() == 0) return; + for (LocalMedia media : result) { + String path = media.getRealPath(); + if (path!=null){ + viewModel.addUploadFile(path); + WebcastBean bean = viewModel.getBeanLiveData().getValue(); + if (bean !=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + urlList.add(path); + bean.setUrl(Utils.appendList2String(urlList,",")); + } + viewModel.getBeanLiveData().setValue(bean); + } + } + } + @Override + public void onCancel() { + + } + }); + }else { + Intent intent = new Intent(Intent.ACTION_GET_CONTENT); +// Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); + intent.setType("*/*"); // 闄愬埗鏂囦欢绫诲瀷 + intent.addCategory(Intent.CATEGORY_OPENABLE); // 娣诲姞 CATEGORY_OPENABLE 鍒嗙被,鍛婅瘔绯荤粺瑕侀�夋嫨鐨勫唴瀹瑰彲浠ヨ鎵撳紑锛岃繖鏍风郴缁熶細杩囨护鎺変笉鑳借搴旂敤鎵撳紑鐨勬枃浠讹紝浠ユ彁渚涙洿濂界殑鐢ㄦ埛浣撻獙銆� + intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); // 鍏佽澶氶�� + activityResultLauncher.launch(intent); + } + } + }); + picker.show(); + + } + }); + adapter.setOnChildClickListener(R.id.iv_delete, new BaseRVAdapter.OnChildClickListener() { + @Override + public void onChildClick(RecyclerView recyclerView, View childView, int position) { + WebcastBean bean = viewModel.getBeanLiveData().getValue(); + if (bean !=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + urlList.remove(adapter.getItem(position)); + bean.setUrl(Utils.appendList2String(urlList,",")); + } + adapter.removeItem(position); + viewModel.getBeanLiveData().setValue(bean); + } + }); + binding.rvImage.setAdapter(adapter); + if (type == 1){ + viewModel.getTypeLiveData().setValue(true); + binding.titleBar.setTitle("鏂板瀹跺ぇ浜嬭"); + binding.ivOperate.setOnClickListener(v -> { + viewModel.add(); + }); + }else if (type == 0){ + popupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_delete,null)); + popupWindow.getContentView().findViewById(R.id.tv_modify).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + viewModel.getTypeLiveData().postValue(true); + popupWindow.dismiss(); + } + }); + viewModel.getTypeLiveData().postValue(false); + }else if (type == 2){ + viewModel.getTypeLiveData().postValue(true); + + } + + + + binding.etDate1.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + DatePicker picker = getDatePicker(); + picker.setTitle("閫夋嫨鏃堕棿"); + picker.setOnDatePickedListener(new OnDatePickedListener() { + @Override + public void onDatePicked(int year, int month, int day) { + String date = String.format(Locale.CHINA, "%d-%02d-%02d", year, month, day); + binding.etDate1.setText(date); + } + }); + picker.show(); + } + }); + + binding.etDate2.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + DatePicker picker = getDatePicker(); + picker.setTitle("閫夋嫨鏃堕棿"); + picker.setOnDatePickedListener(new OnDatePickedListener() { + @Override + public void onDatePicked(int year, int month, int day) { + String date = String.format(Locale.CHINA, "%d-%02d-%02d", year, month, day); + binding.etDate2.setText(date); + } + }); + picker.show(); + } + }); + + binding.etTime1.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + TimePicker picker = getTimePicker(); + picker.setTitle("閫夋嫨鏃堕棿"); + picker.setOnTimePickedListener(new OnTimePickedListener() { + + @Override + + public void onTimePicked(int hour, int Minute,int second) { +// second = '0'; + String date = String.format(Locale.CHINA, "%d:%02d:%02d",hour,Minute,second); + binding.etTime1.setText(date); + } + }); + picker.show(); + } + }); + + + + + binding.etTime2.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + TimePicker picker = getTimePicker(); + picker.setTitle("閫夋嫨鏃堕棿"); + picker.setOnTimePickedListener(new OnTimePickedListener() { + @Override + public void onTimePicked(int hour, int Minute, int second) { + String date = String.format(Locale.CHINA, "%d:%02d:%02d",hour,Minute,second ); + binding.etTime2.setText(date); + } + }); + picker.show(); + } + }); + + + + + + + activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() { + @Override + public void onActivityResult(ActivityResult result) { + if (result.getResultCode() == Activity.RESULT_OK) { + if (result.getData() == null){ + return; + } + // 鑾峰彇閫変腑鐨勫涓枃浠剁殑 URI + ClipData clipData = result.getData().getClipData(); + if (clipData != null) { + int itemCount = clipData.getItemCount(); + for (int i = 0; i < itemCount; i++) { + Uri uri = clipData.getItemAt(i).getUri(); + // 浣跨敤閫変腑鐨勬枃浠� URI 杩涜鍚庣画鎿嶄綔锛屾瘮濡傝鍙栨枃浠跺唴瀹圭瓑 + String path = GetFilePathFromUri.getFileAbsolutePath(getSelfActivity(),uri); + if (path!=null){ + viewModel.addUploadFile(path); + WebcastBean bean = viewModel.getBeanLiveData().getValue(); + if (bean !=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + urlList.add(path); + bean.setUrl(Utils.appendList2String(urlList,",")); + } + viewModel.getBeanLiveData().setValue(bean); + } + } + }else { + // 鑾峰彇閫変腑鐨勫崟涓枃浠剁殑 URI + Uri selectedFileUri = result.getData().getData(); + String path = GetFilePathFromUri.getFileAbsolutePath(getSelfActivity(),selectedFileUri); + if (path!=null){ + viewModel.addUploadFile(path); + WebcastBean bean = viewModel.getBeanLiveData().getValue(); + if (bean !=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + urlList.add(path); + bean.setUrl(Utils.appendList2String(urlList,",")); + } + viewModel.getBeanLiveData().setValue(bean); + } + } + } + } + }); + + } + + @Override + public void initData() { +// beanLiveData.setValue=WebcastBean; + + } + + + @Override + public void initLiveDataObserve() { + viewModel.getBeanLiveData().observe(this, bean -> { + if (bean!=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + adapter.setData(urlList); + } + }); + viewModel.getTypeLiveData().observe(this,operateType -> { + if (operateType){ + if (type == 1) { + binding.ivOperate.setOnClickListener(v -> { + viewModel.add(); + }); + } +// else { +// binding.ivOperate.setOnClickListener(v -> { +// viewModel.update(); +// }); +// } + setIsEdited(true); + }else { + binding.ivOperate.setOnClickListener(v -> { + popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); + }); + setIsEdited(false); + } + }); + } + + public void setIsEdited(boolean isEdited){ + adapter.setIsEdited(isEdited); + } + + @Override + protected void dialogLoading() { + if (mWaitDialog == null) { + mWaitDialog = new WaitDialog.Builder(this) + // 娑堟伅鏂囨湰鍙互涓嶇敤濉啓 + .setMessage("姝e湪涓婁紶") + .create(); + } + if (!mWaitDialog.isShowing()) { + mWaitDialog.show(); + } + } + + @Override + protected void dialogDismiss() { + if (mWaitDialog != null && mWaitDialog.isShowing()) { + mWaitDialog.dismiss(); + mWaitDialog = null; + } + } + +} diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebcastDetailActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebcastDetailActivityViewModel.java new file mode 100644 index 0000000..401c15b --- /dev/null +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebcastDetailActivityViewModel.java @@ -0,0 +1,362 @@ +package com.application.zhangshi_app_android.ui.function; + +import static com.android.app_base.base.BaseConfig.CODE_SUCCESS; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.MutableLiveData; + +import com.android.app_base.base.StateViewEnum; +import com.android.app_base.base.viewmodel.BaseViewModel; +import com.android.app_base.http.ResultData; +import com.android.app_base.manager.AppManager; +import com.android.app_base.utils.RxUtils; +import com.android.app_base.utils.rxbus.RxBus; +import com.application.zhangshi_app_android.bean.WebcastBean; +import com.application.zhangshi_app_android.bean.UploadFileResponseBean; +import com.application.zhangshi_app_android.data.DataRepository; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import io.reactivex.Observable; +import io.reactivex.ObservableSource; +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Action; +import io.reactivex.functions.Consumer; +import io.reactivex.functions.Function; +import okhttp3.MediaType; +import okhttp3.MultipartBody; +import okhttp3.RequestBody; + +public class WebcastDetailActivityViewModel extends BaseViewModel<DataRepository> { + + private MutableLiveData<WebcastBean> beanLiveData; + private MutableLiveData<Boolean> typeLiveData;//true 缂栬緫鐘舵�� false 灞曠ず鐘舵�� + private final List<String> uploadFileList = new ArrayList<>();//闇�瑕佷笂浼犵殑鏂囦欢鍒楄〃 + public WebcastDetailActivityViewModel(@NonNull Application application) { + super(application); + } + + @Override + protected DataRepository initModel() { + return DataRepository.getInstance(); + } + + /** + * 澧炲姞瀹跺ぇ浜嬭 + */ + public void add() { + if (uploadFileList.size() > 0) { + List<Observable<String>> observables = new ArrayList<>(); + for (String path : uploadFileList) { + File file = new File(path); + RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); + MultipartBody.Part body = MultipartBody.Part.createFormData("uploadFile", file.getName(), requestBody); + Observable<String> uploadObservable = model.uploadFile(body) + .flatMap(new Function<ResultData<UploadFileResponseBean>, ObservableSource<String>>() { + @Override + public ObservableSource<String> apply(ResultData<UploadFileResponseBean> resultData) throws Exception { + if (resultData.getCode() == CODE_SUCCESS) { + WebcastBean bean = getBeanLiveData().getValue(); + if (bean != null) { + String urls = bean.getUrl(); + //鏇挎崲鍥剧墖鍦板潃 + urls = urls.replace(path, resultData.getData().getUrl()); + bean.setUrl(urls); + getBeanLiveData().postValue(bean); + } + return Observable.just(path); + } else { + return Observable.error(new Exception(resultData.getMsg())); + } + } + }); + + observables.add(uploadObservable); + } + Observable.zip(observables, result -> result) + .flatMap(new Function<Object[], Observable<ResultData<String>>>() { + @Override + public Observable<ResultData<String>> apply(Object[] objects) throws Exception { + //绉婚櫎宸茬粡涓婁紶鐨勬枃浠� + //鎶妎bjects鏁扮粍杞崲鎴恖ist锛岀劧鍚庣Щ闄� + for (Object object : objects) { + uploadFileList.remove((String) object); + } + return model.addWebcast(beanLiveData.getValue()); + } + }) + .doOnSubscribe(new Consumer<Disposable>() { + @Override + public void accept(Disposable disposable) throws Exception { + changeStateView(StateViewEnum.DIALOG_LOADING); + } + }) + .doFinally(new Action() { + @Override + public void run() throws Exception { + changeStateView(StateViewEnum.DIALOG_DISMISS); + } + }) + .compose(RxUtils.schedulersTransformer()) + .subscribe(new Observer<ResultData<String>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<String> stringResultData) { + if (stringResultData.getCode() == CODE_SUCCESS) { + AppManager.getAppManager().finishCurrentActivity(); + RxBus.getInstance().post(beanLiveData.getValue()); + messageLiveData.postValue("娣诲姞鎴愬姛"); + } else { + messageLiveData.postValue(stringResultData.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + }else { + model.addWebcast(beanLiveData.getValue()) + .compose(RxUtils.schedulersTransformer()) + .subscribe(new Observer<ResultData<String>>() { + @Override + public void onSubscribe(Disposable d) { + addSubscribe(d); + } + + @Override + public void onNext(ResultData<String> stringResultData) { + if (stringResultData.getCode() == CODE_SUCCESS) { + AppManager.getAppManager().finishCurrentActivity(); + RxBus.getInstance().post(beanLiveData.getValue()); + messageLiveData.postValue("娣诲姞鎴愬姛"); + } else { + messageLiveData.postValue(stringResultData.getMsg()); + } + } + + @Override + public void onError(Throwable e) { + messageLiveData.postValue(e.getMessage()); + } + + @Override + public void onComplete() { + + } + }); + } + } + /** + * 鍒犻櫎瀹跺ぇ浜嬭 + */ +// public void delete() { +// model.deleteWebcast(String.valueOf(beanLiveData.getValue().getId())) +// .compose(RxUtils.schedulersTransformer()) +// .subscribe(new Observer<ResultData<String>>() { +// @Override +// public void onSubscribe(Disposable d) { +// addSubscribe(d); +// } +// +// @Override +// public void onNext(ResultData<String> stringResultData) { +// if (stringResultData.getCode() == CODE_SUCCESS){ +// AppManager.getAppManager().finishCurrentActivity(); +// RxBus.getInstance().post(beanLiveData.getValue()); +// messageLiveData.postValue("鍒犻櫎鎴愬姛"); +// }else { +// messageLiveData.postValue(stringResultData.getMsg()); +// } +// } +// +// @Override +// public void onError(Throwable e) { +// messageLiveData.postValue(e.getMessage()); +// } +// +// @Override +// public void onComplete() { +// +// } +// }); +// } + /** + * 缂栬緫瀹跺ぇ浜嬭 + */ +// public void update() { +// if (uploadFileList.size() > 0){ +// List<Observable<String>> observables = new ArrayList<>(); +// for (String path : uploadFileList) { +// File file = new File(path); +// RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); +// MultipartBody.Part body = MultipartBody.Part.createFormData("uploadFile", file.getName(), requestBody); +// Observable<String> uploadObservable = model.uploadFile(body) +// .flatMap(new Function<ResultData<UploadFileResponseBean>, ObservableSource<String>>() { +// @Override +// public ObservableSource<String> apply(ResultData<UploadFileResponseBean> resultData) throws Exception { +// if (resultData.getCode() == CODE_SUCCESS){ +// WebcastBean bean = getBeanLiveData().getValue(); +// if (bean != null){ +// String urls = bean.getUrl(); +// //鏇挎崲鍥剧墖鍦板潃 +// urls = urls.replace(path,resultData.getData().getUrl()); +// bean.setUrl(urls); +// getBeanLiveData().postValue(bean); +// } +// return Observable.just(path); +// }else { +// return Observable.error(new Exception(resultData.getMsg())); +// } +// } +// }); +// +// observables.add(uploadObservable); +// } +// Observable.zip(observables,result -> result) +// .flatMap(new Function<Object[], Observable<ResultData<String>>>() { +// @Override +// public Observable<ResultData<String>> apply(Object[] objects) throws Exception { +// //绉婚櫎宸茬粡涓婁紶鐨勬枃浠� +// //鎶妎bjects鏁扮粍杞崲鎴恖ist锛岀劧鍚庣Щ闄� +// for (Object object : objects) { +// uploadFileList.remove((String) object); +// } +// return model.updateWebcast(beanLiveData.getValue()); +// } +// }) +// .doOnSubscribe(new Consumer<Disposable>() { +// @Override +// public void accept(Disposable disposable) throws Exception { +// changeStateView(StateViewEnum.DIALOG_LOADING); +// } +// }) +// .doFinally(new Action() { +// @Override +// public void run() throws Exception { +// changeStateView(StateViewEnum.DIALOG_DISMISS); +// } +// }) +// .compose(RxUtils.schedulersTransformer()) +// .subscribe(new Observer<ResultData<String>>() { +// @Override +// public void onSubscribe(Disposable d) { +// addSubscribe(d); +// } +// +// @Override +// public void onNext(ResultData<String> stringResultData) { +// if (stringResultData.getCode() == CODE_SUCCESS){ +// AppManager.getAppManager().finishCurrentActivity(); +// RxBus.getInstance().post(beanLiveData.getValue()); +// messageLiveData.postValue("淇敼鎴愬姛"); +// }else { +// messageLiveData.postValue(stringResultData.getMsg()); +// } +// } +// +// @Override +// public void onError(Throwable e) { +// messageLiveData.postValue(e.getMessage()); +// } +// +// @Override +// public void onComplete() { +// +// } +// }); +// }else { +// model.updateWebcast(beanLiveData.getValue()) +// .compose(RxUtils.schedulersTransformer()) +// .subscribe(new Observer<ResultData<String>>() { +// @Override +// public void onSubscribe(Disposable d) { +// addSubscribe(d); +// } +// +// @Override +// public void onNext(ResultData<String> stringResultData) { +// if (stringResultData.getCode() == CODE_SUCCESS){ +// AppManager.getAppManager().finishCurrentActivity(); +// RxBus.getInstance().post(beanLiveData.getValue()); +// messageLiveData.postValue("淇敼鎴愬姛"); +// }else { +// messageLiveData.postValue(stringResultData.getMsg()); +// } +// } +// +// @Override +// public void onError(Throwable e) { +// +// +// +// +// +// +// +// +// +// +// +// messageLiveData.postValue(e.getMessage()); +// } +// +// @Override +// public void onComplete() { +// +// } +// }); +// } +// +// } + + public MutableLiveData<WebcastBean> getBeanLiveData() { + if (beanLiveData == null){ + beanLiveData = new MutableLiveData<>(); + } + if (beanLiveData.getValue() == null){ + beanLiveData.setValue(new WebcastBean()); + } + return beanLiveData; + } + + public void setBeanLiveData(MutableLiveData<WebcastBean> beanLiveData) { + this.beanLiveData = beanLiveData; + } + + public MutableLiveData<Boolean> getTypeLiveData() { + if (typeLiveData == null){ + typeLiveData = new MutableLiveData<>(); + } + return typeLiveData; + } + + public void setTypeLiveData(MutableLiveData<Boolean> typeLiveData) { + this.typeLiveData = typeLiveData; + } + + public List<String> getUploadFileList() { + return uploadFileList; + } + + public void addUploadFile(String url) { + uploadFileList.add(url); + } + + +} diff --git a/app/src/main/res/drawable/ic_android_black_24dp.xml b/app/src/main/res/drawable/ic_android_black_24dp.xml new file mode 100644 index 0000000..fe51230 --- /dev/null +++ b/app/src/main/res/drawable/ic_android_black_24dp.xml @@ -0,0 +1,5 @@ +<vector android:height="24dp" android:tint="#000000" + android:viewportHeight="24" android:viewportWidth="24" + android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="#FF000000" android:pathData="M17.6,11.48 L19.44,8.3a0.63,0.63 0,0 0,-1.09 -0.63l-1.88,3.24a11.43,11.43 0,0 0,-8.94 0L5.65,7.67a0.63,0.63 0,0 0,-1.09 0.63L6.4,11.48A10.81,10.81 0,0 0,1 20L23,20A10.81,10.81 0,0 0,17.6 11.48ZM7,17.25A1.25,1.25 0,1 1,8.25 16,1.25 1.25,0 0,1 7,17.25ZM17,17.25A1.25,1.25 0,1 1,18.25 16,1.25 1.25,0 0,1 17,17.25Z"/> +</vector> diff --git a/app/src/main/res/drawable/ic_fuction_back.png b/app/src/main/res/drawable/ic_fuction_back.png new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/app/src/main/res/drawable/ic_fuction_back.png diff --git a/app/src/main/res/drawable/ic_function_meeting.png b/app/src/main/res/drawable/ic_function_meeting.png new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/app/src/main/res/drawable/ic_function_meeting.png diff --git a/app/src/main/res/drawable/ic_function_webcast.png b/app/src/main/res/drawable/ic_function_webcast.png new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/app/src/main/res/drawable/ic_function_webcast.png diff --git a/app/src/main/res/layout/activity_annual_health_status.xml b/app/src/main/res/layout/activity_annual_health_status.xml index e50d378..fb86e9f 100644 --- a/app/src/main/res/layout/activity_annual_health_status.xml +++ b/app/src/main/res/layout/activity_annual_health_status.xml @@ -138,10 +138,241 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@+id/titleBar" > + <com.scwang.smart.refresh.header.MaterialHeader android:layout_width="match_parent" - android:layout_height="wrap_content" - /> + android:layout_height="wrap_content"> + + <RelativeLayout + android:id="@+id/container_search_parameter" + android:layout_width="0dp" + android:layout_height="0dp" + android:layout_marginTop="-4dp" + tools:layout_height="wrap_content"> + + <LinearLayout + android:id="@+id/layout_search_parameter" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginHorizontal="56dp" + android:background="@color/white" + android:orientation="vertical" + android:paddingStart="5dp" + android:paddingEnd="12dp"> + + <View + android:layout_width="match_parent" + android:layout_height="0.5dp" + android:background="#FF939393" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center"> + + <androidx.appcompat.widget.AppCompatTextView + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="center" + android:maxLines="1" + android:text="棰樺悕" + android:textColor="#FF333333" + android:textSize="14sp" + app:autoSizeMaxTextSize="14sp" + app:autoSizeMinTextSize="8sp" + app:autoSizeTextType="uniform" /> + + <com.android.app_base.widget.ClearEditText + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="6dp" + android:layout_weight="4" + android:background="@null" + android:hint="璇疯緭鍏ラ鍚�" + android:inputType="text" + android:maxLines="1" + android:text="@={viewModel.requestBeanLiveData.title}" + android:textColor="#FF333333" + android:textColorHint="#61000000" + android:textSize="14sp" + app:autoSizeMaxTextSize="14sp" + app:autoSizeMinTextSize="8sp" + app:autoSizeTextType="uniform" + app:background="@drawable/ic_clear" /> + + </LinearLayout> + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center"> + + <androidx.appcompat.widget.AppCompatTextView + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="center" + android:maxLines="1" + android:text="鏃堕棿" + android:textColor="#FF333333" + android:textSize="14sp" + app:autoSizeMaxTextSize="14sp" + app:autoSizeMinTextSize="8sp" + app:autoSizeTextType="uniform" /> + + <LinearLayout + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:gravity="center"> + + <androidx.appcompat.widget.AppCompatTextView + android:id="@+id/et_start_time" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="6dp" + android:layout_weight="1" + android:gravity="center" + android:hint="寮�濮嬫椂闂�" + android:lines="1" + android:maxLines="1" + android:text="@={viewModel.requestBeanLiveData.happenStartTime}" + android:textColor="#FF333333" + android:textColorHint="#61000000" + android:textSize="14sp" + app:autoSizeMaxTextSize="14sp" + app:autoSizeMinTextSize="8sp" + app:autoSizeTextType="uniform" + tools:text="2022-01-01" /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鈥�" /> + + <androidx.appcompat.widget.AppCompatTextView + android:id="@+id/et_end_time" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="center" + android:hint="缁撴潫鏃堕棿" + android:maxLines="1" + android:text="@={viewModel.requestBeanLiveData.happenEndTime}" + android:textColor="#FF333333" + android:textColorHint="#61000000" + android:textSize="14sp" + app:autoSizeMaxTextSize="14sp" + app:autoSizeMinTextSize="8sp" + app:autoSizeTextType="uniform" + tools:text="2022-01-01" /> + + <ImageView + android:id="@+id/iv_time_clear" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/ic_clear" + android:visibility="invisible" /> + </LinearLayout> + + </LinearLayout> + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center"> + + <androidx.appcompat.widget.AppCompatTextView + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="center" + android:maxLines="1" + android:text="绫诲埆" + android:textColor="#FF333333" + android:textSize="14sp" + app:autoSizeMaxTextSize="14sp" + app:autoSizeMinTextSize="8sp" + app:autoSizeTextType="uniform" /> + + <com.android.app_base.widget.ClearEditText + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="6dp" + android:layout_weight="4" + android:background="@null" + android:hint="璇疯緭鍏ョ被鍒�" + android:inputType="text" + android:maxLines="1" + android:text="@={viewModel.requestBeanLiveData.type}" + android:textColor="#FF333333" + android:textColorHint="#61000000" + android:textSize="14sp" + app:autoSizeMaxTextSize="14sp" + app:autoSizeMinTextSize="8sp" + app:autoSizeTextType="uniform" + app:background="@drawable/ic_clear" /> + + </LinearLayout> + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center"> + + <androidx.appcompat.widget.AppCompatTextView + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1" + android:gravity="center" + android:lines="1" + android:maxLines="1" + android:text="灏辩梾鍖婚櫌" + android:textColor="#FF333333" + android:textSize="14sp" + app:autoSizeMaxTextSize="14sp" + app:autoSizeMinTextSize="8sp" + app:autoSizeTextType="uniform" /> + + <com.android.app_base.widget.ClearEditText + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="6dp" + android:layout_weight="4" + android:background="@null" + android:hint="璇疯緭鍏ュ氨鐥呭尰闄�" + android:inputType="text" + android:maxLines="1" + android:text="@={viewModel.requestBeanLiveData.hospital}" + android:textColor="#FF333333" + android:textColorHint="#61000000" + android:textSize="14sp" + app:autoSizeMaxTextSize="14sp" + app:autoSizeMinTextSize="8sp" + app:autoSizeTextType="uniform" + app:background="@drawable/ic_clear" /> + </LinearLayout> + </LinearLayout> + + </RelativeLayout> + </com.scwang.smart.refresh.header.MaterialHeader> + <androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" @@ -152,245 +383,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content"/> </com.scwang.smart.refresh.layout.SmartRefreshLayout> - <RelativeLayout - android:id="@+id/container_search_parameter" - android:layout_width="0dp" - android:layout_height="0dp" - app:layout_constraintTop_toBottomOf="@id/titleBar" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginTop="-4dp" - tools:layout_height="wrap_content" - > - <LinearLayout - android:id="@+id/layout_search_parameter" - android:orientation="vertical" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@color/white" - android:layout_marginHorizontal="56dp" - android:paddingEnd="12dp" - android:paddingStart="5dp" - > - <View - android:layout_width="match_parent" - android:layout_height="0.5dp" - android:background="#FF939393" /> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="40dp" - android:gravity="center"> - <androidx.appcompat.widget.AppCompatTextView - android:layout_width="0dp" - android:layout_weight="1" - android:layout_height="wrap_content" - android:text="棰樺悕" - android:textColor="#FF333333" - android:textSize="14sp" - android:gravity="center" - android:maxLines="1" - app:autoSizeTextType="uniform" - app:autoSizeMinTextSize="8sp" - app:autoSizeMaxTextSize="14sp" - /> - - <com.android.app_base.widget.ClearEditText - android:layout_width="0dp" - android:layout_weight="4" - android:layout_height="wrap_content" - android:background="@null" - android:inputType="text" - android:layout_marginStart="6dp" - android:text="@={viewModel.requestBeanLiveData.title}" - android:hint="璇疯緭鍏ラ鍚�" - android:textColorHint="#61000000" - android:textColor="#FF333333" - android:textSize="14sp" - android:maxLines="1" - app:autoSizeTextType="uniform" - app:autoSizeMinTextSize="8sp" - app:autoSizeMaxTextSize="14sp" - app:background="@drawable/ic_clear" - /> - - </LinearLayout> - - <View - android:layout_width="match_parent" - android:layout_height="0.3dp" - android:background="#FF939393" /> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="40dp" - android:gravity="center" - > - - <androidx.appcompat.widget.AppCompatTextView - android:layout_width="0dp" - android:layout_weight="1" - android:layout_height="wrap_content" - android:text="鏃堕棿" - android:textColor="#FF333333" - android:textSize="14sp" - android:gravity="center" - android:maxLines="1" - app:autoSizeTextType="uniform" - app:autoSizeMinTextSize="8sp" - app:autoSizeMaxTextSize="14sp" - /> - - <LinearLayout - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_weight="4" - android:gravity="center" - > - <androidx.appcompat.widget.AppCompatTextView - android:id="@+id/et_start_time" - android:layout_width="0dp" - android:layout_weight="1" - android:layout_height="wrap_content" - android:gravity="center" - android:layout_marginStart="6dp" - android:text="@={viewModel.requestBeanLiveData.happenStartTime}" - android:hint="寮�濮嬫椂闂�" - android:textColorHint="#61000000" - android:textColor="#FF333333" - android:textSize="14sp" - android:maxLines="1" - android:lines="1" - app:autoSizeTextType="uniform" - app:autoSizeMinTextSize="8sp" - app:autoSizeMaxTextSize="14sp" - tools:text="2022-01-01" - /> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="鈥�" - /> - <androidx.appcompat.widget.AppCompatTextView - android:id="@+id/et_end_time" - android:layout_width="0dp" - android:layout_weight="1" - android:gravity="center" - android:layout_height="wrap_content" - android:text="@={viewModel.requestBeanLiveData.happenEndTime}" - android:hint="缁撴潫鏃堕棿" - android:textColorHint="#61000000" - android:textColor="#FF333333" - android:textSize="14sp" - android:maxLines="1" - app:autoSizeTextType="uniform" - app:autoSizeMinTextSize="8sp" - app:autoSizeMaxTextSize="14sp" - tools:text="2022-01-01" - /> - <ImageView - android:id="@+id/iv_time_clear" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:background="@drawable/ic_clear" - android:visibility="invisible" - /> - </LinearLayout> - - </LinearLayout> - - <View - android:layout_width="match_parent" - android:layout_height="0.3dp" - android:background="#FF939393" /> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="40dp" - android:gravity="center"> - - <androidx.appcompat.widget.AppCompatTextView - android:layout_width="0dp" - android:layout_weight="1" - android:layout_height="wrap_content" - android:text="绫诲埆" - android:textColor="#FF333333" - android:textSize="14sp" - android:gravity="center" - android:maxLines="1" - app:autoSizeTextType="uniform" - app:autoSizeMinTextSize="8sp" - app:autoSizeMaxTextSize="14sp" - /> - - <com.android.app_base.widget.ClearEditText - android:layout_width="0dp" - android:layout_weight="4" - android:layout_height="wrap_content" - android:background="@null" - android:inputType="text" - android:layout_marginStart="6dp" - android:text="@={viewModel.requestBeanLiveData.type}" - android:hint="璇疯緭鍏ョ被鍒�" - android:textColorHint="#61000000" - android:textColor="#FF333333" - android:textSize="14sp" - android:maxLines="1" - app:autoSizeTextType="uniform" - app:autoSizeMinTextSize="8sp" - app:autoSizeMaxTextSize="14sp" - app:background="@drawable/ic_clear" - /> - - </LinearLayout> - - <View - android:layout_width="match_parent" - android:layout_height="0.3dp" - android:background="#FF939393" /> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="40dp" - android:gravity="center"> - - <androidx.appcompat.widget.AppCompatTextView - android:layout_width="0dp" - android:layout_weight="1" - android:layout_height="match_parent" - android:text="灏辩梾鍖婚櫌" - android:textColor="#FF333333" - android:textSize="14sp" - android:gravity="center" - android:maxLines="1" - android:lines="1" - app:autoSizeTextType="uniform" - app:autoSizeMinTextSize="8sp" - app:autoSizeMaxTextSize="14sp" - /> - - <com.android.app_base.widget.ClearEditText - android:layout_width="0dp" - android:layout_weight="4" - android:layout_height="wrap_content" - android:background="@null" - android:inputType="text" - android:layout_marginStart="6dp" - android:text="@={viewModel.requestBeanLiveData.hospital}" - android:hint="璇疯緭鍏ュ氨鐥呭尰闄�" - android:textColorHint="#61000000" - android:textColor="#FF333333" - android:textSize="14sp" - android:maxLines="1" - app:autoSizeTextType="uniform" - app:autoSizeMinTextSize="8sp" - app:autoSizeMaxTextSize="14sp" - app:background="@drawable/ic_clear" - /> - </LinearLayout> - </LinearLayout> - - </RelativeLayout> <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/fab_add" android:layout_width="56dp" diff --git a/app/src/main/res/layout/activity_certificate_of_honor.xml b/app/src/main/res/layout/activity_certificate_of_honor.xml index 77714ea..5ce78b6 100644 --- a/app/src/main/res/layout/activity_certificate_of_honor.xml +++ b/app/src/main/res/layout/activity_certificate_of_honor.xml @@ -29,13 +29,13 @@ android:layout_marginHorizontal="16dp" android:layout_gravity="center_vertical|end" > + <ImageView android:id="@+id/iv_operate" - android:layout_width="wrap_content" + android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" - android:background="@drawable/ic_operate" - /> + android:background="@drawable/ic_operate" /> </FrameLayout> <LinearLayout android:id="@+id/layout_search" diff --git a/app/src/main/res/layout/activity_family_assets.xml b/app/src/main/res/layout/activity_family_assets.xml index 5628ff5..bd71719 100644 --- a/app/src/main/res/layout/activity_family_assets.xml +++ b/app/src/main/res/layout/activity_family_assets.xml @@ -37,30 +37,30 @@ android:background="@drawable/ic_operate" /> </FrameLayout> + <LinearLayout android:id="@+id/layout_default" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginHorizontal="56dp" - android:gravity="center_vertical" - > + android:gravity="center_vertical"> + <TextView android:id="@+id/tv_title" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="16dp" - android:text="瀹跺涵璧勪骇锛堜粎渚涙煡鐪嬶級" android:layout_weight="1" + android:text="瀹跺涵璧勪骇锛堜粎渚涙煡鐪嬶級" android:textColor="@color/white" android:textSize="20sp" - app:textOverflowMode="@{4}" - /> + app:textOverflowMode="@{4}" /> + <ImageView android:id="@+id/iv_search_default" android:layout_width="@dimen/dp_24" android:layout_height="@dimen/dp_24" - android:background="@drawable/ic_search" - /> + android:background="@drawable/ic_search" /> </LinearLayout> <LinearLayout android:id="@+id/layout_search" diff --git a/app/src/main/res/layout/activity_family_memorabilia.xml b/app/src/main/res/layout/activity_family_memorabilia.xml index 956a592..180a3a3 100644 --- a/app/src/main/res/layout/activity_family_memorabilia.xml +++ b/app/src/main/res/layout/activity_family_memorabilia.xml @@ -10,6 +10,7 @@ type="com.application.zhangshi_app_android.ui.function.FamilyMemorabiliaActivityViewModel"/> </data> + <!--绾︽潫甯冨眬锛岃В鍐冲竷灞�宓屽杩囧鐨勯棶棰橈紝浠ョ伒娲荤殑鏂瑰紡瀹氫綅鍜岃皟鏁村皬閮ㄤ欢銆�--> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent" @@ -17,25 +18,26 @@ android:background="?attr/pageBackgroundColor" > + <!--鏍囬鏍�,瀹冪揣鎸ㄧ姸鎬佹爮鐨勪笅闈紝姝e父鎯呭喌涓嬪畠鐨勫竷灞�鍜屼富棰樻牱寮忛兘鏄娇鐢ㄧ郴缁熷畾涔夊ソ鐨勶紝涓旈粯璁ゆ儏鍐典笅鍙樉绀哄浘鏍囧拰鏂囨湰銆�--> <com.android.app_base.widget.ExtendTitleBar android:id="@+id/titleBar" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_constraintTop_toTopOf="parent" > + <FrameLayout android:layout_width="24dp" android:layout_height="24dp" - android:layout_marginHorizontal="16dp" android:layout_gravity="center_vertical|end" - > + android:layout_marginHorizontal="16dp"> + <ImageView android:id="@+id/iv_operate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" - android:background="@drawable/ic_operate" - /> + android:background="@drawable/ic_operate" /> </FrameLayout> <LinearLayout diff --git a/app/src/main/res/layout/activity_meeting.xml b/app/src/main/res/layout/activity_meeting.xml new file mode 100644 index 0000000..bd594b2 --- /dev/null +++ b/app/src/main/res/layout/activity_meeting.xml @@ -0,0 +1,440 @@ +<?xml version="1.0" encoding="utf-8"?> +<layout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + > + <data> + <import type="android.view.View"/> + <variable + name="viewModel" + type="com.application.zhangshi_app_android.ui.function.MeetingActivityViewModel"/> + </data> + + <!--绾︽潫甯冨眬锛岃В鍐冲竷灞�宓屽杩囧鐨勯棶棰橈紝浠ョ伒娲荤殑鏂瑰紡瀹氫綅鍜岃皟鏁村皬閮ㄤ欢銆�--> + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".ui.function.MeetingActivity" + android:background="?attr/pageBackgroundColor" + > + + <!--鏍囬鏍�,瀹冪揣鎸ㄧ姸鎬佹爮鐨勪笅闈紝姝e父鎯呭喌涓嬪畠鐨勫竷灞�鍜屼富棰樻牱寮忛兘鏄娇鐢ㄧ郴缁熷畾涔夊ソ鐨勶紝涓旈粯璁ゆ儏鍐典笅鍙樉绀哄浘鏍囧拰鏂囨湰銆�--> + <com.android.app_base.widget.ExtendTitleBar + android:id="@+id/titleBar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintTop_toTopOf="parent" + > + + <FrameLayout + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_gravity="center_vertical|end" + android:layout_marginHorizontal="16dp"> + + <ImageView + android:id="@+id/iv_operate" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:background="@drawable/ic_operate" /> + </FrameLayout> + + <LinearLayout + android:id="@+id/layout_default" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginHorizontal="56dp" + android:gravity="center_vertical" + > + <TextView + android:id="@+id/tv_title" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:text="浼氳鐢宠" + android:layout_weight="1" + android:textColor="@color/white" + android:textSize="20sp" + /> + <ImageView + android:id="@+id/iv_search_default" + android:layout_width="@dimen/dp_24" + android:layout_height="@dimen/dp_24" + android:background="@drawable/ic_search" + /> + </LinearLayout> + + <LinearLayout + android:id="@+id/layout_search" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginVertical="4dp" + android:layout_marginHorizontal="56dp" + android:gravity="center_vertical" + android:background="@color/white" + android:paddingHorizontal="5dp" + android:visibility="gone" + > + <ImageView + android:id="@+id/iv_search" + android:layout_width="24dp" + android:layout_height="24dp" + android:background="@drawable/ic_search_gray" + /> + <EditText + android:id="@+id/et_search" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:layout_marginStart="5dp" + android:textSize="14sp" + android:textColor="#61000000" + android:background="@null" + android:imeOptions="actionSearch" + android:text="" + android:singleLine="true" + android:hint="鍦ㄢ�滀細璁敵璇封�滀腑鎼滅储" + android:focusable="false" + android:clickable="false" + /> + <ImageView + android:id="@+id/iv_search_type" + android:layout_width="24dp" + android:layout_height="24dp" + android:background="@drawable/ic_search_by" + /> + </LinearLayout> + + </com.android.app_base.widget.ExtendTitleBar> + + <LinearLayout + android:id="@+id/layout_data_null" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + android:gravity="center" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/titleBar"> + + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/img_data_null" + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="18dp" + android:text="鏆傛椂杩樻病鏈夋暟鎹摝~\n鐐瑰嚮鈥濓紜鈥濈珛鍗冲垱寤�" + android:textSize="14sp" + android:textColor="#73000000" + /> + </LinearLayout> + <com.scwang.smart.refresh.layout.SmartRefreshLayout + android:id="@+id/refreshLayout" + android:layout_width="match_parent" + android:layout_height="0dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@+id/titleBar" + > + <com.scwang.smart.refresh.header.MaterialHeader + android:layout_width="match_parent" + android:layout_height="wrap_content" + /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/recyclerView" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="20dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@+id/titleBar" + tools:itemCount="20" + tools:listitem="@layout/item_meeting" /> + <com.scwang.smart.refresh.footer.BallPulseFooter + android:layout_width="match_parent" + android:layout_height="wrap_content"/> + </com.scwang.smart.refresh.layout.SmartRefreshLayout> + <RelativeLayout + android:id="@+id/container_search_parameter" + android:layout_width="0dp" + android:layout_height="0dp" + app:layout_constraintTop_toBottomOf="@id/titleBar" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginTop="-4dp" + tools:layout_height="wrap_content" + > + <LinearLayout + android:id="@+id/layout_search_parameter" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@color/white" + android:layout_marginHorizontal="56dp" + android:paddingEnd="12dp" + android:paddingStart="5dp" + > + <View + android:layout_width="match_parent" + android:layout_height="0.5dp" + android:background="#FF939393" /> + + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center" + > + + <androidx.appcompat.widget.AppCompatTextView + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:text="鏃堕棿" + android:textColor="#FF333333" + android:textSize="14sp" + android:gravity="center" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + /> + + <LinearLayout + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:gravity="center" + > + <androidx.appcompat.widget.AppCompatTextView + android:id="@+id/et_start_time" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:gravity="center" + android:layout_marginStart="6dp" + android:text="@={viewModel.requestBeanLiveData.happenStartTime}" + android:hint="寮�濮嬫椂闂�" + android:textColorHint="#61000000" + android:textColor="#FF333333" + android:textSize="14sp" + android:maxLines="1" + android:lines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + tools:text="2022-01-01" + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鈥�" + /> + <androidx.appcompat.widget.AppCompatTextView + android:id="@+id/et_end_time" + android:layout_width="0dp" + android:layout_weight="1" + android:gravity="center" + android:layout_height="wrap_content" + android:text="@={viewModel.requestBeanLiveData.happenEndTime}" + android:hint="缁撴潫鏃堕棿" + android:textColorHint="#61000000" + android:textColor="#FF333333" + android:textSize="14sp" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + tools:text="2022-01-01" + /> + <ImageView + android:id="@+id/iv_time_clear" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/ic_clear" + android:visibility="invisible" + /> + </LinearLayout> + + </LinearLayout> + + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center"> + + <androidx.appcompat.widget.AppCompatTextView + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:text="鍦扮偣" + android:textColor="#FF333333" + android:textSize="14sp" + android:gravity="center" + android:maxLines="1" + android:lines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + /> + + <com.android.app_base.widget.ClearEditText + android:layout_width="0dp" + android:layout_weight="4" + android:layout_height="wrap_content" + android:background="@null" + android:inputType="text" + android:layout_marginStart="6dp" + android:text="@={viewModel.requestBeanLiveData.place}" + android:hint="璇疯緭鍏ュ湴鐐�" + android:textColorHint="#61000000" + android:textColor="#FF333333" + android:textSize="14sp" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + app:background="@drawable/ic_clear" + /> + </LinearLayout> + + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center"> + + <androidx.appcompat.widget.AppCompatTextView + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:text="鐢宠閮ㄩ棬" + android:textColor="#FF333333" + android:textSize="14sp" + android:gravity="center" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + /> + + <com.android.app_base.widget.ClearEditText + android:layout_width="0dp" + android:layout_weight="4" + android:layout_height="wrap_content" + android:background="@null" + android:inputType="text" + android:layout_marginStart="6dp" + android:text="@={viewModel.requestBeanLiveData.applyApart}" + android:hint="璇疯緭鍏ョ敵璇烽儴闂�" + android:textColorHint="#61000000" + android:textColor="#FF333333" + android:textSize="14sp" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + app:background="@drawable/ic_clear" + /> + + + </LinearLayout> + + + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center"> + + <androidx.appcompat.widget.AppCompatTextView + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:text="鐢宠浜�" + android:textColor="#FF333333" + android:textSize="14sp" + android:gravity="center" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + /> + + <com.android.app_base.widget.ClearEditText + android:layout_width="0dp" + + android:layout_weight="4" + android:layout_height="wrap_content" + android:background="@null" + android:inputType="text" + android:layout_marginStart="6dp" + android:text="@={viewModel.requestBeanLiveData.applyPerson}" + android:hint="璇疯緭鍏ョ敵璇蜂汉" + android:textColorHint="#61000000" + android:textColor="#FF333333" + android:textSize="14sp" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + app:background="@drawable/ic_clear" + /> + + + </LinearLayout> + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + + </LinearLayout> + + </RelativeLayout> + <com.google.android.material.floatingactionbutton.FloatingActionButton + android:id="@+id/fab_add" + android:layout_width="56dp" + android:layout_height="56dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginEnd="25dp" + android:layout_marginBottom="@dimen/dp_44" + android:src="@drawable/ic_add" + app:fabCustomSize="56dp" + /> + </androidx.constraintlayout.widget.ConstraintLayout> + +</layout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_meeting_approve.xml b/app/src/main/res/layout/activity_meeting_approve.xml new file mode 100644 index 0000000..d172214 --- /dev/null +++ b/app/src/main/res/layout/activity_meeting_approve.xml @@ -0,0 +1,440 @@ +<?xml version="1.0" encoding="utf-8"?> +<layout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + > + <data> + <import type="android.view.View"/> + <variable + name="viewModel" + type="com.application.zhangshi_app_android.ui.function.MeetingapproveActivityViewModel"/> + </data> + + <!--绾︽潫甯冨眬锛岃В鍐冲竷灞�宓屽杩囧鐨勯棶棰橈紝浠ョ伒娲荤殑鏂瑰紡瀹氫綅鍜岃皟鏁村皬閮ㄤ欢銆�--> + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".ui.function.MeetingapproveActivity" + android:background="?attr/pageBackgroundColor" + > + + <!--鏍囬鏍�,瀹冪揣鎸ㄧ姸鎬佹爮鐨勪笅闈紝姝e父鎯呭喌涓嬪畠鐨勫竷灞�鍜屼富棰樻牱寮忛兘鏄娇鐢ㄧ郴缁熷畾涔夊ソ鐨勶紝涓旈粯璁ゆ儏鍐典笅鍙樉绀哄浘鏍囧拰鏂囨湰銆�--> + <com.android.app_base.widget.ExtendTitleBar + android:id="@+id/titleBar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintTop_toTopOf="parent" + > + + <FrameLayout + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_gravity="center_vertical|end" + android:layout_marginHorizontal="16dp"> + + <ImageView + android:id="@+id/iv_operate" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:background="@drawable/ic_operate" /> + </FrameLayout> + + <LinearLayout + android:id="@+id/layout_default" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginHorizontal="56dp" + android:gravity="center_vertical" + > + <TextView + android:id="@+id/tv_title" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:text="浼氳瀹℃壒" + android:layout_weight="1" + android:textColor="@color/white" + android:textSize="20sp" + /> + <ImageView + android:id="@+id/iv_search_default" + android:layout_width="@dimen/dp_24" + android:layout_height="@dimen/dp_24" + android:background="@drawable/ic_search" + /> + </LinearLayout> + + <LinearLayout + android:id="@+id/layout_search" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginVertical="4dp" + android:layout_marginHorizontal="56dp" + android:gravity="center_vertical" + android:background="@color/white" + android:paddingHorizontal="5dp" + android:visibility="gone" + > + <ImageView + android:id="@+id/iv_search" + android:layout_width="24dp" + android:layout_height="24dp" + android:background="@drawable/ic_search_gray" + /> + <EditText + android:id="@+id/et_search" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:layout_marginStart="5dp" + android:textSize="14sp" + android:textColor="#61000000" + android:background="@null" + android:imeOptions="actionSearch" + android:text="" + android:singleLine="true" + android:hint="鍦ㄢ�滀細璁敵璇封�滀腑鎼滅储" + android:focusable="false" + android:clickable="false" + /> + <ImageView + android:id="@+id/iv_search_type" + android:layout_width="24dp" + android:layout_height="24dp" + android:background="@drawable/ic_search_by" + /> + </LinearLayout> + + </com.android.app_base.widget.ExtendTitleBar> + + <LinearLayout + android:id="@+id/layout_data_null" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + android:gravity="center" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/titleBar"> + + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/img_data_null" + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="18dp" + android:text="鏆傛椂杩樻病鏈夋暟鎹摝~\n鐐瑰嚮鈥濓紜鈥濈珛鍗冲垱寤�" + android:textSize="14sp" + android:textColor="#73000000" + /> + </LinearLayout> + <com.scwang.smart.refresh.layout.SmartRefreshLayout + android:id="@+id/refreshLayout" + android:layout_width="match_parent" + android:layout_height="0dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@+id/titleBar" + > + <com.scwang.smart.refresh.header.MaterialHeader + android:layout_width="match_parent" + android:layout_height="wrap_content" + /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/recyclerView" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="20dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@+id/titleBar" + tools:itemCount="20" + tools:listitem="@layout/item_meeting_approve" /> + <com.scwang.smart.refresh.footer.BallPulseFooter + android:layout_width="match_parent" + android:layout_height="wrap_content"/> + </com.scwang.smart.refresh.layout.SmartRefreshLayout> + <RelativeLayout + android:id="@+id/container_search_parameter" + android:layout_width="0dp" + android:layout_height="0dp" + app:layout_constraintTop_toBottomOf="@id/titleBar" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginTop="-4dp" + tools:layout_height="wrap_content" + > + <LinearLayout + android:id="@+id/layout_search_parameter" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@color/white" + android:layout_marginHorizontal="56dp" + android:paddingEnd="12dp" + android:paddingStart="5dp" + > + <View + android:layout_width="match_parent" + android:layout_height="0.5dp" + android:background="#FF939393" /> + + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center" + > + + <androidx.appcompat.widget.AppCompatTextView + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:text="鏃堕棿" + android:textColor="#FF333333" + android:textSize="14sp" + android:gravity="center" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + /> + + <LinearLayout + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:gravity="center" + > + <androidx.appcompat.widget.AppCompatTextView + android:id="@+id/et_start_time" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:gravity="center" + android:layout_marginStart="6dp" + android:text="@={viewModel.requestBeanLiveData.happenStartTime}" + android:hint="寮�濮嬫椂闂�" + android:textColorHint="#61000000" + android:textColor="#FF333333" + android:textSize="14sp" + android:maxLines="1" + android:lines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + tools:text="2022-01-01" + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鈥�" + /> + <androidx.appcompat.widget.AppCompatTextView + android:id="@+id/et_end_time" + android:layout_width="0dp" + android:layout_weight="1" + android:gravity="center" + android:layout_height="wrap_content" + android:text="@={viewModel.requestBeanLiveData.happenEndTime}" + android:hint="缁撴潫鏃堕棿" + android:textColorHint="#61000000" + android:textColor="#FF333333" + android:textSize="14sp" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + tools:text="2022-01-01" + /> + <ImageView + android:id="@+id/iv_time_clear" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/ic_clear" + android:visibility="invisible" + /> + </LinearLayout> + + </LinearLayout> + + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center"> + + <androidx.appcompat.widget.AppCompatTextView + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:text="鍦扮偣" + android:textColor="#FF333333" + android:textSize="14sp" + android:gravity="center" + android:maxLines="1" + android:lines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + /> + + <com.android.app_base.widget.ClearEditText + android:layout_width="0dp" + android:layout_weight="4" + android:layout_height="wrap_content" + android:background="@null" + android:inputType="text" + android:layout_marginStart="6dp" + android:text="@={viewModel.requestBeanLiveData.place}" + android:hint="璇疯緭鍏ュ湴鐐�" + android:textColorHint="#61000000" + android:textColor="#FF333333" + android:textSize="14sp" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + app:background="@drawable/ic_clear" + /> + </LinearLayout> + + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center"> + + <androidx.appcompat.widget.AppCompatTextView + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:text="鐢宠閮ㄩ棬" + android:textColor="#FF333333" + android:textSize="14sp" + android:gravity="center" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + /> + + <com.android.app_base.widget.ClearEditText + android:layout_width="0dp" + android:layout_weight="4" + android:layout_height="wrap_content" + android:background="@null" + android:inputType="text" + android:layout_marginStart="6dp" + android:text="@={viewModel.requestBeanLiveData.applyApart}" + android:hint="璇疯緭鍏ョ敵璇烽儴闂�" + android:textColorHint="#61000000" + android:textColor="#FF333333" + android:textSize="14sp" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + app:background="@drawable/ic_clear" + /> + + + </LinearLayout> + + + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center"> + + <androidx.appcompat.widget.AppCompatTextView + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:text="鐢宠浜�" + android:textColor="#FF333333" + android:textSize="14sp" + android:gravity="center" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + /> + + <com.android.app_base.widget.ClearEditText + android:layout_width="0dp" + + android:layout_weight="4" + android:layout_height="wrap_content" + android:background="@null" + android:inputType="text" + android:layout_marginStart="6dp" + android:text="@={viewModel.requestBeanLiveData.applyPerson}" + android:hint="璇疯緭鍏ョ敵璇蜂汉" + android:textColorHint="#61000000" + android:textColor="#FF333333" + android:textSize="14sp" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + app:background="@drawable/ic_clear" + /> + + + </LinearLayout> + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + + </LinearLayout> + + </RelativeLayout> + <com.google.android.material.floatingactionbutton.FloatingActionButton + android:id="@+id/fab_add" + android:layout_width="56dp" + android:layout_height="56dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginEnd="25dp" + android:layout_marginBottom="@dimen/dp_44" + android:src="@drawable/ic_add" + app:fabCustomSize="56dp" + /> + </androidx.constraintlayout.widget.ConstraintLayout> + +</layout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_meeting_approve_detail.xml b/app/src/main/res/layout/activity_meeting_approve_detail.xml new file mode 100644 index 0000000..2956d6a --- /dev/null +++ b/app/src/main/res/layout/activity_meeting_approve_detail.xml @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="utf-8"?> +<layout xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools"> + + <data> + <variable + name="viewModel" + type="com.application.zhangshi_app_android.ui.function.MeetingapproveDetailActivityViewModel" /> + </data> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="?attr/detailPageBackgroundColor" + android:orientation="vertical"> + + <com.android.app_base.widget.ExtendTitleBar + android:id="@+id/titleBar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:title="@{viewModel.beanLiveData.id==0?`浼氳鐢宠璇︽儏`:viewModel.beanLiveData.title}" + app:titleGravity="left" + > + + <FrameLayout + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_marginHorizontal="16dp" + android:layout_gravity="center_vertical|end" + android:visibility="@{viewModel.beanLiveData.ownData==1}" + > + + + <ImageView + android:id="@+id/iv_operate" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:background="@{viewModel.typeLiveData?@drawable/ic_operate_finish:@drawable/ic_operate}" + /> + + </FrameLayout> + </com.android.app_base.widget.ExtendTitleBar> + + <androidx.core.widget.NestedScrollView + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintTop_toBottomOf="@id/titleBar" + > + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingHorizontal="20dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鏍囬" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:id="@+id/editTextsequence" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ユ爣棰榒:``}" + android:text="@={viewModel.beanLiveData.title}" + android:enabled="@{viewModel.typeLiveData}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鍦扮偣" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ュ湴鐐筦:``}" + android:text="@={viewModel.beanLiveData.place}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鍙绾充汉鏁�" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:id="@+id/cp" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ュ彲瀹圭撼浜烘暟`:``}" + android:text="@={viewModel.beanLiveData.conPeople}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鍙備笌浜烘暟" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData ? `璇疯緭鍏ュ弬涓庝汉鏁癭 : ``}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:text="@={viewModel.beanLiveData.partPeople}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鐢宠浜�" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ョ敵璇蜂汉`:``}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:text="@={viewModel.beanLiveData.applyPerson}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鐢宠閮ㄩ棬鎴栧搴�" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ョ敵璇烽儴闂ㄦ垨瀹跺涵`:``}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:text="@={viewModel.beanLiveData.applyApart}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="寮�濮嬫椂闂�" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + > + + <EditText + android:id="@+id/et_date1" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:enabled="@{viewModel.typeLiveData}" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ュ紑濮嬫椂闂寸殑骞存湀鏃:``}" + android:inputType="text" + android:text="@={viewModel.beanLiveData.date1}" + android:textColor="#DE000000" + android:textColorHint="#6b000000" + android:textSize="16sp" + app:isEditable="@{false}" /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text=" " + /> + <EditText + android:id="@+id/et_time1" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:enabled="@{viewModel.typeLiveData}" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ュ紑濮嬫椂闂寸殑鏃跺垎绉抈:``}" + android:inputType="text" + android:text="@={viewModel.beanLiveData.time1}" + android:textColor="#DE000000" + android:textColorHint="#6b000000" + android:textSize="16sp" + app:isEditable="@{false}" /> + + + </LinearLayout> + + + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="缁撴潫鏃堕棿" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + > + + <EditText + android:id="@+id/et_date2" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:enabled="@{viewModel.typeLiveData}" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ョ粨鏉熸椂闂寸殑骞存湀鏃:``}" + android:inputType="text" + android:text="@={viewModel.beanLiveData.date2}" + android:textColor="#DE000000" + android:textColorHint="#6b000000" + android:textSize="16sp" + app:isEditable="@{false}" /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text=" " + /> + <EditText + android:id="@+id/et_time2" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:enabled="@{viewModel.typeLiveData}" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ョ粨鏉熸椂闂寸殑鏃跺垎绉抈:``}" + android:inputType="text" + android:text="@={viewModel.beanLiveData.time2}" + android:textColor="#DE000000" + android:textColorHint="#6b000000" + android:textSize="16sp" + app:isEditable="@{false}" /> + + + </LinearLayout> + + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鏄惁鎽嗘斁姘寸墝" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ユ槸鎴栧惁`:``}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:text="@={viewModel.beanLiveData.isPlacebrand}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鑱旂郴浜�" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ヨ仈绯讳汉`:``}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:text="@={viewModel.beanLiveData.connPerson}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鑱旂郴鐢佃瘽" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ヨ仈绯荤數璇漙:``}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:text="@={viewModel.beanLiveData.connPhone}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鐘舵��" + android:textColor="#ff000000" + android:textSize="12sp" + /> + + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ョ姸鎬乣:``}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:text="@={viewModel.beanLiveData.statu}" + android:enabled="@{viewModel.typeLiveData}" + /> + + + + + <RelativeLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + > + <com.android.app_base.widget.WrapRecyclerView + android:id="@+id/rv_image" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@drawable/shape_6b0000_stroke" + android:layout_marginBottom="20dp" + android:layout_marginTop="2dp" + android:paddingStart="10dp" + android:paddingEnd="5dp" + android:paddingVertical="10dp" + tools:itemCount="30" + /> + + </RelativeLayout> + + </LinearLayout> + </androidx.core.widget.NestedScrollView> + + + </LinearLayout> +</layout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_meeting_detail.xml b/app/src/main/res/layout/activity_meeting_detail.xml new file mode 100644 index 0000000..503af42 --- /dev/null +++ b/app/src/main/res/layout/activity_meeting_detail.xml @@ -0,0 +1,384 @@ +<?xml version="1.0" encoding="utf-8"?> +<layout xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools"> + + <data> + <variable + name="viewModel" + type="com.application.zhangshi_app_android.ui.function.MeetingDetailActivityViewModel" /> + </data> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="?attr/detailPageBackgroundColor" + android:orientation="vertical"> + + <com.android.app_base.widget.ExtendTitleBar + android:id="@+id/titleBar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:title="@{viewModel.beanLiveData.id==0?`浼氳鐢宠璇︽儏`:viewModel.beanLiveData.title}" + app:titleGravity="left" + > + + <FrameLayout + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_marginHorizontal="16dp" + android:layout_gravity="center_vertical|end" + android:visibility="@{viewModel.beanLiveData.ownData==1}" + > + + + <ImageView + android:id="@+id/iv_operate" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:background="@{viewModel.typeLiveData?@drawable/ic_operate_finish:@drawable/ic_operate}" + /> + + </FrameLayout> + </com.android.app_base.widget.ExtendTitleBar> + + <androidx.core.widget.NestedScrollView + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintTop_toBottomOf="@id/titleBar" + > + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingHorizontal="20dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鏍囬" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:id="@+id/editTextsequence" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ユ爣棰榒:``}" + android:text="@={viewModel.beanLiveData.title}" + android:enabled="@{viewModel.typeLiveData}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鍦扮偣" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ュ湴鐐筦:``}" + android:text="@={viewModel.beanLiveData.place}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鍙绾充汉鏁�" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:id="@+id/cp" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ュ彲瀹圭撼浜烘暟`:``}" + android:text="@={viewModel.beanLiveData.conPeople}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鍙備笌浜烘暟" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData ? `璇疯緭鍏ュ弬涓庝汉鏁癭 : ``}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:text="@={viewModel.beanLiveData.partPeople}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鐢宠浜�" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ョ敵璇蜂汉`:``}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:text="@={viewModel.beanLiveData.applyPerson}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鐢宠閮ㄩ棬鎴栧搴�" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ョ敵璇烽儴闂ㄦ垨瀹跺涵`:``}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:text="@={viewModel.beanLiveData.applyApart}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="寮�濮嬫椂闂�" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + > + + <EditText + android:id="@+id/et_date1" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:enabled="@{viewModel.typeLiveData}" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ュ紑濮嬫椂闂寸殑骞存湀鏃:``}" + android:inputType="text" + android:text="@={viewModel.beanLiveData.date1}" + android:textColor="#DE000000" + android:textColorHint="#6b000000" + android:textSize="16sp" + app:isEditable="@{false}" /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text=" " + /> + <EditText + android:id="@+id/et_time1" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:enabled="@{viewModel.typeLiveData}" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ュ紑濮嬫椂闂寸殑鏃跺垎绉抈:``}" + android:inputType="text" + android:text="@={viewModel.beanLiveData.time1}" + android:textColor="#DE000000" + android:textColorHint="#6b000000" + android:textSize="16sp" + app:isEditable="@{false}" /> + + + </LinearLayout> + + + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="缁撴潫鏃堕棿" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + > + + <EditText + android:id="@+id/et_date2" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:enabled="@{viewModel.typeLiveData}" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ョ粨鏉熸椂闂寸殑骞存湀鏃:``}" + android:inputType="text" + android:text="@={viewModel.beanLiveData.date2}" + android:textColor="#DE000000" + android:textColorHint="#6b000000" + android:textSize="16sp" + app:isEditable="@{false}" /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text=" " + /> + <EditText + android:id="@+id/et_time2" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:enabled="@{viewModel.typeLiveData}" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ョ粨鏉熸椂闂寸殑鏃跺垎绉抈:``}" + android:inputType="text" + android:text="@={viewModel.beanLiveData.time2}" + android:textColor="#DE000000" + android:textColorHint="#6b000000" + android:textSize="16sp" + app:isEditable="@{false}" /> + + + </LinearLayout> + + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鏄惁鎽嗘斁姘寸墝" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ユ槸鎴栧惁`:``}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:text="@={viewModel.beanLiveData.isPlacebrand}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鑱旂郴浜�" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ヨ仈绯讳汉`:``}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:text="@={viewModel.beanLiveData.connPerson}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鑱旂郴鐢佃瘽" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ヨ仈绯荤數璇漙:``}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:text="@={viewModel.beanLiveData.connPhone}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鐘舵��" + android:textColor="#ff000000" + android:textSize="12sp" + /> + + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="none" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ョ姸鎬乣:``}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:text="@={viewModel.beanLiveData.statu}" + android:enabled="@{viewModel.typeLiveData}" + android:clickable="false" + android:focusable="false" + /> + + + + + <RelativeLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + > + <com.android.app_base.widget.WrapRecyclerView + android:id="@+id/rv_image" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@drawable/shape_6b0000_stroke" + android:layout_marginBottom="20dp" + android:layout_marginTop="2dp" + android:paddingStart="10dp" + android:paddingEnd="5dp" + android:paddingVertical="10dp" + tools:itemCount="30" + /> + + </RelativeLayout> + + </LinearLayout> + </androidx.core.widget.NestedScrollView> + + + </LinearLayout> +</layout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_meeting_sta.xml b/app/src/main/res/layout/activity_meeting_sta.xml new file mode 100644 index 0000000..c41fb80 --- /dev/null +++ b/app/src/main/res/layout/activity_meeting_sta.xml @@ -0,0 +1,440 @@ +<?xml version="1.0" encoding="utf-8"?> +<layout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + > + <data> + <import type="android.view.View"/> + <variable + name="viewModel" + type="com.application.zhangshi_app_android.ui.function.MeetingStaActivityViewModel"/> + </data> + + <!--绾︽潫甯冨眬锛岃В鍐冲竷灞�宓屽杩囧鐨勯棶棰橈紝浠ョ伒娲荤殑鏂瑰紡瀹氫綅鍜岃皟鏁村皬閮ㄤ欢銆�--> + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".ui.function.MeetingStaActivity" + android:background="?attr/pageBackgroundColor" + > + + <!--鏍囬鏍�,瀹冪揣鎸ㄧ姸鎬佹爮鐨勪笅闈紝姝e父鎯呭喌涓嬪畠鐨勫竷灞�鍜屼富棰樻牱寮忛兘鏄娇鐢ㄧ郴缁熷畾涔夊ソ鐨勶紝涓旈粯璁ゆ儏鍐典笅鍙樉绀哄浘鏍囧拰鏂囨湰銆�--> + <com.android.app_base.widget.ExtendTitleBar + android:id="@+id/titleBar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintTop_toTopOf="parent" + > + + <FrameLayout + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_gravity="center_vertical|end" + android:layout_marginHorizontal="16dp"> + + <ImageView + android:id="@+id/iv_operate" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:background="@drawable/ic_operate" /> + </FrameLayout> + + <LinearLayout + android:id="@+id/layout_default" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginHorizontal="56dp" + android:gravity="center_vertical" + > + <TextView + android:id="@+id/tv_title" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:text="浼氳缁熻" + android:layout_weight="1" + android:textColor="@color/white" + android:textSize="20sp" + /> +<!-- <ImageView--> +<!-- android:id="@+id/iv_search_default"--> +<!-- android:layout_width="@dimen/dp_24"--> +<!-- android:layout_height="@dimen/dp_24"--> +<!-- android:background="@drawable/ic_search"--> +<!-- />--> + </LinearLayout> + +<!-- <LinearLayout--> +<!-- android:id="@+id/layout_search"--> +<!-- android:layout_width="match_parent"--> +<!-- android:layout_height="match_parent"--> +<!-- android:layout_marginVertical="4dp"--> +<!-- android:layout_marginHorizontal="56dp"--> +<!-- android:gravity="center_vertical"--> +<!-- android:background="@color/white"--> +<!-- android:paddingHorizontal="5dp"--> +<!-- android:visibility="gone"--> +<!-- >--> +<!-- <ImageView--> +<!-- android:id="@+id/iv_search"--> +<!-- android:layout_width="24dp"--> +<!-- android:layout_height="24dp"--> +<!-- android:background="@drawable/ic_search_gray"--> +<!-- />--> +<!-- <EditText--> +<!-- android:id="@+id/et_search"--> +<!-- android:layout_width="0dp"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:layout_weight="1"--> +<!-- android:layout_marginStart="5dp"--> +<!-- android:textSize="14sp"--> +<!-- android:textColor="#61000000"--> +<!-- android:background="@null"--> +<!-- android:imeOptions="actionSearch"--> +<!-- android:text=""--> +<!-- android:singleLine="true"--> +<!-- android:hint="鍦ㄢ�滀細璁敵璇封�滀腑鎼滅储"--> +<!-- android:focusable="false"--> +<!-- android:clickable="false"--> +<!-- />--> +<!-- <ImageView--> +<!-- android:id="@+id/iv_search_type"--> +<!-- android:layout_width="24dp"--> +<!-- android:layout_height="24dp"--> +<!-- android:background="@drawable/ic_search_by"--> +<!-- />--> +<!-- </LinearLayout>--> + + </com.android.app_base.widget.ExtendTitleBar> + + <LinearLayout + android:id="@+id/layout_data_null" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + android:gravity="center" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/titleBar"> + + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/img_data_null" + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="18dp" + android:text="鏆傛椂杩樻病鏈夋暟鎹摝~\n鐐瑰嚮鈥濓紜鈥濈珛鍗冲垱寤�" + android:textSize="14sp" + android:textColor="#73000000" + /> + </LinearLayout> + <com.scwang.smart.refresh.layout.SmartRefreshLayout + android:id="@+id/refreshLayout" + android:layout_width="match_parent" + android:layout_height="0dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@+id/titleBar" + > + <com.scwang.smart.refresh.header.MaterialHeader + android:layout_width="match_parent" + android:layout_height="wrap_content" + /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/recyclerView" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="20dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@+id/titleBar" + tools:itemCount="20" + tools:listitem="@layout/item_meeting_sta" /> + <com.scwang.smart.refresh.footer.BallPulseFooter + android:layout_width="match_parent" + android:layout_height="wrap_content"/> + </com.scwang.smart.refresh.layout.SmartRefreshLayout> + <RelativeLayout + android:id="@+id/container_search_parameter" + android:layout_width="0dp" + android:layout_height="0dp" + app:layout_constraintTop_toBottomOf="@id/titleBar" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginTop="-4dp" + tools:layout_height="wrap_content" + > +<!-- <LinearLayout--> +<!-- android:id="@+id/layout_search_parameter"--> +<!-- android:orientation="vertical"--> +<!-- android:layout_width="match_parent"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:background="@color/white"--> +<!-- android:layout_marginHorizontal="56dp"--> +<!-- android:paddingEnd="12dp"--> +<!-- android:paddingStart="5dp"--> +<!-- >--> +<!-- <View--> +<!-- android:layout_width="match_parent"--> +<!-- android:layout_height="0.5dp"--> +<!-- android:background="#FF939393" />--> + + +<!-- <View--> +<!-- android:layout_width="match_parent"--> +<!-- android:layout_height="0.3dp"--> +<!-- android:background="#FF939393" />--> + + +<!-- <LinearLayout--> +<!-- android:layout_width="match_parent"--> +<!-- android:layout_height="40dp"--> +<!-- android:gravity="center"--> +<!-- >--> + +<!-- <androidx.appcompat.widget.AppCompatTextView--> +<!-- android:layout_width="0dp"--> +<!-- android:layout_weight="1"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:text="鏃堕棿"--> +<!-- android:textColor="#FF333333"--> +<!-- android:textSize="14sp"--> +<!-- android:gravity="center"--> +<!-- android:maxLines="1"--> +<!-- app:autoSizeTextType="uniform"--> +<!-- app:autoSizeMinTextSize="8sp"--> +<!-- app:autoSizeMaxTextSize="14sp"--> +<!-- />--> + +<!-- <LinearLayout--> +<!-- android:layout_width="0dp"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:layout_weight="4"--> +<!-- android:gravity="center"--> +<!-- >--> +<!-- <androidx.appcompat.widget.AppCompatTextView--> +<!-- android:id="@+id/et_start_time"--> +<!-- android:layout_width="0dp"--> +<!-- android:layout_weight="1"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:gravity="center"--> +<!-- android:layout_marginStart="6dp"--> +<!-- android:text="@={viewModel.requestBeanLiveData.happenStartTime}"--> +<!-- android:hint="寮�濮嬫椂闂�"--> +<!-- android:textColorHint="#61000000"--> +<!-- android:textColor="#FF333333"--> +<!-- android:textSize="14sp"--> +<!-- android:maxLines="1"--> +<!-- android:lines="1"--> +<!-- app:autoSizeTextType="uniform"--> +<!-- app:autoSizeMinTextSize="8sp"--> +<!-- app:autoSizeMaxTextSize="14sp"--> +<!-- tools:text="2022-01-01"--> +<!-- />--> +<!-- <TextView--> +<!-- android:layout_width="wrap_content"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:text="鈥�"--> +<!-- />--> +<!-- <androidx.appcompat.widget.AppCompatTextView--> +<!-- android:id="@+id/et_end_time"--> +<!-- android:layout_width="0dp"--> +<!-- android:layout_weight="1"--> +<!-- android:gravity="center"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:text="@={viewModel.requestBeanLiveData.happenEndTime}"--> +<!-- android:hint="缁撴潫鏃堕棿"--> +<!-- android:textColorHint="#61000000"--> +<!-- android:textColor="#FF333333"--> +<!-- android:textSize="14sp"--> +<!-- android:maxLines="1"--> +<!-- app:autoSizeTextType="uniform"--> +<!-- app:autoSizeMinTextSize="8sp"--> +<!-- app:autoSizeMaxTextSize="14sp"--> +<!-- tools:text="2022-01-01"--> +<!-- />--> +<!-- <ImageView--> +<!-- android:id="@+id/iv_time_clear"--> +<!-- android:layout_width="wrap_content"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:background="@drawable/ic_clear"--> +<!-- android:visibility="invisible"--> +<!-- />--> +<!-- </LinearLayout>--> + +<!-- </LinearLayout>--> + + +<!-- <View--> +<!-- android:layout_width="match_parent"--> +<!-- android:layout_height="0.3dp"--> +<!-- android:background="#FF939393" />--> +<!-- <LinearLayout--> +<!-- android:layout_width="match_parent"--> +<!-- android:layout_height="40dp"--> +<!-- android:gravity="center">--> + +<!-- <androidx.appcompat.widget.AppCompatTextView--> +<!-- android:layout_width="0dp"--> +<!-- android:layout_weight="1"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:text="鍦扮偣"--> +<!-- android:textColor="#FF333333"--> +<!-- android:textSize="14sp"--> +<!-- android:gravity="center"--> +<!-- android:maxLines="1"--> +<!-- android:lines="1"--> +<!-- app:autoSizeTextType="uniform"--> +<!-- app:autoSizeMinTextSize="8sp"--> +<!-- app:autoSizeMaxTextSize="14sp"--> +<!-- />--> + +<!-- <com.android.app_base.widget.ClearEditText--> +<!-- android:layout_width="0dp"--> +<!-- android:layout_weight="4"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:background="@null"--> +<!-- android:inputType="text"--> +<!-- android:layout_marginStart="6dp"--> +<!-- android:text="@={viewModel.requestBeanLiveData.place}"--> +<!-- android:hint="璇疯緭鍏ュ湴鐐�"--> +<!-- android:textColorHint="#61000000"--> +<!-- android:textColor="#FF333333"--> +<!-- android:textSize="14sp"--> +<!-- android:maxLines="1"--> +<!-- app:autoSizeTextType="uniform"--> +<!-- app:autoSizeMinTextSize="8sp"--> +<!-- app:autoSizeMaxTextSize="14sp"--> +<!-- app:background="@drawable/ic_clear"--> +<!-- />--> +<!-- </LinearLayout>--> + + +<!-- <View--> +<!-- android:layout_width="match_parent"--> +<!-- android:layout_height="0.3dp"--> +<!-- android:background="#FF939393" />--> + +<!-- <LinearLayout--> +<!-- android:layout_width="match_parent"--> +<!-- android:layout_height="40dp"--> +<!-- android:gravity="center">--> + +<!-- <androidx.appcompat.widget.AppCompatTextView--> +<!-- android:layout_width="0dp"--> +<!-- android:layout_weight="1"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:text="鐢宠閮ㄩ棬"--> +<!-- android:textColor="#FF333333"--> +<!-- android:textSize="14sp"--> +<!-- android:gravity="center"--> +<!-- android:maxLines="1"--> +<!-- app:autoSizeTextType="uniform"--> +<!-- app:autoSizeMinTextSize="8sp"--> +<!-- app:autoSizeMaxTextSize="14sp"--> +<!-- />--> + +<!-- <com.android.app_base.widget.ClearEditText--> +<!-- android:layout_width="0dp"--> +<!-- android:layout_weight="4"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:background="@null"--> +<!-- android:inputType="text"--> +<!-- android:layout_marginStart="6dp"--> +<!-- android:text="@={viewModel.requestBeanLiveData.applyApart}"--> +<!-- android:hint="璇疯緭鍏ョ敵璇烽儴闂�"--> +<!-- android:textColorHint="#61000000"--> +<!-- android:textColor="#FF333333"--> +<!-- android:textSize="14sp"--> +<!-- android:maxLines="1"--> +<!-- app:autoSizeTextType="uniform"--> +<!-- app:autoSizeMinTextSize="8sp"--> +<!-- app:autoSizeMaxTextSize="14sp"--> +<!-- app:background="@drawable/ic_clear"--> +<!-- />--> + + +<!-- </LinearLayout>--> + + + +<!-- <View--> +<!-- android:layout_width="match_parent"--> +<!-- android:layout_height="0.3dp"--> +<!-- android:background="#FF939393" />--> + +<!-- <LinearLayout--> +<!-- android:layout_width="match_parent"--> +<!-- android:layout_height="40dp"--> +<!-- android:gravity="center">--> + +<!-- <androidx.appcompat.widget.AppCompatTextView--> +<!-- android:layout_width="0dp"--> +<!-- android:layout_weight="1"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:text="鐢宠浜�"--> +<!-- android:textColor="#FF333333"--> +<!-- android:textSize="14sp"--> +<!-- android:gravity="center"--> +<!-- android:maxLines="1"--> +<!-- app:autoSizeTextType="uniform"--> +<!-- app:autoSizeMinTextSize="8sp"--> +<!-- app:autoSizeMaxTextSize="14sp"--> +<!-- />--> + +<!-- <com.android.app_base.widget.ClearEditText--> +<!-- android:layout_width="0dp"--> + +<!-- android:layout_weight="4"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:background="@null"--> +<!-- android:inputType="text"--> +<!-- android:layout_marginStart="6dp"--> +<!-- android:text="@={viewModel.requestBeanLiveData.applyPerson}"--> +<!-- android:hint="璇疯緭鍏ョ敵璇蜂汉"--> +<!-- android:textColorHint="#61000000"--> +<!-- android:textColor="#FF333333"--> +<!-- android:textSize="14sp"--> +<!-- android:maxLines="1"--> +<!-- app:autoSizeTextType="uniform"--> +<!-- app:autoSizeMinTextSize="8sp"--> +<!-- app:autoSizeMaxTextSize="14sp"--> +<!-- app:background="@drawable/ic_clear"--> +<!-- />--> + + +<!-- </LinearLayout>--> + +<!-- <View--> +<!-- android:layout_width="match_parent"--> +<!-- android:layout_height="0.3dp"--> +<!-- android:background="#FF939393" />--> + + +<!-- <View--> +<!-- android:layout_width="match_parent"--> +<!-- android:layout_height="0.3dp"--> +<!-- android:background="#FF939393" />--> + +<!-- </LinearLayout>--> + + </RelativeLayout> +<!-- <com.google.android.material.floatingactionbutton.FloatingActionButton--> +<!-- android:id="@+id/fab_add"--> +<!-- android:layout_width="56dp"--> +<!-- android:layout_height="56dp"--> +<!-- app:layout_constraintBottom_toBottomOf="parent"--> +<!-- app:layout_constraintEnd_toEndOf="parent"--> +<!-- android:layout_marginEnd="25dp"--> +<!-- android:layout_marginBottom="@dimen/dp_44"--> +<!-- android:src="@drawable/ic_add"--> +<!-- app:fabCustomSize="56dp"--> +<!-- />--> + </androidx.constraintlayout.widget.ConstraintLayout> + +</layout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_meeting_sta_detail.xml b/app/src/main/res/layout/activity_meeting_sta_detail.xml new file mode 100644 index 0000000..a142235 --- /dev/null +++ b/app/src/main/res/layout/activity_meeting_sta_detail.xml @@ -0,0 +1,203 @@ +<?xml version="1.0" encoding="utf-8"?> +<layout xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools"> + + <data> + <variable + name="viewModel" + type="com.application.zhangshi_app_android.ui.function.MeetingDetailActivityViewModel" /> + </data> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="?attr/detailPageBackgroundColor" + android:orientation="vertical"> + + <com.android.app_base.widget.ExtendTitleBar + android:id="@+id/titleBar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:title="@{viewModel.beanLiveData.id==0?`浼氳鐢宠璇︽儏`:viewModel.beanLiveData.title}" + app:titleGravity="left" + > + + <FrameLayout + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_marginHorizontal="16dp" + android:layout_gravity="center_vertical|end" + android:visibility="@{viewModel.beanLiveData.ownData==1}" + > + + + <ImageView + android:id="@+id/iv_operate" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:background="@{viewModel.typeLiveData?@drawable/ic_operate_finish:@drawable/ic_operate}" + /> + + </FrameLayout> + </com.android.app_base.widget.ExtendTitleBar> + + <androidx.core.widget.NestedScrollView + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintTop_toBottomOf="@id/titleBar" + > + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingHorizontal="20dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="瀹跺涵鍙�" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:id="@+id/editTextsequence" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ユ爣棰榒:``}" + android:text="@={viewModel.beanLiveData.title}" + android:enabled="@{viewModel.typeLiveData}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="浣跨敤鏃堕棿" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ュ湴鐐筦:``}" + android:text="@={viewModel.beanLiveData.place}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="浼氳瀹ゅ悕绉�" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:id="@+id/cp" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ュ彲瀹圭撼浜烘暟`:``}" + android:text="@={viewModel.beanLiveData.conPeople}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鏍囬" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData ? `璇疯緭鍏ュ弬涓庝汉鏁癭 : ``}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:text="@={viewModel.beanLiveData.partPeople}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鐢宠浜�" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ョ敵璇蜂汉`:``}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:text="@={viewModel.beanLiveData.applyPerson}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="瀹℃壒浜�" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ョ敵璇烽儴闂ㄦ垨瀹跺涵`:``}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:text="@={viewModel.beanLiveData.applyApart}" + android:enabled="@{viewModel.typeLiveData}" + /> + + + + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鐘舵��" + android:textColor="#ff000000" + android:textSize="12sp" + /> + + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="none" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ョ姸鎬乣:``}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:text="@={viewModel.beanLiveData.statu}" + android:enabled="@{viewModel.typeLiveData}" + android:clickable="false" + android:focusable="false" + /> + </LinearLayout> + </androidx.core.widget.NestedScrollView> + + + </LinearLayout> +</layout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_webback.xml b/app/src/main/res/layout/activity_webback.xml new file mode 100644 index 0000000..7a5905f --- /dev/null +++ b/app/src/main/res/layout/activity_webback.xml @@ -0,0 +1,396 @@ +<?xml version="1.0" encoding="utf-8"?> +<layout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + > + <data> + <import type="android.view.View"/> + <import type="com.android.app_base.utils.DateTimeConverter"/> + <variable + name="viewModel" + type="com.application.zhangshi_app_android.ui.function.WebbackActivityViewModel"/> + </data> + + <!--绾︽潫甯冨眬锛岃В鍐冲竷灞�宓屽杩囧鐨勯棶棰橈紝浠ョ伒娲荤殑鏂瑰紡瀹氫綅鍜岃皟鏁村皬閮ㄤ欢銆�--> + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".ui.function.WebcastActivity" + android:background="?attr/pageBackgroundColor" + > + + <!--鏍囬鏍�,瀹冪揣鎸ㄧ姸鎬佹爮鐨勪笅闈紝姝e父鎯呭喌涓嬪畠鐨勫竷灞�鍜屼富棰樻牱寮忛兘鏄娇鐢ㄧ郴缁熷畾涔夊ソ鐨勶紝涓旈粯璁ゆ儏鍐典笅鍙樉绀哄浘鏍囧拰鏂囨湰銆�--> + <com.android.app_base.widget.ExtendTitleBar + android:id="@+id/titleBar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintTop_toTopOf="parent" + > + + <FrameLayout + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_gravity="center_vertical|end" + android:layout_marginHorizontal="16dp"> + + <ImageView + android:id="@+id/iv_operate" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:background="@drawable/ic_operate" /> + </FrameLayout> + + <LinearLayout + android:id="@+id/layout_default" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginHorizontal="56dp" + android:gravity="center_vertical" + > + <TextView + android:id="@+id/tv_title" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:text="鐩存挱鍥炴斁" + android:layout_weight="1" + android:textColor="@color/white" + android:textSize="20sp" + /> + <ImageView + android:id="@+id/iv_search_default" + android:layout_width="@dimen/dp_24" + android:layout_height="@dimen/dp_24" + android:background="@drawable/ic_search" + /> + </LinearLayout> + + <LinearLayout + android:id="@+id/layout_search" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginVertical="4dp" + android:layout_marginHorizontal="56dp" + android:gravity="center_vertical" + android:background="@color/white" + android:paddingHorizontal="5dp" + android:visibility="gone" + > + <ImageView + android:id="@+id/iv_search" + android:layout_width="24dp" + android:layout_height="24dp" + android:background="@drawable/ic_search_gray" + /> + <EditText + android:id="@+id/et_search" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:layout_marginStart="5dp" + android:textSize="14sp" + android:textColor="#61000000" + android:background="@null" + android:imeOptions="actionSearch" + android:text="" + android:singleLine="true" + android:hint="鍦ㄢ�滅洿鎾洖鏀锯�滀腑鎼滅储" + android:focusable="false" + android:clickable="false" + /> + <ImageView + android:id="@+id/iv_search_type" + android:layout_width="24dp" + android:layout_height="24dp" + android:background="@drawable/ic_search_by" + /> + </LinearLayout> + + </com.android.app_base.widget.ExtendTitleBar> + + <LinearLayout + android:id="@+id/layout_data_null" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + android:gravity="center" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/titleBar"> + + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/img_data_null" + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="18dp" + android:text="鏆傛椂杩樻病鏈夋暟鎹摝~\n鐐瑰嚮鈥濓紜鈥濈珛鍗冲垱寤�" + android:textSize="14sp" + android:textColor="#73000000" + /> + </LinearLayout> + <com.scwang.smart.refresh.layout.SmartRefreshLayout + android:id="@+id/refreshLayout" + android:layout_width="match_parent" + android:layout_height="0dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@+id/titleBar" + > + <com.scwang.smart.refresh.header.MaterialHeader + android:layout_width="match_parent" + android:layout_height="wrap_content" + /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/recyclerView" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="20dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@+id/titleBar" + tools:itemCount="20" + tools:listitem="@layout/item_webback" /> + <com.scwang.smart.refresh.footer.BallPulseFooter + android:layout_width="match_parent" + android:layout_height="wrap_content"/> + </com.scwang.smart.refresh.layout.SmartRefreshLayout> + <RelativeLayout + android:id="@+id/container_search_parameter" + android:layout_width="0dp" + android:layout_height="0dp" + app:layout_constraintTop_toBottomOf="@id/titleBar" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginTop="-4dp" + tools:layout_height="wrap_content" + > + <LinearLayout + android:id="@+id/layout_search_parameter" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@color/white" + android:layout_marginHorizontal="56dp" + android:paddingEnd="12dp" + android:paddingStart="5dp" + > + <View + android:layout_width="match_parent" + android:layout_height="0.5dp" + android:background="#FF939393" /> + + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center" + > + + <androidx.appcompat.widget.AppCompatTextView + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:text="鏃堕棿" + android:textColor="#FF333333" + android:textSize="14sp" + android:gravity="center" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + /> + + <LinearLayout + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:gravity="center" + > + <androidx.appcompat.widget.AppCompatTextView + android:id="@+id/et_start_time" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:gravity="center" + android:layout_marginStart="6dp" + android:text="@={DateTimeConverter.dateFromString(viewModel.requestBeanLiveData.startTime)}" + android:hint="寮�濮嬫椂闂�" + android:textColorHint="#61000000" + android:textColor="#FF333333" + android:textSize="14sp" + android:maxLines="1" + android:lines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + tools:text="2022-01-01" + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鈥�" + /> + <androidx.appcompat.widget.AppCompatTextView + android:id="@+id/et_end_time" + android:layout_width="0dp" + android:layout_weight="1" + android:gravity="center" + android:layout_height="wrap_content" + android:text="@={DateTimeConverter.dateFromString(viewModel.requestBeanLiveData.endTime)}" + android:hint="缁撴潫鏃堕棿" + android:textColorHint="#61000000" + android:textColor="#FF333333" + android:textSize="14sp" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + tools:text="2022-01-01" + /> + <ImageView + android:id="@+id/iv_time_clear" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/ic_clear" + android:visibility="invisible" + /> + </LinearLayout> + + </LinearLayout> + + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center"> + + <androidx.appcompat.widget.AppCompatTextView + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:text="鐩存挱鏍囬" + android:textColor="#FF333333" + android:textSize="14sp" + android:gravity="center" + android:maxLines="1" + android:lines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + /> + + <com.android.app_base.widget.ClearEditText + android:layout_width="0dp" + android:layout_weight="4" + android:layout_height="wrap_content" + android:background="@null" + android:inputType="text" + android:layout_marginStart="6dp" + android:text="@={viewModel.requestBeanLiveData.title}" + android:hint="璇疯緭鍏ユ爣棰�" + android:textColorHint="#61000000" + android:textColor="#FF333333" + android:textSize="14sp" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + app:background="@drawable/ic_clear" + /> + </LinearLayout> + + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center"> + + <androidx.appcompat.widget.AppCompatTextView + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:text="鐢宠浜�" + android:textColor="#FF333333" + android:textSize="14sp" + android:gravity="center" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + /> + + <com.android.app_base.widget.ClearEditText + android:layout_width="0dp" + android:layout_weight="4" + android:layout_height="wrap_content" + android:background="@null" + android:inputType="text" + android:layout_marginStart="6dp" + android:text="@={viewModel.requestBeanLiveData.applyPerson}" + android:hint="璇疯緭鍏ョ敵璇蜂汉" + android:textColorHint="#61000000" + android:textColor="#FF333333" + android:textSize="14sp" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + app:background="@drawable/ic_clear" + /> + + + </LinearLayout> + + + + + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + + </LinearLayout> + + </RelativeLayout> +<!-- <com.google.android.material.floatingactionbutton.FloatingActionButton--> +<!-- android:id="@+id/fab_add"--> +<!-- android:layout_width="56dp"--> +<!-- android:layout_height="56dp"--> +<!-- app:layout_constraintBottom_toBottomOf="parent"--> +<!-- app:layout_constraintEnd_toEndOf="parent"--> +<!-- android:layout_marginEnd="25dp"--> +<!-- android:layout_marginBottom="@dimen/dp_44"--> +<!-- android:src="@drawable/ic_add"--> +<!-- app:fabCustomSize="56dp"--> +<!-- />--> + </androidx.constraintlayout.widget.ConstraintLayout> + +</layout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_webback_detail.xml b/app/src/main/res/layout/activity_webback_detail.xml new file mode 100644 index 0000000..ceb42c6 --- /dev/null +++ b/app/src/main/res/layout/activity_webback_detail.xml @@ -0,0 +1,270 @@ +<?xml version="1.0" encoding="utf-8"?> +<layout xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools"> + + <data> + <variable + name="viewModel" + type="com.application.zhangshi_app_android.ui.function.WebbackDetailActivityViewModel" /> + </data> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="?attr/detailPageBackgroundColor" + android:orientation="vertical"> + + <com.android.app_base.widget.ExtendTitleBar + android:id="@+id/titleBar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:title="@{viewModel.beanLiveData.id==0?`浼氳鐢宠璇︽儏`:viewModel.beanLiveData.title}" + app:titleGravity="left" + > + + <FrameLayout + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_marginHorizontal="16dp" + android:layout_gravity="center_vertical|end" + android:visibility="@{viewModel.beanLiveData.ownData==1}" + > + + + <ImageView + android:id="@+id/iv_operate" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:background="@{viewModel.typeLiveData?@drawable/ic_operate_finish:@drawable/ic_operate}" + /> + + </FrameLayout> + </com.android.app_base.widget.ExtendTitleBar> + + <androidx.core.widget.NestedScrollView + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintTop_toBottomOf="@id/titleBar" + > + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingHorizontal="20dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鏍囬" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:id="@+id/editTextsequence" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ユ爣棰榒:``}" + android:text="@={viewModel.beanLiveData.title}" + android:enabled="@{viewModel.typeLiveData}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鐢宠浜�" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ョ敵璇蜂汉`:``}" + android:text="@={viewModel.beanLiveData.applyPerson}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鑱旂郴浜�" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:id="@+id/cp" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ヨ仈绯讳汉`:``}" + android:text="@={viewModel.beanLiveData.contactPerson}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鑱旂郴鐢佃瘽" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData ? `璇疯緭鍏ヨ仈绯荤數璇漙 : ``}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:text="@={viewModel.beanLiveData.contactPhone}" + android:enabled="@{viewModel.typeLiveData}" + /> + + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="寮�濮嬫椂闂�" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + > + + <EditText + android:id="@+id/et_date1" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:enabled="@{viewModel.typeLiveData}" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ュ紑濮嬫椂闂寸殑骞存湀鏃:``}" + android:inputType="text" + android:text="@={viewModel.beanLiveData.date1}" + android:textColor="#DE000000" + android:textColorHint="#6b000000" + android:textSize="16sp" + app:isEditable="@{false}" /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text=" " + /> + <EditText + android:id="@+id/et_time1" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:enabled="@{viewModel.typeLiveData}" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ュ紑濮嬫椂闂寸殑鏃跺垎绉抈:``}" + android:inputType="text" + android:text="@={viewModel.beanLiveData.time1}" + android:textColor="#DE000000" + android:textColorHint="#6b000000" + android:textSize="16sp" + app:isEditable="@{false}" /> + + + </LinearLayout> + + + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="缁撴潫鏃堕棿" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + > + + <EditText + android:id="@+id/et_date2" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:enabled="@{viewModel.typeLiveData}" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ョ粨鏉熸椂闂寸殑骞存湀鏃:``}" + android:inputType="text" + android:text="@={viewModel.beanLiveData.date2}" + android:textColor="#DE000000" + android:textColorHint="#6b000000" + android:textSize="16sp" + app:isEditable="@{false}" /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text=" " + /> + <EditText + android:id="@+id/et_time2" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:enabled="@{viewModel.typeLiveData}" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ョ粨鏉熸椂闂寸殑鏃跺垎绉抈:``}" + android:inputType="text" + android:text="@={viewModel.beanLiveData.time2}" + android:textColor="#DE000000" + android:textColorHint="#6b000000" + android:textSize="16sp" + app:isEditable="@{false}" /> + + + </LinearLayout> + + + + + + + + <RelativeLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + > + <com.android.app_base.widget.WrapRecyclerView + android:id="@+id/rv_image" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@drawable/shape_6b0000_stroke" + android:layout_marginBottom="20dp" + android:layout_marginTop="2dp" + android:paddingStart="10dp" + android:paddingEnd="5dp" + android:paddingVertical="10dp" + tools:itemCount="30" + /> + + </RelativeLayout> + + </LinearLayout> + </androidx.core.widget.NestedScrollView> + + + </LinearLayout> +</layout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_webcast.xml b/app/src/main/res/layout/activity_webcast.xml new file mode 100644 index 0000000..b1177f2 --- /dev/null +++ b/app/src/main/res/layout/activity_webcast.xml @@ -0,0 +1,395 @@ +<?xml version="1.0" encoding="utf-8"?> +<layout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + > + <data> + <import type="android.view.View"/> + <variable + name="viewModel" + type="com.application.zhangshi_app_android.ui.function.WebcastActivityViewModel"/> + </data> + + <!--绾︽潫甯冨眬锛岃В鍐冲竷灞�宓屽杩囧鐨勯棶棰橈紝浠ョ伒娲荤殑鏂瑰紡瀹氫綅鍜岃皟鏁村皬閮ㄤ欢銆�--> + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".ui.function.WebcastActivity" + android:background="?attr/pageBackgroundColor" + > + + <!--鏍囬鏍�,瀹冪揣鎸ㄧ姸鎬佹爮鐨勪笅闈紝姝e父鎯呭喌涓嬪畠鐨勫竷灞�鍜屼富棰樻牱寮忛兘鏄娇鐢ㄧ郴缁熷畾涔夊ソ鐨勶紝涓旈粯璁ゆ儏鍐典笅鍙樉绀哄浘鏍囧拰鏂囨湰銆�--> + <com.android.app_base.widget.ExtendTitleBar + android:id="@+id/titleBar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintTop_toTopOf="parent" + > + + <FrameLayout + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_gravity="center_vertical|end" + android:layout_marginHorizontal="16dp"> + + <ImageView + android:id="@+id/iv_operate" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:background="@drawable/ic_operate" /> + </FrameLayout> + + <LinearLayout + android:id="@+id/layout_default" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginHorizontal="56dp" + android:gravity="center_vertical" + > + <TextView + android:id="@+id/tv_title" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:text="鐩存挱鐢宠" + android:layout_weight="1" + android:textColor="@color/white" + android:textSize="20sp" + /> + <ImageView + android:id="@+id/iv_search_default" + android:layout_width="@dimen/dp_24" + android:layout_height="@dimen/dp_24" + android:background="@drawable/ic_search" + /> + </LinearLayout> + + <LinearLayout + android:id="@+id/layout_search" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginVertical="4dp" + android:layout_marginHorizontal="56dp" + android:gravity="center_vertical" + android:background="@color/white" + android:paddingHorizontal="5dp" + android:visibility="gone" + > + <ImageView + android:id="@+id/iv_search" + android:layout_width="24dp" + android:layout_height="24dp" + android:background="@drawable/ic_search_gray" + /> + <EditText + android:id="@+id/et_search" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:layout_marginStart="5dp" + android:textSize="14sp" + android:textColor="#61000000" + android:background="@null" + android:imeOptions="actionSearch" + android:text="" + android:singleLine="true" + android:hint="鍦ㄢ�滅洿鎾敵璇封�滀腑鎼滅储" + android:focusable="false" + android:clickable="false" + /> + <ImageView + android:id="@+id/iv_search_type" + android:layout_width="24dp" + android:layout_height="24dp" + android:background="@drawable/ic_search_by" + /> + </LinearLayout> + + </com.android.app_base.widget.ExtendTitleBar> + + <LinearLayout + android:id="@+id/layout_data_null" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + android:gravity="center" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/titleBar"> + + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/img_data_null" + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="18dp" + android:text="鏆傛椂杩樻病鏈夋暟鎹摝~\n鐐瑰嚮鈥濓紜鈥濈珛鍗冲垱寤�" + android:textSize="14sp" + android:textColor="#73000000" + /> + </LinearLayout> + <com.scwang.smart.refresh.layout.SmartRefreshLayout + android:id="@+id/refreshLayout" + android:layout_width="match_parent" + android:layout_height="0dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@+id/titleBar" + > + <com.scwang.smart.refresh.header.MaterialHeader + android:layout_width="match_parent" + android:layout_height="wrap_content" + /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/recyclerView" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="20dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@+id/titleBar" + tools:itemCount="20" + tools:listitem="@layout/item_webcast" /> + <com.scwang.smart.refresh.footer.BallPulseFooter + android:layout_width="match_parent" + android:layout_height="wrap_content"/> + </com.scwang.smart.refresh.layout.SmartRefreshLayout> + <RelativeLayout + android:id="@+id/container_search_parameter" + android:layout_width="0dp" + android:layout_height="0dp" + app:layout_constraintTop_toBottomOf="@id/titleBar" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginTop="-4dp" + tools:layout_height="wrap_content" + > + <LinearLayout + android:id="@+id/layout_search_parameter" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@color/white" + android:layout_marginHorizontal="56dp" + android:paddingEnd="12dp" + android:paddingStart="5dp" + > + <View + android:layout_width="match_parent" + android:layout_height="0.5dp" + android:background="#FF939393" /> + + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center" + > + + <androidx.appcompat.widget.AppCompatTextView + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:text="鏃堕棿" + android:textColor="#FF333333" + android:textSize="14sp" + android:gravity="center" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + /> + + <LinearLayout + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:gravity="center" + > + <androidx.appcompat.widget.AppCompatTextView + android:id="@+id/et_start_time" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:gravity="center" + android:layout_marginStart="6dp" + android:text="@={viewModel.requestBeanLiveData.startTime}" + android:hint="寮�濮嬫椂闂�" + android:textColorHint="#61000000" + android:textColor="#FF333333" + android:textSize="14sp" + android:maxLines="1" + android:lines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + tools:text="2022-01-01" + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鈥�" + /> + <androidx.appcompat.widget.AppCompatTextView + android:id="@+id/et_end_time" + android:layout_width="0dp" + android:layout_weight="1" + android:gravity="center" + android:layout_height="wrap_content" + android:text="@={viewModel.requestBeanLiveData.endTime}" + android:hint="缁撴潫鏃堕棿" + android:textColorHint="#61000000" + android:textColor="#FF333333" + android:textSize="14sp" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + tools:text="2022-01-01" + /> + <ImageView + android:id="@+id/iv_time_clear" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/ic_clear" + android:visibility="invisible" + /> + </LinearLayout> + + </LinearLayout> + + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center"> + + <androidx.appcompat.widget.AppCompatTextView + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:text="鐩存挱鏍囬" + android:textColor="#FF333333" + android:textSize="14sp" + android:gravity="center" + android:maxLines="1" + android:lines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + /> + + <com.android.app_base.widget.ClearEditText + android:layout_width="0dp" + android:layout_weight="4" + android:layout_height="wrap_content" + android:background="@null" + android:inputType="text" + android:layout_marginStart="6dp" + android:text="@={viewModel.requestBeanLiveData.title}" + android:hint="璇疯緭鍏ユ爣棰�" + android:textColorHint="#61000000" + android:textColor="#FF333333" + android:textSize="14sp" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + app:background="@drawable/ic_clear" + /> + </LinearLayout> + + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center"> + + <androidx.appcompat.widget.AppCompatTextView + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:text="鐢宠浜�" + android:textColor="#FF333333" + android:textSize="14sp" + android:gravity="center" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + /> + + <com.android.app_base.widget.ClearEditText + android:layout_width="0dp" + android:layout_weight="4" + android:layout_height="wrap_content" + android:background="@null" + android:inputType="text" + android:layout_marginStart="6dp" + android:text="@={viewModel.requestBeanLiveData.applyPerson}" + android:hint="璇疯緭鍏ョ敵璇蜂汉" + android:textColorHint="#61000000" + android:textColor="#FF333333" + android:textSize="14sp" + android:maxLines="1" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="8sp" + app:autoSizeMaxTextSize="14sp" + app:background="@drawable/ic_clear" + /> + + + </LinearLayout> + + + + + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" /> + + </LinearLayout> + + </RelativeLayout> + <com.google.android.material.floatingactionbutton.FloatingActionButton + android:id="@+id/fab_add" + android:layout_width="56dp" + android:layout_height="56dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginEnd="25dp" + android:layout_marginBottom="@dimen/dp_44" + android:src="@drawable/ic_add" + app:fabCustomSize="56dp" + /> + </androidx.constraintlayout.widget.ConstraintLayout> + +</layout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_webcast_detail.xml b/app/src/main/res/layout/activity_webcast_detail.xml new file mode 100644 index 0000000..7512dd4 --- /dev/null +++ b/app/src/main/res/layout/activity_webcast_detail.xml @@ -0,0 +1,270 @@ +<?xml version="1.0" encoding="utf-8"?> +<layout xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools"> + + <data> + <variable + name="viewModel" + type="com.application.zhangshi_app_android.ui.function.WebcastDetailActivityViewModel" /> + </data> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="?attr/detailPageBackgroundColor" + android:orientation="vertical"> + + <com.android.app_base.widget.ExtendTitleBar + android:id="@+id/titleBar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:title="@{viewModel.beanLiveData.id==0?`浼氳鐢宠璇︽儏`:viewModel.beanLiveData.title}" + app:titleGravity="left" + > + + <FrameLayout + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_marginHorizontal="16dp" + android:layout_gravity="center_vertical|end" + android:visibility="@{viewModel.beanLiveData.ownData==1}" + > + + + <ImageView + android:id="@+id/iv_operate" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:background="@{viewModel.typeLiveData?@drawable/ic_operate_finish:@drawable/ic_operate}" + /> + + </FrameLayout> + </com.android.app_base.widget.ExtendTitleBar> + + <androidx.core.widget.NestedScrollView + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintTop_toBottomOf="@id/titleBar" + > + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingHorizontal="20dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鏍囬" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:id="@+id/editTextsequence" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ユ爣棰榒:``}" + android:text="@={viewModel.beanLiveData.title}" + android:enabled="@{viewModel.typeLiveData}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鐢宠浜�" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ョ敵璇蜂汉`:``}" + android:text="@={viewModel.beanLiveData.applyPerson}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鑱旂郴浜�" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:id="@+id/cp" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ヨ仈绯讳汉`:``}" + android:text="@={viewModel.beanLiveData.contactPerson}" + android:enabled="@{viewModel.typeLiveData}" + /> + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="鑱旂郴鐢佃瘽" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:hint="@{viewModel.typeLiveData ? `璇疯緭鍏ヨ仈绯荤數璇漙 : ``}" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + android:text="@={viewModel.beanLiveData.contactPhone}" + android:enabled="@{viewModel.typeLiveData}" + /> + + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="寮�濮嬫椂闂�" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + > + + <EditText + android:id="@+id/et_date1" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:enabled="@{viewModel.typeLiveData}" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ュ紑濮嬫椂闂寸殑骞存湀鏃:``}" + android:inputType="text" + android:text="@={viewModel.beanLiveData.date1}" + android:textColor="#DE000000" + android:textColorHint="#6b000000" + android:textSize="16sp" + app:isEditable="@{false}" /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text=" " + /> + <EditText + android:id="@+id/et_time1" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:enabled="@{viewModel.typeLiveData}" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ュ紑濮嬫椂闂寸殑鏃跺垎绉抈:``}" + android:inputType="text" + android:text="@={viewModel.beanLiveData.time1}" + android:textColor="#DE000000" + android:textColorHint="#6b000000" + android:textSize="16sp" + app:isEditable="@{false}" /> + + + </LinearLayout> + + + <TextView + android:layout_width="wrap_content" + android:layout_marginTop="@dimen/dp_10" + android:layout_height="@dimen/dp_20" + android:text="缁撴潫鏃堕棿" + android:textColor="#ff000000" + android:textSize="12sp" + /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textColorHint="#6b000000" + android:textColor="#DE000000" + android:textSize="16sp" + > + + <EditText + android:id="@+id/et_date2" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:enabled="@{viewModel.typeLiveData}" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ョ粨鏉熸椂闂寸殑骞存湀鏃:``}" + android:inputType="text" + android:text="@={viewModel.beanLiveData.date2}" + android:textColor="#DE000000" + android:textColorHint="#6b000000" + android:textSize="16sp" + app:isEditable="@{false}" /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text=" " + /> + <EditText + android:id="@+id/et_time2" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:enabled="@{viewModel.typeLiveData}" + android:hint="@{viewModel.typeLiveData?`璇疯緭鍏ョ粨鏉熸椂闂寸殑鏃跺垎绉抈:``}" + android:inputType="text" + android:text="@={viewModel.beanLiveData.time2}" + android:textColor="#DE000000" + android:textColorHint="#6b000000" + android:textSize="16sp" + app:isEditable="@{false}" /> + + + </LinearLayout> + + + + + + + + <RelativeLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + > + <com.android.app_base.widget.WrapRecyclerView + android:id="@+id/rv_image" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@drawable/shape_6b0000_stroke" + android:layout_marginBottom="20dp" + android:layout_marginTop="2dp" + android:paddingStart="10dp" + android:paddingEnd="5dp" + android:paddingVertical="10dp" + tools:itemCount="30" + /> + + </RelativeLayout> + + </LinearLayout> + </androidx.core.widget.NestedScrollView> + + + </LinearLayout> +</layout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_function.xml b/app/src/main/res/layout/fragment_function.xml index 1712a99..6f5b614 100644 --- a/app/src/main/res/layout/fragment_function.xml +++ b/app/src/main/res/layout/fragment_function.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<layout +<layout xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android" > @@ -113,6 +113,7 @@ android:orientation="vertical" app:layout_constraintGuide_percent="0.25" /> + <TextView android:id="@+id/tv_core_module" @@ -372,12 +373,13 @@ android:textSize="@dimen/sp_14" /> </LinearLayout> + <TextView - android:id="@+id/tv_personal_module" + android:id="@+id/tv_family_module" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="@dimen/dp_20" - android:text="涓汉妯″潡" + android:layout_marginTop="20dp" + android:text="瀹跺涵浼氳" android:textColor="@color/black" android:textSize="@dimen/sp_18" android:textStyle="bold" @@ -385,6 +387,161 @@ app:layout_constraintTop_toBottomOf="@+id/layout_income_and_expenses" /> <LinearLayout + android:id="@+id/layout_family_meeting" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="15dp" + android:gravity="center" + android:orientation="vertical" + app:layout_constraintEnd_toStartOf="@+id/gl_v_0.25" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/tv_family_module"> + + <ImageView + android:layout_width="24dp" + android:layout_height="24dp" + android:background="?attr/icFunctionLittleDoctor" + /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/dp_4" + android:text="浼氳鐢宠" + android:textColor="@color/black" + android:textSize="@dimen/sp_14" /> + </LinearLayout> + + <LinearLayout + android:id="@+id/layout_meeting_approve" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center" + android:orientation="vertical" + app:layout_constraintEnd_toStartOf="@+id/gl_v_0.5" + app:layout_constraintStart_toStartOf="@+id/gl_v_0.25" + app:layout_constraintTop_toTopOf="@id/layout_family_meeting"> + + <ImageView + android:layout_width="24dp" + android:layout_height="24dp" + android:background="?attr/icFunctionLittleDoctor" + /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/dp_4" + android:text="浼氳瀹℃壒" + android:textColor="@color/black" + android:textSize="@dimen/sp_14" /> + </LinearLayout> + + + <LinearLayout + android:id="@+id/layout_meeting_sta" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center" + android:orientation="vertical" + app:layout_constraintEnd_toEndOf="@+id/layout_contacts" + app:layout_constraintStart_toStartOf="@+id/layout_contacts" + app:layout_constraintTop_toTopOf="@id/layout_family_meeting"> + + <ImageView + android:layout_width="24dp" + android:layout_height="24dp" + android:background="?attr/icFunctionLittleDoctor" + /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/dp_4" + android:text="浼氳缁熻" + android:textColor="@color/black" + android:textSize="@dimen/sp_14" /> + </LinearLayout> + + + <LinearLayout + android:id="@+id/layout_webcast" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center" + android:orientation="vertical" + app:layout_constraintEnd_toEndOf="@+id/layout_pet" + app:layout_constraintStart_toStartOf="@+id/layout_pet" + app:layout_constraintTop_toTopOf="@id/layout_family_meeting"> + + <ImageView + android:layout_width="24dp" + android:layout_height="24dp" + android:background="?attr/icFunctionLittleDoctor" + /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/dp_4" + android:text="鐩存挱鐢宠" + android:textColor="@color/black" + android:textSize="@dimen/sp_14" /> + </LinearLayout> + + + + <LinearLayout + android:id="@+id/layout_webback" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + + app:layout_constraintStart_toStartOf="@id/layout_family_meeting" + app:layout_constraintEnd_toEndOf="@id/layout_family_meeting" + app:layout_constraintTop_toBottomOf="@id/layout_family_meeting" + android:layout_marginTop="@dimen/dp_20" + android:gravity="center" + > + + <ImageView + android:layout_width="24dp" + android:layout_height="24dp" + android:background="?attr/icFunctionLittleDoctor" + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/dp_4" + android:textSize="@dimen/sp_14" + android:text="鐩存挱鍥炴斁" + android:textColor="@color/black" + /> + </LinearLayout> + + + + + + + + + + + <TextView + android:id="@+id/tv_personal_module" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="90dp" + android:text="涓汉妯″潡" + android:textColor="@color/black" + android:textSize="@dimen/sp_18" + android:textStyle="bold" + app:layout_constraintStart_toStartOf="@+id/tv_family_module" + app:layout_constraintTop_toBottomOf="@+id/layout_family_meeting" /> + + + <LinearLayout android:id="@+id/layout_growing_up" android:layout_width="wrap_content" android:layout_height="wrap_content" diff --git a/app/src/main/res/layout/item_meeting.xml b/app/src/main/res/layout/item_meeting.xml new file mode 100644 index 0000000..0667520 --- /dev/null +++ b/app/src/main/res/layout/item_meeting.xml @@ -0,0 +1,457 @@ +<?xml version="1.0" encoding="utf-8"?> +<layout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> + + <data> + <variable + name="bean" + type="com.application.zhangshi_app_android.bean.MeetingBean" /> + </data> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + > + <androidx.cardview.widget.CardView + android:id="@+id/cardView" + android:layout_width="match_parent" + android:layout_height="40dp" + android:layout_margin="@dimen/dp_2" + app:cardCornerRadius="@dimen/dp_10" + app:cardBackgroundColor="?attr/cardBackgroundColorFirst" + tools:layout_height="wrap_content" + > + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + > + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/layout_title" + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center_vertical" + > + <CheckBox + android:id="@+id/checkbox" + android:layout_width="18dp" + android:layout_height="18dp" + android:layout_marginStart="3dp" + android:layout_centerVertical="true" + android:button="?attr/checkboxSelector" + android:background="?selectableItemBackgroundBorderless" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + /> + <ImageView + android:id="@+id/iv_flower" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="3dp" + android:layout_centerVertical="true" + android:background="?attr/icIsOwnFamilyDataFlower" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + /> + + <TextView + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:ellipsize="end" + android:maxLines="1" + android:text="@{bean.title}" + android:textColor="@color/black" + android:textSize="16sp" + android:layout_marginStart="24dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintWidth_percent="0.5" + tools:text="寮犳皬App绔嬮」" /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="16sp" + android:textColor="@color/black" + android:text="@{bean.startTime}" + android:layout_alignParentEnd="true" + android:layout_centerVertical="true" + tools:text="2023-05-16" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintEnd_toStartOf="@id/iv_fold" + android:layout_marginEnd="10dp" + /> + <ImageView + android:id="@+id/iv_fold" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/ic_fold" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginEnd="10dp" + /> + + </androidx.constraintlayout.widget.ConstraintLayout> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingHorizontal="@dimen/dp_24" + > + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鍦扮偣锛�" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.place}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鍙绾充汉鏁帮細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.conPeople}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鍙備笌浜烘暟锛�" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.partPeople}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鐢宠浜猴細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@{bean.applyPerson}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鐢宠閮ㄩ棬鎴栧搴細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@{bean.applyApart}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="寮�濮嬫椂闂达細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.startTime}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="缁撴潫鏃堕棿锛�" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.endTime}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鏄惁鎽嗘斁姘寸墝锛�" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.isPlacebrand}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鑱旂郴浜猴細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.connPerson}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鑱旂郴鐢佃瘽锛�" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@{bean.connPhone}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鐘舵�侊細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.statu}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + + + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginBottom="6dp" + android:text="鐢靛瓙鏂囦欢锛�" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="15dp" + > + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/rv_image" + android:layout_width="match_parent" + android:layout_height="wrap_content" + tools:listitem="@layout/item_electronic_file" + tools:itemCount="3" + /> + + </LinearLayout> + <LinearLayout + tools:visibility="visible" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_marginBottom="@dimen/dp_12" + android:visibility="gone" + > + <LinearLayout + android:id="@+id/layout_modify" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + > + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/ic_modify" + android:layout_gravity="center" + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="淇敼" + android:textColor="@color/black" + android:textSize="@dimen/sp_14" + + android:layout_marginStart="@dimen/dp_4" + /> + </LinearLayout> + <LinearLayout + android:id="@+id/layout_delete" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/dp_52" + > + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/ic_delete" + android:layout_gravity="center" + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鍒犻櫎" + android:textColor="#FFE86F72" + android:textSize="@dimen/sp_14" + + android:layout_marginStart="@dimen/dp_4" + /> + </LinearLayout> + </LinearLayout> + + </LinearLayout> + </LinearLayout> + + </androidx.cardview.widget.CardView> + + </LinearLayout> + +</layout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_meeting_approve.xml b/app/src/main/res/layout/item_meeting_approve.xml new file mode 100644 index 0000000..0667520 --- /dev/null +++ b/app/src/main/res/layout/item_meeting_approve.xml @@ -0,0 +1,457 @@ +<?xml version="1.0" encoding="utf-8"?> +<layout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> + + <data> + <variable + name="bean" + type="com.application.zhangshi_app_android.bean.MeetingBean" /> + </data> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + > + <androidx.cardview.widget.CardView + android:id="@+id/cardView" + android:layout_width="match_parent" + android:layout_height="40dp" + android:layout_margin="@dimen/dp_2" + app:cardCornerRadius="@dimen/dp_10" + app:cardBackgroundColor="?attr/cardBackgroundColorFirst" + tools:layout_height="wrap_content" + > + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + > + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/layout_title" + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center_vertical" + > + <CheckBox + android:id="@+id/checkbox" + android:layout_width="18dp" + android:layout_height="18dp" + android:layout_marginStart="3dp" + android:layout_centerVertical="true" + android:button="?attr/checkboxSelector" + android:background="?selectableItemBackgroundBorderless" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + /> + <ImageView + android:id="@+id/iv_flower" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="3dp" + android:layout_centerVertical="true" + android:background="?attr/icIsOwnFamilyDataFlower" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + /> + + <TextView + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:ellipsize="end" + android:maxLines="1" + android:text="@{bean.title}" + android:textColor="@color/black" + android:textSize="16sp" + android:layout_marginStart="24dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintWidth_percent="0.5" + tools:text="寮犳皬App绔嬮」" /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="16sp" + android:textColor="@color/black" + android:text="@{bean.startTime}" + android:layout_alignParentEnd="true" + android:layout_centerVertical="true" + tools:text="2023-05-16" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintEnd_toStartOf="@id/iv_fold" + android:layout_marginEnd="10dp" + /> + <ImageView + android:id="@+id/iv_fold" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/ic_fold" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginEnd="10dp" + /> + + </androidx.constraintlayout.widget.ConstraintLayout> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingHorizontal="@dimen/dp_24" + > + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鍦扮偣锛�" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.place}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鍙绾充汉鏁帮細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.conPeople}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鍙備笌浜烘暟锛�" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.partPeople}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鐢宠浜猴細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@{bean.applyPerson}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鐢宠閮ㄩ棬鎴栧搴細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@{bean.applyApart}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="寮�濮嬫椂闂达細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.startTime}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="缁撴潫鏃堕棿锛�" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.endTime}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鏄惁鎽嗘斁姘寸墝锛�" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.isPlacebrand}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鑱旂郴浜猴細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.connPerson}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鑱旂郴鐢佃瘽锛�" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@{bean.connPhone}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鐘舵�侊細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.statu}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + + + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginBottom="6dp" + android:text="鐢靛瓙鏂囦欢锛�" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="15dp" + > + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/rv_image" + android:layout_width="match_parent" + android:layout_height="wrap_content" + tools:listitem="@layout/item_electronic_file" + tools:itemCount="3" + /> + + </LinearLayout> + <LinearLayout + tools:visibility="visible" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_marginBottom="@dimen/dp_12" + android:visibility="gone" + > + <LinearLayout + android:id="@+id/layout_modify" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + > + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/ic_modify" + android:layout_gravity="center" + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="淇敼" + android:textColor="@color/black" + android:textSize="@dimen/sp_14" + + android:layout_marginStart="@dimen/dp_4" + /> + </LinearLayout> + <LinearLayout + android:id="@+id/layout_delete" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/dp_52" + > + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/ic_delete" + android:layout_gravity="center" + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鍒犻櫎" + android:textColor="#FFE86F72" + android:textSize="@dimen/sp_14" + + android:layout_marginStart="@dimen/dp_4" + /> + </LinearLayout> + </LinearLayout> + + </LinearLayout> + </LinearLayout> + + </androidx.cardview.widget.CardView> + + </LinearLayout> + +</layout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_meeting_sta.xml b/app/src/main/res/layout/item_meeting_sta.xml new file mode 100644 index 0000000..942554d --- /dev/null +++ b/app/src/main/res/layout/item_meeting_sta.xml @@ -0,0 +1,308 @@ +<?xml version="1.0" encoding="utf-8"?> +<layout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> + + <data> + <variable + name="bean" + type="com.application.zhangshi_app_android.bean.MeetingStaBean" /> + </data> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + > + <androidx.cardview.widget.CardView + android:id="@+id/cardView" + android:layout_width="match_parent" + android:layout_height="40dp" + android:layout_margin="@dimen/dp_2" + app:cardCornerRadius="@dimen/dp_10" + app:cardBackgroundColor="?attr/cardBackgroundColorFirst" + tools:layout_height="wrap_content" + > + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + > + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/layout_title" + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center_vertical" + > + <CheckBox + android:id="@+id/checkbox" + android:layout_width="18dp" + android:layout_height="18dp" + android:layout_marginStart="3dp" + android:layout_centerVertical="true" + android:button="?attr/checkboxSelector" + android:background="?selectableItemBackgroundBorderless" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + /> + <ImageView + android:id="@+id/iv_flower" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="3dp" + android:layout_centerVertical="true" + android:background="?attr/icIsOwnFamilyDataFlower" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + /> + + <TextView + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:ellipsize="end" + android:maxLines="1" + android:text="@{bean.title}" + android:textColor="@color/black" + android:textSize="16sp" + android:layout_marginStart="24dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintWidth_percent="0.5" + tools:text="寮犳皬App绔嬮」" /> +<!-- <TextView--> +<!-- android:layout_width="wrap_content"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:textSize="16sp"--> +<!-- android:textColor="@color/black"--> +<!-- android:text="@{bean.startTime}"--> +<!-- android:layout_alignParentEnd="true"--> +<!-- android:layout_centerVertical="true"--> +<!-- tools:text="2023-05-16"--> +<!-- app:layout_constraintBottom_toBottomOf="parent"--> +<!-- app:layout_constraintTop_toTopOf="parent"--> +<!-- app:layout_constraintEnd_toStartOf="@id/iv_fold"--> +<!-- android:layout_marginEnd="10dp"--> +<!-- />--> + <ImageView + android:id="@+id/iv_fold" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/ic_fold" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginEnd="10dp" + /> + + </androidx.constraintlayout.widget.ConstraintLayout> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingHorizontal="@dimen/dp_24" + > + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="瀹跺涵鍙凤細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.familyId}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="浣跨敤鏃堕棿锛�" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.useTime}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="浼氳瀹ゅ悕绉帮細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.conferenceRoom}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鏍囬锛�" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@{bean.title}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鐢宠浜猴細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@{bean.applyPerson}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="瀹℃壒浜猴細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.ratifyPerson}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + + + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鐘舵�侊細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.status}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="15dp" + > + + </LinearLayout> + <LinearLayout + tools:visibility="visible" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_marginBottom="@dimen/dp_12" + android:visibility="gone" + > + </LinearLayout> + + </LinearLayout> + </LinearLayout> + + </androidx.cardview.widget.CardView> + + </LinearLayout> + +</layout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_webback.xml b/app/src/main/res/layout/item_webback.xml new file mode 100644 index 0000000..0f7adf3 --- /dev/null +++ b/app/src/main/res/layout/item_webback.xml @@ -0,0 +1,344 @@ +<?xml version="1.0" encoding="utf-8"?> +<layout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> + + <data> + <variable + name="bean" + type="com.application.zhangshi_app_android.bean.WebbackBean" /> + </data> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + > + <androidx.cardview.widget.CardView + android:id="@+id/cardView" + android:layout_width="match_parent" + android:layout_height="40dp" + android:layout_margin="@dimen/dp_2" + app:cardCornerRadius="@dimen/dp_10" + app:cardBackgroundColor="?attr/cardBackgroundColorFirst" + tools:layout_height="wrap_content" + > + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + > + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/layout_title" + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center_vertical" + > + <CheckBox + android:id="@+id/checkbox" + android:layout_width="18dp" + android:layout_height="18dp" + android:layout_marginStart="3dp" + android:layout_centerVertical="true" + android:button="?attr/checkboxSelector" + android:background="?selectableItemBackgroundBorderless" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + /> + <ImageView + android:id="@+id/iv_flower" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="3dp" + android:layout_centerVertical="true" + android:background="?attr/icIsOwnFamilyDataFlower" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + /> + + <TextView + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:ellipsize="end" + android:maxLines="1" + android:text="@{bean.title}" + android:textColor="@color/black" + android:textSize="16sp" + android:layout_marginStart="24dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintWidth_percent="0.5" + tools:text="寮犳皬App绔嬮」" /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="16sp" + android:textColor="@color/black" + android:text="@{bean.startTime}" + android:layout_alignParentEnd="true" + android:layout_centerVertical="true" + tools:text="2023-05-16" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintEnd_toStartOf="@id/iv_fold" + android:layout_marginEnd="10dp" + /> + <ImageView + android:id="@+id/iv_fold" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/ic_fold" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginEnd="10dp" + /> + + </androidx.constraintlayout.widget.ConstraintLayout> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingHorizontal="@dimen/dp_24" + > + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鐩存挱鏍囬锛�" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.title}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鐢宠浜猴細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.applyPerson}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鑱旂郴浜猴細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.contactPerson}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鑱旂郴鐢佃瘽锛�" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@{bean.contactPhone}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="寮�濮嬫椂闂达細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.startTime}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="缁撴潫鏃堕棿锛�" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.endTime}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + + + + + + + + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginBottom="6dp" + android:text="鐩存挱锛�" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="15dp" + > + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/rv_image" + android:layout_width="match_parent" + android:layout_height="wrap_content" + tools:listitem="@layout/item_electronic_file" + tools:itemCount="3" + /> + + </LinearLayout> +<!-- <LinearLayout--> +<!-- tools:visibility="visible"--> +<!-- android:layout_width="wrap_content"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:layout_gravity="center"--> +<!-- android:layout_marginBottom="@dimen/dp_12"--> +<!-- android:visibility="gone"--> +<!-- >--> +<!-- <LinearLayout--> +<!-- android:id="@+id/layout_modify"--> +<!-- android:layout_width="wrap_content"--> +<!-- android:layout_height="wrap_content"--> +<!-- >--> +<!-- <ImageView--> +<!-- android:layout_width="wrap_content"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:background="@drawable/ic_modify"--> +<!-- android:layout_gravity="center"--> +<!-- />--> +<!-- <TextView--> +<!-- android:layout_width="wrap_content"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:text="淇敼"--> +<!-- android:textColor="@color/black"--> +<!-- android:textSize="@dimen/sp_14"--> + +<!-- android:layout_marginStart="@dimen/dp_4"--> +<!-- />--> +<!-- </LinearLayout>--> +<!-- <LinearLayout--> +<!-- android:id="@+id/layout_delete"--> +<!-- android:layout_width="wrap_content"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:layout_marginStart="@dimen/dp_52"--> +<!-- >--> +<!-- <ImageView--> +<!-- android:layout_width="wrap_content"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:background="@drawable/ic_delete"--> +<!-- android:layout_gravity="center"--> +<!-- />--> +<!-- <TextView--> +<!-- android:layout_width="wrap_content"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:text="鍒犻櫎"--> +<!-- android:textColor="#FFE86F72"--> +<!-- android:textSize="@dimen/sp_14"--> + +<!-- android:layout_marginStart="@dimen/dp_4"--> +<!-- />--> +<!-- </LinearLayout>--> +<!-- </LinearLayout>--> + + </LinearLayout> + </LinearLayout> + + </androidx.cardview.widget.CardView> + + </LinearLayout> + +</layout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_webcast.xml b/app/src/main/res/layout/item_webcast.xml new file mode 100644 index 0000000..d2da9b5 --- /dev/null +++ b/app/src/main/res/layout/item_webcast.xml @@ -0,0 +1,344 @@ +<?xml version="1.0" encoding="utf-8"?> +<layout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> + + <data> + <variable + name="bean" + type="com.application.zhangshi_app_android.bean.WebcastBean" /> + </data> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + > + <androidx.cardview.widget.CardView + android:id="@+id/cardView" + android:layout_width="match_parent" + android:layout_height="40dp" + android:layout_margin="@dimen/dp_2" + app:cardCornerRadius="@dimen/dp_10" + app:cardBackgroundColor="?attr/cardBackgroundColorFirst" + tools:layout_height="wrap_content" + > + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + > + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/layout_title" + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center_vertical" + > + <CheckBox + android:id="@+id/checkbox" + android:layout_width="18dp" + android:layout_height="18dp" + android:layout_marginStart="3dp" + android:layout_centerVertical="true" + android:button="?attr/checkboxSelector" + android:background="?selectableItemBackgroundBorderless" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + /> + <ImageView + android:id="@+id/iv_flower" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="3dp" + android:layout_centerVertical="true" + android:background="?attr/icIsOwnFamilyDataFlower" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + /> + + <TextView + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:ellipsize="end" + android:maxLines="1" + android:text="@{bean.title}" + android:textColor="@color/black" + android:textSize="16sp" + android:layout_marginStart="24dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintWidth_percent="0.5" + tools:text="寮犳皬App绔嬮」" /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="16sp" + android:textColor="@color/black" + android:text="@{bean.startTime}" + android:layout_alignParentEnd="true" + android:layout_centerVertical="true" + tools:text="2023-05-16" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintEnd_toStartOf="@id/iv_fold" + android:layout_marginEnd="10dp" + /> + <ImageView + android:id="@+id/iv_fold" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/ic_fold" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginEnd="10dp" + /> + + </androidx.constraintlayout.widget.ConstraintLayout> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingHorizontal="@dimen/dp_24" + > + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鐩存挱鏍囬锛�" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.title}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鐢宠浜猴細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.applyPerson}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鑱旂郴浜猴細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.contactPerson}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鑱旂郴鐢佃瘽锛�" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@{bean.contactPhone}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="寮�濮嬫椂闂达細" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.startTime}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="6dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="缁撴潫鏃堕棿锛�" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@={bean.endTime}" + android:textColor="@color/black" + android:textSize="12sp" + + /> + </LinearLayout> + + + + + + + + + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginBottom="6dp" + android:text="鐩存挱锛�" + android:textColor="@color/black" + android:textSize="12sp" + + /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginBottom="15dp" + > + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/rv_image" + android:layout_width="match_parent" + android:layout_height="wrap_content" + tools:listitem="@layout/item_electronic_file" + tools:itemCount="3" + /> + + </LinearLayout> +<!-- <LinearLayout--> +<!-- tools:visibility="visible"--> +<!-- android:layout_width="wrap_content"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:layout_gravity="center"--> +<!-- android:layout_marginBottom="@dimen/dp_12"--> +<!-- android:visibility="gone"--> +<!-- >--> +<!-- <LinearLayout--> +<!-- android:id="@+id/layout_modify"--> +<!-- android:layout_width="wrap_content"--> +<!-- android:layout_height="wrap_content"--> +<!-- >--> +<!-- <ImageView--> +<!-- android:layout_width="wrap_content"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:background="@drawable/ic_modify"--> +<!-- android:layout_gravity="center"--> +<!-- />--> +<!-- <TextView--> +<!-- android:layout_width="wrap_content"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:text="淇敼"--> +<!-- android:textColor="@color/black"--> +<!-- android:textSize="@dimen/sp_14"--> + +<!-- android:layout_marginStart="@dimen/dp_4"--> +<!-- />--> +<!-- </LinearLayout>--> +<!-- <LinearLayout--> +<!-- android:id="@+id/layout_delete"--> +<!-- android:layout_width="wrap_content"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:layout_marginStart="@dimen/dp_52"--> +<!-- >--> +<!-- <ImageView--> +<!-- android:layout_width="wrap_content"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:background="@drawable/ic_delete"--> +<!-- android:layout_gravity="center"--> +<!-- />--> +<!-- <TextView--> +<!-- android:layout_width="wrap_content"--> +<!-- android:layout_height="wrap_content"--> +<!-- android:text="鍒犻櫎"--> +<!-- android:textColor="#FFE86F72"--> +<!-- android:textSize="@dimen/sp_14"--> + +<!-- android:layout_marginStart="@dimen/dp_4"--> +<!-- />--> +<!-- </LinearLayout>--> +<!-- </LinearLayout>--> + + </LinearLayout> + </LinearLayout> + + </androidx.cardview.widget.CardView> + + </LinearLayout> + +</layout> \ No newline at end of file diff --git a/app/src/main/res/layout/layout_drawer.xml b/app/src/main/res/layout/layout_drawer.xml index f61c45c..91ed9e5 100644 --- a/app/src/main/res/layout/layout_drawer.xml +++ b/app/src/main/res/layout/layout_drawer.xml @@ -39,6 +39,7 @@ android:layout_marginStart="16dp" /> </LinearLayout> + <!--CardView鍗$墖甯冨眬 鐢ㄤ簬鏄剧ず闃村奖鍜屽渾瑙掓晥鏋滅殑UI 缁ф壙鑷狥rameLayout甯у竷灞� --> <androidx.cardview.widget.CardView android:layout_width="match_parent" android:layout_height="wrap_content" @@ -46,6 +47,7 @@ app:cardCornerRadius="10dp" app:cardElevation="0dp" > + <!--cardElevation璁剧疆Z杞撮珮搴︼紝琛ㄧ幇鍑虹珛浣撶殑闃村奖鏁堟灉锛屼粠鑰屽寮鸿瑙夊眰绾у拰绌洪棿鎰熺煡--> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" @@ -61,17 +63,22 @@ android:layout_marginStart="14dp" android:layout_marginBottom="8dp" /> + <!--View 涓�鏉℃í绾�--> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="#FFF3F3F3" /> + <!--paddingHorizontal姘村钩鏂瑰悜濉厖锛岀浉褰撲簬鏁翠綋宸﹀彸绉伙紝鏈夋璐� + marginVertical 杈圭紭鍨傜洿锛岀浉褰撲簬鏁翠綋涓婁笅绉诲姩 + --> <LinearLayout android:id="@+id/dl_home_root_net" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:paddingHorizontal="15dp" + android:layout_marginVertical="3dp" android:gravity="center" > @@ -80,6 +87,7 @@ android:layout_height="10dp" android:background="?attr/icFunctionFamilyRootNet" /> + <!--marginStart杈圭紭璺濈宸﹁竟鐨勮窛绂�--> <TextView android:layout_width="0dp" android:layout_height="wrap_content" @@ -361,6 +369,136 @@ </androidx.cardview.widget.CardView> + + <androidx.cardview.widget.CardView + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:cardBackgroundColor="@color/white" + app:cardCornerRadius="10dp" + app:cardElevation="0dp" + android:layout_marginTop="30dp" + android:layout_marginBottom="10dp" + > + <!--cardElevation璁剧疆Z杞撮珮搴︼紝琛ㄧ幇鍑虹珛浣撶殑闃村奖鏁堟灉锛屼粠鑰屽寮鸿瑙夊眰绾у拰绌洪棿鎰熺煡--> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + android:paddingVertical="8dp" + > + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="浼氳鏉垮潡" + android:textColor="@color/black" + android:textSize="12sp" + android:layout_marginStart="14dp" + android:layout_marginBottom="8dp" + /> + <!--View 涓�鏉℃í绾�--> + <View + android:layout_width="match_parent" + android:layout_height="1dp" + android:background="#FFF3F3F3" + /> + <!--paddingHorizontal姘村钩鏂瑰悜濉厖锛岀浉褰撲簬鏁翠綋宸﹀彸绉伙紝鏈夋璐� + marginVertical 杈圭紭鍨傜洿锛岀浉褰撲簬鏁翠綋涓婁笅绉诲姩 + --> + <LinearLayout + android:id="@+id/dl_family_meeting" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_weight="1" + android:paddingHorizontal="15dp" + android:layout_marginVertical="3dp" + android:gravity="center" + > + <ImageView + android:layout_width="13dp" + android:layout_height="10dp" + android:background="@drawable/ic_function_meeting" + /> + <TextView + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="浼氳鐢宠" + android:textColor="@color/black" + android:textSize="14sp" + android:layout_marginStart="15dp" + /> + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/ic_vector_gray" + /> + </LinearLayout> + <LinearLayout + android:id="@+id/dl_family_webcast" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_weight="1" + android:paddingHorizontal="15dp" + android:layout_marginVertical="3dp" + android:gravity="center" + > + <ImageView + android:layout_width="13dp" + android:layout_height="15dp" + android:background="@drawable/ic_function_webcast" + /> + <TextView + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="瀹跺涵鐩存挱" + android:textColor="@color/black" + android:textSize="14sp" + android:layout_marginStart="15dp" + /> + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/ic_vector_gray" + /> + </LinearLayout> + + <LinearLayout + android:id="@+id/dl_back" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_weight="1" + android:paddingHorizontal="15dp" + android:layout_marginVertical="3dp" + android:gravity="center" + > + <ImageView + android:layout_width="13dp" + android:layout_height="15dp" + android:background="@drawable/ic_fuction_back" + /> + <TextView + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="鐩存挱鍥炴斁" + android:textColor="@color/black" + android:textSize="14sp" + android:layout_marginStart="15dp" + /> + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@drawable/ic_vector_gray" + /> + </LinearLayout> + + </LinearLayout> + + + </androidx.cardview.widget.CardView> + + <androidx.cardview.widget.CardView android:layout_width="match_parent" android:layout_height="wrap_content" diff --git a/app/src/main/res/layout/pop_operate_approve.xml b/app/src/main/res/layout/pop_operate_approve.xml new file mode 100644 index 0000000..f7e5265 --- /dev/null +++ b/app/src/main/res/layout/pop_operate_approve.xml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:orientation="vertical" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + app:cardBackgroundColor="?attr/popupWindowBackgroundColor" + app:cardCornerRadius="10dp" + app:cardElevation="0dp" + > + <LinearLayout + android:layout_width="85dp" + android:layout_height="63dp" + android:orientation="vertical" + android:gravity="center_horizontal" + > + + <TextView + android:id="@+id/tv_agreed" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:drawablePadding="5dp" + android:gravity="center" + android:text="鍚屾剰" + android:textColor="#FF333333" + android:textSize="12sp" + app:drawableStartCompat="@drawable/ic_modify" + /> + + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" + /> + <TextView + android:id="@+id/tv_disagree" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鎷掔粷" + android:gravity="center" + android:textColor="#FFE86F72" + android:textSize="12sp" + app:drawableStartCompat="@drawable/ic_modify" + android:drawablePadding="5dp" + android:layout_weight="1" + /> + + </LinearLayout> + +</androidx.cardview.widget.CardView> \ No newline at end of file diff --git a/app/src/main/res/layout/pop_operate_read.xml b/app/src/main/res/layout/pop_operate_read.xml new file mode 100644 index 0000000..eb28c31 --- /dev/null +++ b/app/src/main/res/layout/pop_operate_read.xml @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:orientation="vertical" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + app:cardBackgroundColor="?attr/popupWindowBackgroundColor" + app:cardCornerRadius="10dp" + app:cardElevation="0dp" + > + <LinearLayout + android:layout_width="85dp" + android:layout_height="wrap_content" + android:orientation="vertical" + android:gravity="center_horizontal" + > + + <TextView + android:id="@+id/tv_from_new_to_old" + android:layout_width="wrap_content" + android:layout_height="32dp" + android:text="鐢辨柊鍒版棫" + android:gravity="center" + android:textColor="#FF333333" + android:textSize="12sp" + app:drawableStartCompat="@drawable/ic_operate_order" + android:drawablePadding="3dp" + /> + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" + /> + <TextView + android:id="@+id/tv_from_old_to_new" + android:layout_width="wrap_content" + android:layout_height="32dp" + android:text="鐢辨棫鍒版柊" + android:gravity="center" + android:textColor="#FF333333" + android:textSize="12sp" + app:drawableStartCompat="@drawable/ic_operate_order" + android:drawablePadding="3dp" + /> + <LinearLayout + android:id="@+id/layout_own_top" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:gravity="center_horizontal" + > + <View + android:layout_width="match_parent" + android:layout_height="0.3dp" + android:background="#FF939393" + /> + <TextView + android:id="@+id/tv_own_top" + android:layout_width="wrap_content" + android:layout_height="32dp" + android:text="鏈缃《" + android:gravity="center" + android:textColor="#FF333333" + android:textSize="12sp" + app:drawableStartCompat="@drawable/ic_operate_order" + android:drawablePadding="3dp" + /> + </LinearLayout> + + </LinearLayout> + +</androidx.cardview.widget.CardView> \ No newline at end of file diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 65984bf..bf528ae 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -10,6 +10,7 @@ <attr name="menuIconTree" format="reference" /> <attr name="menuIconUser" format="reference" /> + <attr name="icFunctionFamilyRootNet" format="reference" /> <attr name="icFunctionNotes" format="reference" /> <attr name="icFunctionAsset" format="reference" /> @@ -21,6 +22,7 @@ <attr name="icFunctionIncomeExpense" format="reference" /> <attr name="icFunctionHomeDevices" format="reference" /> <attr name="icFunctionGrowth" format="reference" /> + <attr name="icFunctionMeeting" format="reference" /> <attr name="icFunctionMarriage" format="reference" /> <attr name="icFunctionProperty" format="reference" /> <attr name="icFunctionWish" format="reference" /> diff --git a/app/src/main/res/values/refs.xml b/app/src/main/res/values/refs.xml new file mode 100644 index 0000000..a6b3dae --- /dev/null +++ b/app/src/main/res/values/refs.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources></resources> \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index edb0971..4cff262 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -76,6 +76,9 @@ <item name="icFunctionHealth">@drawable/ic_function_health</item> <item name="icFunctionCertificate">@drawable/ic_function_certificate</item> <item name="icFunctionPrivacy">@drawable/ic_function_privacy</item> + <item name="icFunctionMeeting">@drawable/ic_function_meeting</item> + + <!-- 鏁版嵁鍒楄〃 鍗$墖鑳屾櫙鑹� --> <item name="cardBackgroundColorFirst">@color/color_card_pink</item> diff --git a/app_base/src/main/java/com/android/app_base/base/viewmodel/BaseViewModel.java b/app_base/src/main/java/com/android/app_base/base/viewmodel/BaseViewModel.java index 0acb457..5e94951 100644 --- a/app_base/src/main/java/com/android/app_base/base/viewmodel/BaseViewModel.java +++ b/app_base/src/main/java/com/android/app_base/base/viewmodel/BaseViewModel.java @@ -1,6 +1,7 @@ package com.android.app_base.base.viewmodel; import android.app.Application; +import android.os.Bundle; import androidx.annotation.NonNull; import androidx.lifecycle.AndroidViewModel; @@ -11,9 +12,6 @@ import com.android.app_base.base.StateViewEnum; import com.android.app_base.base.model.BaseModel; - - -import org.reactivestreams.Subscriber; import io.reactivex.disposables.CompositeDisposable; import io.reactivex.disposables.Disposable; @@ -126,4 +124,7 @@ public void onDestroy(@NonNull LifecycleOwner owner) { DefaultLifecycleObserver.super.onDestroy(owner); } + + protected void onCreate(Bundle savedInstanceState) { + } } diff --git a/app_base/src/main/java/com/android/app_base/utils/DateTimeConverter.java b/app_base/src/main/java/com/android/app_base/utils/DateTimeConverter.java new file mode 100644 index 0000000..ea6e1e8 --- /dev/null +++ b/app_base/src/main/java/com/android/app_base/utils/DateTimeConverter.java @@ -0,0 +1,68 @@ +package com.android.app_base.utils; + +/** + * Created by guoshen on 2024/6/29 + */ + +import androidx.databinding.InverseMethod; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; + +public class DateTimeConverter { + + // 鏃ユ湡鏃堕棿鏍煎紡鍖栨ā鏉� + private static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; + // 鏃ユ湡鏍煎紡鍖栨ā鏉� + private static final String DATE_FORMAT = "yyyy-MM-dd"; + // 鏃堕棿鏍煎紡鍖栨ā鏉� + private static final String TIME_FORMAT = "HH:mm:ss"; + + // 灏嗗畬鏁寸殑鏃ユ湡鏃堕棿瀛楃涓茶浆鎹负鏃ユ湡閮ㄥ垎锛坹yyy-MM-dd锛� + public static String dateFromString(String dateTime) { + if (dateTime == null || dateTime.isEmpty()) { + return ""; + } + SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_TIME_FORMAT, Locale.getDefault()); + try { + Date date = dateFormat.parse(dateTime); + SimpleDateFormat dateFormatter = new SimpleDateFormat(DATE_FORMAT, Locale.getDefault()); + return dateFormatter.format(date); + } catch (ParseException e) { + e.printStackTrace(); + return ""; + } + } + + // 灏嗗畬鏁寸殑鏃ユ湡鏃堕棿瀛楃涓茶浆鎹负鏃堕棿閮ㄥ垎锛圚H:mm:ss锛� + public static String timeFromString(String dateTime) { + if (dateTime == null || dateTime.isEmpty()) { + return ""; + } + SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_TIME_FORMAT, Locale.getDefault()); + try { + Date date = dateFormat.parse(dateTime); + SimpleDateFormat timeFormatter = new SimpleDateFormat(TIME_FORMAT, Locale.getDefault()); + return timeFormatter.format(date); + } catch (ParseException e) { + e.printStackTrace(); + return ""; + } + } + + // 鍙嶅悜杞崲锛氫粠鏃ユ湡鍜屾椂闂撮儴鍒嗙敓鎴愬畬鏁寸殑鏃ユ湡鏃堕棿瀛楃涓� + @InverseMethod("dateFromString") + public static String stringFromDate(String date) { + // Not needed for this case + return null; + } + + @InverseMethod("timeFromString") + public static String stringFromTime(String time) { + // Not needed for this case + return null; + } +} + -- Gitblit v1.9.1