Linjiajia
2023-04-24 fcdddf8b9b34f9930bec454b5fffe41c0e33ba3c
功能模块大部分
45个文件已修改
96个文件已添加
2 文件已重命名
13651 ■■■■■ 已修改文件
.idea/deploymentTargetDropDown.xml 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/AndroidManifest.xml 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/adapter/CertificateOfHonorRvAdapter.java 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/adapter/CleanStorageRvAdapter.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyAssetsRvAdapter.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyMemorabiliaRvAdapter.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/adapter/HomeDevicesRvAdapter.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/adapter/HomeMemberAdapter.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/adapter/HonorCollectionRvAdapter.java 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/adapter/HundredWishRvAdapter.java 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/adapter/ImageRvAdapter.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/adapter/IncomeAndExpensesRvAdapter.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/adapter/LittleDoctorRvAdapter.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/adapter/PetRvAdapter.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/adapter/PropertyRvAdapter.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/bean/CertificateOfHonorBean.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/bean/CleanStorageBean.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/bean/HomeDevicesBean.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/bean/HomeMemberBean.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/bean/HonorCollectionBean.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/bean/HonorCollectionRequestBean.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/bean/HonorCollectionResponseBean.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/bean/HundredWishBean.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/bean/IncomeAndExpensesBean.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/bean/IncomeAndExpensesResponseBean.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/bean/LittleDoctorBean.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/bean/LittleDoctorRequestBean.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/bean/LittleDoctorResponseBean.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/bean/PetBean.java 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/bean/PropertyBean.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/data/DataRepository.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/data/source/HttpDataSource.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/data/source/http/ApiService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/data/source/http/HttpDataSourceImpl.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseActivity.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/CertificateOfHonorActivity.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/CertificateOfHonorActivityViewModel.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/CertificateOfHonorDetailActivity.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/CertificateOfHonorDetailActivityViewModel.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/CleanStorageActivity.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/CleanStorageActivityViewModel.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/CleanStorageDetailActivity.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/CleanStorageDetailActivityViewModel.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivity.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsActivity.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivity.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivityViewModel.java 86 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/FunctionFragment.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesActivity.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesActivityViewModel.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/HonorCollectionActivity.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/HonorCollectionActivityViewModel.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/HonorCollectionDetailActivity.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/HonorCollectionDetailActivityViewModel.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/HundredWishActivity.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/HundredWishActivityViewModel.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/HundredWishDetailActivity.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/HundredWishDetailActivityViewModel.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/IncomeAndExpensesActivity.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/IncomeAndExpensesActivityViewModel.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/IncomeAndExpensesDetailActivity.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/IncomeAndExpensesDetailActivityViewModel.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/LittleDoctorActivity.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/LittleDoctorActivityViewModel.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/LittleDoctorDetailActivity.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/LittleDoctorDetailActivityViewModel.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/MarriageActivity.java 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/MarriageActivityViewModel.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/PetActivity.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/PetActivityViewModel.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/PropertyActivity.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/PropertyActivityViewModel.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/PropertyDetailActivity.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/PropertyDetailActivityViewModel.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/home/HomeFragment.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/main/MainActivity.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/widget/TreeView.java 395 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/bg_home_root_net.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/bg_home_root_net_detail.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/bg_home_root_net_grass.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/ic_fold.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/ic_radio_button.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/ic_unfold.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/bg_home_root_net.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/bg_home_root_net_detail.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/bg_home_root_net_grass.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/ic_fold.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/ic_radio_button.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/ic_unfold.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/shape_ffd8e6f5_10_10_0_10.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/shape_fffad1e0_10_10_0_10.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_certificate_of_honor.xml 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_certificate_of_honor_detail.xml 225 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_clean_storage.xml 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_clean_storage_detail.xml 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_family_assets.xml 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_family_assets_detail.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_family_memorabilia.xml 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_home_devices.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_home_devices_detail.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_honor_collection.xml 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_honor_collection_detail.xml 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_hundred_wish.xml 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_hundred_wish_detail.xml 208 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_income_and_expenses.xml 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_income_and_expenses_detail.xml 208 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_little_doctor.xml 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_little_doctor_detail.xml 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_marriage.xml 1050 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_pet.xml 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_property.xml 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_property_detail.xml 225 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_home.xml 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_certificate_of_honor.xml 268 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_clean_storage.xml 235 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_family_assets.xml 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_family_memorabilia.xml 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_home_devices.xml 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_home_member_list.xml 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_honor_collection.xml 236 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_hundred_wish.xml 245 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_image_footer.xml 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_income_and_expenses.xml 257 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_little_doctor.xml 264 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_pet.xml 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_property.xml 283 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/layout_tree_view.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/pop_basic_information.xml 1546 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/build.gradle 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/java/com/android/app_base/base/StateViewEnum.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/java/com/android/app_base/base/adapter/BaseRVAdapter.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/java/com/android/app_base/base/view/BaseActivity.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/java/com/android/app_base/http/OkHttpHelper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/java/com/android/app_base/http/interceptor/AuthInterceptor.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/java/com/android/app_base/http/interceptor/LogInterceptor.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/java/com/android/app_base/utils/GlideUtil.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/java/com/android/app_base/widget/ExtendTitleBar.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/res/anim/pop_drop_hide.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/res/anim/pop_drop_show.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/res/anim/pop_operate_hide.xml 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/res/anim/pop_operate_show.xml 补丁 | 查看 | 原始文档 | blame | 历史
app_base/src/main/res/values/styles.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
gradle.properties 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/deploymentTargetDropDown.xml
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
    <component name="deploymentTargetDropDown">
        <runningDeviceTargetSelectedWithDropDown>
            <Target>
                <type value="RUNNING_DEVICE_TARGET" />
                <deviceKey>
                    <Key>
                        <type value="VIRTUAL_DEVICE_PATH" />
                        <value value="D:\software\Android\.android\avd\Pixel_API_30.avd" />
                    </Key>
                </deviceKey>
            </Target>
        </runningDeviceTargetSelectedWithDropDown>
        <timeTargetWasSelectedWithDropDown value="2023-04-03T09:11:44.626235900Z" />
    </component>
  <component name="deploymentTargetDropDown">
    <targetSelectedWithDropDown>
      <Target>
        <type value="QUICK_BOOT_TARGET" />
        <deviceKey>
          <Key>
            <type value="VIRTUAL_DEVICE_PATH" />
            <value value="D:\software\Android\.android\avd\Pixel_API_30.avd" />
          </Key>
        </deviceKey>
      </Target>
    </targetSelectedWithDropDown>
    <timeTargetWasSelectedWithDropDown value="2023-04-18T13:54:47.432784600Z" />
  </component>
</project>
app/src/main/AndroidManifest.xml
@@ -1,55 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <!-- 网络相关 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <!-- 外部存储 -->
    <!-- Android 13开始,如果你的应用targetSdk指定到了33或以上,READ_EXTERNAL_STORAGE权限就完全失去了作用,需要细化-->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
    <uses-permission android:name="android.permission.READ_CONTACTS" /> <!-- 外部存储 -->
    <!-- Android 13开始,如果你的应用targetSdk指定到了33或以上,READ_EXTERNAL_STORAGE权限就完全失去了作用,需要细化 -->
    <uses-permission
        android:name="android.permission.READ_EXTERNAL_STORAGE"
        android:maxSdkVersion="32" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <!--Android 13版本适配,细化存储权限,READ_EXTERNAL_STORAGE无法再使用-->
    <uses-permission android:name="android.permission.RECORD_AUDIO" /> <!-- Android 13版本适配,细化存储权限,READ_EXTERNAL_STORAGE无法再使用 -->
    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
    <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
    <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
    <!-- 震动权限 -->
    <uses-permission android:name="android.permission.VIBRATE" />
    <!-- 蓝牙权限 -->
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <!-- 拍照权限 -->
    <uses-permission android:name="android.permission.CAMERA" />
    <!-- 安装权限 -->
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
    <!-- 定位权限(用于 WebView 定位)-->
    <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /> <!-- 震动权限 -->
    <uses-permission android:name="android.permission.VIBRATE" /> <!-- 蓝牙权限 -->
    <uses-permission android:name="android.permission.BLUETOOTH" /> <!-- 拍照权限 -->
    <uses-permission android:name="android.permission.CAMERA" /> <!-- 安装权限 -->
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <!-- 定位权限(用于 WebView 定位) -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <queries package="${applicationId}">
        <intent>
            <action android:name="android.media.action.IMAGE_CAPTURE">
            </action>
            <action android:name="android.media.action.IMAGE_CAPTURE" />
        </intent>
        <intent>
            <action android:name="android.media.action.ACTION_VIDEO_CAPTURE">
            </action>
            <action android:name="android.media.action.ACTION_VIDEO_CAPTURE" />
        </intent>
    </queries>
@@ -76,24 +57,21 @@
            android:value="true" /> <!-- 适配小米(xiaomi)刘海屏 -->
        <meta-data
            android:name="notch.config"
            android:value="portrait|landscape" />
        <!-- 屏幕适配 (默认以宽度适配)-->
            android:value="portrait|landscape" /> <!-- 屏幕适配 (默认以宽度适配) -->
        <meta-data
            android:name="design_width_in_dp"
            android:value="360"/>
            android:value="360" />
        <meta-data
            android:name="design_height_in_dp"
            android:value="640"/>
            android:value="640" />
        <activity
            android:name=".ui.main.MainActivity"
            android:exported="true">
        </activity>
            android:exported="true" />
        <activity
            android:name=".ui.login.LoginActivity"
            android:exported="true"
            android:screenOrientation="portrait"
            >
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
@@ -121,6 +99,52 @@
        <activity
            android:name=".ui.function.GrowthExperienceActivity"
            android:exported="false" />
        <activity
            android:name=".ui.function.HonorCollectionDetailActivity"
            android:exported="false" />
        <activity
            android:name=".ui.function.HonorCollectionActivity"
            android:exported="false" />
        <activity
            android:name=".ui.function.LittleDoctorDetailActivity"
            android:exported="false" />
        <activity
            android:name=".ui.function.LittleDoctorActivity"
            android:exported="false" />
        <activity
            android:name=".ui.function.CleanStorageActivity"
            android:exported="false" />
        <activity
            android:name=".ui.function.CleanStorageDetailActivity"
            android:exported="false" />
        <activity
            android:name=".ui.function.IncomeAndExpensesActivity"
            android:exported="false" />
        <activity
            android:name=".ui.function.IncomeAndExpensesDetailActivity"
            android:exported="false" />
        <activity
            android:name=".ui.function.PropertyActivity"
            android:exported="false" />
        <activity
            android:name=".ui.function.PropertyDetailActivity"
            android:exported="false" />
        <activity
            android:name=".ui.function.HundredWishActivity"
            android:exported="false" />
        <activity
            android:name=".ui.function.HundredWishDetailActivity"
            android:exported="false" />
        <activity
            android:name=".ui.function.CertificateOfHonorActivity"
            android:exported="false" />
        <activity
            android:name=".ui.function.CertificateOfHonorDetailActivity"
            android:exported="false" />
        <activity
            android:name=".ui.function.MarriageActivity"
            android:exported="false" />
    </application>
</manifest>
app/src/main/java/com/application/zhangshi_app_android/adapter/CertificateOfHonorRvAdapter.java
New file
@@ -0,0 +1,132 @@
package com.application.zhangshi_app_android.adapter;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Transformation;
import android.widget.FrameLayout;
import androidx.recyclerview.widget.GridLayoutManager;
import com.android.app_base.base.adapter.BaseRVAdapter;
import com.android.app_base.manager.AppManager;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.bean.CertificateOfHonorBean;
import com.application.zhangshi_app_android.databinding.ItemCertificateOfHonorBinding;
import com.application.zhangshi_app_android.ui.function.CertificateOfHonorDetailActivity;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
 * @author Ljj
 * @date 2023.04.23. 22:33
 * @desc 荣誉证书 Adapter
 */
public class CertificateOfHonorRvAdapter extends BaseRVAdapter<CertificateOfHonorBean, ItemCertificateOfHonorBinding, CertificateOfHonorRvAdapter.ViewHolder> {
    public CertificateOfHonorRvAdapter(Context context) {
        super(context);
    }
    @Override
    protected int getLayoutId() {
        return R.layout.item_certificate_of_honor;
    }
    @Override
    protected ViewHolder getViewHolder(ItemCertificateOfHonorBinding itemBind, int viewType) {
        return new ViewHolder(itemBind);
    }
    @Override
    protected void onBind(ViewHolder holder, int position) {
        holder.getBinding().setBean(mDataList.get(position));
        if (position % 2 != 0){
            holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_blue));
        }else {
            holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_pink));
        }
        holder.getBinding().layoutTitle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (holder.isExpended){
                    int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
                    int collapsedHeight = holder.getBinding().layoutTitle.getMeasuredHeight();
                    int distanceToCollapse = (int) (initialHeight - collapsedHeight);
                    Animation a = new Animation() {
                        @Override
                        protected void applyTransformation(float interpolatedTime, Transformation t) {
                            if (interpolatedTime == 1){
                            }
                            holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight - (distanceToCollapse * interpolatedTime));
                            holder.getBinding().cardView.requestLayout();
                        }
                        @Override
                        public boolean willChangeBounds() {
                            return true;
                        }
                    };
                    a.setDuration(500);
                    holder.getBinding().cardView.startAnimation(a);
                    holder.isExpended = false;
                }else{
                    final int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
                    holder.getBinding().cardView.measure(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
                    int targetHeight = holder.getBinding().cardView.getMeasuredHeight();
                    int distanceToExpand = targetHeight - initialHeight;
                    Animation a = new Animation() {
                        @Override
                        protected void applyTransformation(float interpolatedTime, Transformation t) {
                            if (interpolatedTime == 1){
                            }
                            holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight + (distanceToExpand * interpolatedTime));
                            holder.getBinding().cardView.requestLayout();
                        }
                        @Override
                        public boolean willChangeBounds() {
                            return true;
                        }
                    };
                    a.setDuration(500);
                    holder.getBinding().cardView.startAnimation(a);
                    holder.isExpended = true;
                }
            }
        });
        holder.getBinding().layoutContent.setOnClickListener(v -> {
            AppManager.getAppManager().startActivity(
                    new Intent(getRecyclerView().getContext(), CertificateOfHonorDetailActivity.class)
                            .putExtra("bean",mDataList.get(position)));
        });
        ImageRvAdapter adapter = new ImageRvAdapter(mContext);
        holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3));
        holder.getBinding().rvImage.setAdapter(adapter);
        String url = mDataList.get(position).getUrl();
        if (url == null||url.isEmpty()){
            return;
        }
        List<String> list;
        if (url.contains(",")){
            String[] split = url.split(",");
            list = new ArrayList<>(Arrays.asList(split));
        }else {
            list = new ArrayList<>();
            list.add(url);
        }
        adapter.setData(list);
    }
    public static class ViewHolder extends BaseRVAdapter.BaseViewHolder<ItemCertificateOfHonorBinding> {
        private boolean isExpended;
        public ViewHolder(ItemCertificateOfHonorBinding binding) {
            super(binding);
        }
    }
}
app/src/main/java/com/application/zhangshi_app_android/adapter/CleanStorageRvAdapter.java
New file
@@ -0,0 +1,135 @@
package com.application.zhangshi_app_android.adapter;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Transformation;
import android.widget.FrameLayout;
import androidx.recyclerview.widget.GridLayoutManager;
import com.android.app_base.base.adapter.BaseRVAdapter;
import com.android.app_base.manager.AppManager;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.bean.CleanStorageBean;
import com.application.zhangshi_app_android.databinding.ItemCleanStorageBinding;
import com.application.zhangshi_app_android.databinding.ItemFamilyAssetsBinding;
import com.application.zhangshi_app_android.ui.function.CleanStorageActivity;
import com.application.zhangshi_app_android.ui.function.CleanStorageDetailActivity;
import com.application.zhangshi_app_android.ui.function.FamilyAssetsDetailActivity;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
 * @author Ljj
 * @date 2023.04.16. 19:12
 * @desc
 */
public class CleanStorageRvAdapter extends BaseRVAdapter<CleanStorageBean, ItemCleanStorageBinding, CleanStorageRvAdapter.ViewHolder>{
    public CleanStorageRvAdapter(Context context) {
        super(context);
    }
    @Override
    protected int getLayoutId() {
        return R.layout.item_clean_storage;
    }
    @Override
    protected ViewHolder getViewHolder(ItemCleanStorageBinding itemBind, int viewType) {
        return new ViewHolder(itemBind);
    }
    @Override
    protected void onBind(ViewHolder holder, int position) {
        holder.getBinding().setBean(mDataList.get(position));
        if (position % 2 != 0){
            holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_blue));
        }else {
            holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_pink));
        }
        holder.getBinding().layoutTitle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (holder.isExpended){
                    int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
                    int collapsedHeight = holder.getBinding().layoutTitle.getMeasuredHeight();
                    int distanceToCollapse = (int) (initialHeight - collapsedHeight);
                    Animation a = new Animation() {
                        @Override
                        protected void applyTransformation(float interpolatedTime, Transformation t) {
                            if (interpolatedTime == 1){
                            }
                            holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight - (distanceToCollapse * interpolatedTime));
                            holder.getBinding().cardView.requestLayout();
                        }
                        @Override
                        public boolean willChangeBounds() {
                            return true;
                        }
                    };
                    a.setDuration(500);
                    holder.getBinding().cardView.startAnimation(a);
                    holder.isExpended = false;
                }else{
                    final int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
                    holder.getBinding().cardView.measure(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
                    int targetHeight = holder.getBinding().cardView.getMeasuredHeight();
                    int distanceToExpand = targetHeight - initialHeight;
                    Animation a = new Animation() {
                        @Override
                        protected void applyTransformation(float interpolatedTime, Transformation t) {
                            if (interpolatedTime == 1){
                            }
                            holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight + (distanceToExpand * interpolatedTime));
                            holder.getBinding().cardView.requestLayout();
                        }
                        @Override
                        public boolean willChangeBounds() {
                            return true;
                        }
                    };
                    a.setDuration(500);
                    holder.getBinding().cardView.startAnimation(a);
                    holder.isExpended = true;
                }
            }
        });
        holder.getBinding().layoutContent.setOnClickListener(v -> {
            AppManager.getAppManager().startActivity(
                    new Intent(getRecyclerView().getContext(), CleanStorageDetailActivity.class)
                            .putExtra("bean",mDataList.get(position)));
        });
        ImageRvAdapter adapter = new ImageRvAdapter(mContext);
        holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3));
        holder.getBinding().rvImage.setAdapter(adapter);
        String url = mDataList.get(position).getUrl();
        if (url == null||url.isEmpty()){
            return;
        }
        List<String> list;
        if (url.contains(",")){
            String[] split = url.split(",");
            list = new ArrayList<>(Arrays.asList(split));
        }else {
            list = new ArrayList<>();
            list.add(url);
        }
        adapter.setData(list);
    }
    public static class ViewHolder extends BaseRVAdapter.BaseViewHolder<ItemCleanStorageBinding> {
        private boolean isExpended;
        public ViewHolder(ItemCleanStorageBinding binding) {
            super(binding);
        }
    }
}
app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyAssetsRvAdapter.java
@@ -21,9 +21,12 @@
import com.application.zhangshi_app_android.ui.function.FamilyAssetsActivityViewModel;
import com.application.zhangshi_app_android.ui.function.FamilyAssetsDetailActivity;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
/**
@@ -50,7 +53,7 @@
    }
    @Override
    protected ViewHolder getViewHolder(ItemFamilyAssetsBinding itemBind) {
    protected ViewHolder getViewHolder(ItemFamilyAssetsBinding itemBind,int viewType) {
        return new ViewHolder(itemBind);
    }
@@ -117,6 +120,8 @@
                    new Intent(getRecyclerView().getContext(), FamilyAssetsDetailActivity.class)
                            .putExtra("bean",mDataList.get(position)));
        });
        String time = mDataList.get(position).getCreateTime().split(" ")[0];
        holder.getBinding().tvTime.setText(time);
        ImageRvAdapter adapter = new ImageRvAdapter(mContext);
        holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3));
        holder.getBinding().rvImage.setAdapter(adapter);
app/src/main/java/com/application/zhangshi_app_android/adapter/FamilyMemorabiliaRvAdapter.java
@@ -23,6 +23,7 @@
import com.application.zhangshi_app_android.ui.function.FamilyMemorabiliaActivityViewModel;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
@@ -53,7 +54,7 @@
    }
    @Override
    protected MyViewHolder getViewHolder(ItemFamilyMemorabiliaBinding itemBind) {
    protected MyViewHolder getViewHolder(ItemFamilyMemorabiliaBinding itemBind,int viewType) {
        return new MyViewHolder(itemBind);
    }
@@ -70,13 +71,18 @@
            holder.getBinding().checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    List<FamilyMemorabiliaBean> list = new ArrayList<>(Objects.requireNonNull(viewModel.getCheckListLiveData().getValue()));
                    if (viewModel.getCheckListLiveData().getValue() == null){
                        viewModel.getCheckListLiveData().setValue(new ArrayList<>());
                    }
                    List<FamilyMemorabiliaBean> list = new ArrayList<>(viewModel.getCheckListLiveData().getValue());
                    if (isChecked){
                        list.add(mDataList.get(position));
                        if (!list.contains(mDataList.get(position))){
                            list.add(mDataList.get(position));
                        }
                    }else{
                        list.remove(mDataList.get(position));
                    }
                    viewModel.getCheckListLiveData().postValue(list);
                    viewModel.getCheckListLiveData().setValue(list);
                }
            });
            holder.getBinding().checkbox.setChecked(viewModel.getCheckListLiveData().getValue().contains(mDataList.get(position)));
app/src/main/java/com/application/zhangshi_app_android/adapter/HomeDevicesRvAdapter.java
@@ -119,7 +119,7 @@
    }
    @Override
    protected ViewHolder getViewHolder(ItemHomeDevicesBinding itemBind) {
    protected ViewHolder getViewHolder(ItemHomeDevicesBinding itemBind,int viewType) {
        return new ViewHolder(itemBind);
    }
app/src/main/java/com/application/zhangshi_app_android/adapter/HomeMemberAdapter.java
New file
@@ -0,0 +1,103 @@
package com.application.zhangshi_app_android.adapter;
import android.content.Context;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Transformation;
import android.widget.FrameLayout;
import com.android.app_base.base.adapter.BaseRVAdapter;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.bean.HomeMemberBean;
import com.application.zhangshi_app_android.databinding.ItemHomeMemberListBinding;
/**
 * @author Ljj
 * @date 2023.04.11. 14:08
 * @desc
 */
public class HomeMemberAdapter extends BaseRVAdapter<HomeMemberBean, ItemHomeMemberListBinding, HomeMemberAdapter.ViewHolder> {
    public HomeMemberAdapter(Context context) {
        super(context);
    }
    @Override
    protected int getLayoutId() {
        return R.layout.item_home_member_list;
    }
    @Override
    protected void onBind(ViewHolder holder, int position) {
        holder.getBinding().setBean(mDataList.get(position));
        if (position % 2 != 0){
            holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_blue));
        }else {
            holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_pink));
        }
        holder.getBinding().layoutTitle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (holder.isExpended){
                    int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
                    int collapsedHeight = holder.getBinding().layoutTitle.getMeasuredHeight();
                    int distanceToCollapse = (int) (initialHeight - collapsedHeight);
                    Animation a = new Animation() {
                        @Override
                        protected void applyTransformation(float interpolatedTime, Transformation t) {
                            if (interpolatedTime == 1){
                            }
                            holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight - (distanceToCollapse * interpolatedTime));
                            holder.getBinding().cardView.requestLayout();
                        }
                        @Override
                        public boolean willChangeBounds() {
                            return true;
                        }
                    };
                    a.setDuration(500);
                    holder.getBinding().cardView.startAnimation(a);
                    holder.isExpended = false;
                }else{
                    final int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
                    holder.getBinding().cardView.measure(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
                    int targetHeight = holder.getBinding().cardView.getMeasuredHeight();
                    int distanceToExpand = targetHeight - initialHeight;
                    Animation a = new Animation() {
                        @Override
                        protected void applyTransformation(float interpolatedTime, Transformation t) {
                            if (interpolatedTime == 1){
                            }
                            holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight + (distanceToExpand * interpolatedTime));
                            holder.getBinding().cardView.requestLayout();
                        }
                        @Override
                        public boolean willChangeBounds() {
                            return true;
                        }
                    };
                    a.setDuration(500);
                    holder.getBinding().cardView.startAnimation(a);
                    holder.isExpended = true;
                }
            }
        });
    }
    @Override
    protected ViewHolder getViewHolder(ItemHomeMemberListBinding itemBind, int viewType) {
        return new ViewHolder(itemBind);
    }
    public static class ViewHolder extends BaseViewHolder<ItemHomeMemberListBinding>{
        private boolean isExpended;
        public ViewHolder(ItemHomeMemberListBinding binding) {
            super(binding);
        }
    }
}
app/src/main/java/com/application/zhangshi_app_android/adapter/HonorCollectionRvAdapter.java
New file
@@ -0,0 +1,138 @@
package com.application.zhangshi_app_android.adapter;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Transformation;
import android.widget.FrameLayout;
import androidx.recyclerview.widget.GridLayoutManager;
import com.android.app_base.base.adapter.BaseRVAdapter;
import com.android.app_base.manager.AppManager;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.bean.HonorCollectionBean;
import com.application.zhangshi_app_android.databinding.ItemFamilyAssetsBinding;
import com.application.zhangshi_app_android.databinding.ItemHonorCollectionBinding;
import com.application.zhangshi_app_android.ui.function.HonorCollectionDetailActivity;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
 * @author Ljj
 * @date 2023.04.14. 20:57
 * @desc 荣誉收藏 Adapter
 */
public class HonorCollectionRvAdapter extends BaseRVAdapter<HonorCollectionBean, ItemHonorCollectionBinding, HonorCollectionRvAdapter.ViewHolder>{
    public HonorCollectionRvAdapter(Context context) {
        super(context);
    }
    @Override
    protected int getLayoutId() {
        return R.layout.item_honor_collection;
    }
    @Override
    protected void onBind(ViewHolder holder, int position) {
        holder.getBinding().setBean(mDataList.get(position));
        if (position % 2 != 0){
            holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_blue));
        }else {
            holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_pink));
        }
        holder.getBinding().layoutTitle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (holder.isExpended){
                    int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
                    int collapsedHeight = holder.getBinding().layoutTitle.getMeasuredHeight();
                    int distanceToCollapse = (int) (initialHeight - collapsedHeight);
                    Animation a = new Animation() {
                        @Override
                        protected void applyTransformation(float interpolatedTime, Transformation t) {
                            if (interpolatedTime == 1){
                            }
                            holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight - (distanceToCollapse * interpolatedTime));
                            holder.getBinding().cardView.requestLayout();
                        }
                        @Override
                        public boolean willChangeBounds() {
                            return true;
                        }
                    };
                    a.setDuration(500);
                    holder.getBinding().cardView.startAnimation(a);
                    holder.isExpended = false;
                }else{
                    final int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
                    holder.getBinding().cardView.measure(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
                    int targetHeight = holder.getBinding().cardView.getMeasuredHeight();
                    int distanceToExpand = targetHeight - initialHeight;
                    Animation a = new Animation() {
                        @Override
                        protected void applyTransformation(float interpolatedTime, Transformation t) {
                            if (interpolatedTime == 1){
                            }
                            holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight + (distanceToExpand * interpolatedTime));
                            holder.getBinding().cardView.requestLayout();
                        }
                        @Override
                        public boolean willChangeBounds() {
                            return true;
                        }
                    };
                    a.setDuration(500);
                    holder.getBinding().cardView.startAnimation(a);
                    holder.isExpended = true;
                }
            }
        });
        holder.getBinding().layoutContent.setOnClickListener(v -> {
            AppManager.getAppManager().startActivity(
                    new Intent(getRecyclerView().getContext(), HonorCollectionDetailActivity.class)
                            .putExtra("bean",mDataList.get(position)));
        });
        String time = mDataList.get(position).getGetTime().split(" ")[0];
        holder.getBinding().tvTime.setText(time);
        ImageRvAdapter adapter = new ImageRvAdapter(mContext);
        holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3));
        holder.getBinding().rvImage.setAdapter(adapter);
        String url = mDataList.get(position).getUrl();
        if (url == null||url.isEmpty()){
            return;
        }
        List<String> list;
        if (url.contains(",")){
            String[] split = url.split(",");
            list = new ArrayList<>(Arrays.asList(split));
        }else {
            list = new ArrayList<>();
            list.add(url);
        }
        adapter.setData(list);
    }
    @Override
    protected ViewHolder getViewHolder(ItemHonorCollectionBinding itemBind, int viewType) {
        return new ViewHolder(itemBind);
    }
    public static class ViewHolder extends BaseViewHolder<ItemHonorCollectionBinding>{
        private boolean isExpended;
        public ViewHolder(ItemHonorCollectionBinding binding) {
            super(binding);
        }
    }
}
app/src/main/java/com/application/zhangshi_app_android/adapter/HundredWishRvAdapter.java
New file
@@ -0,0 +1,131 @@
package com.application.zhangshi_app_android.adapter;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Transformation;
import android.widget.FrameLayout;
import androidx.recyclerview.widget.GridLayoutManager;
import com.android.app_base.base.adapter.BaseRVAdapter;
import com.android.app_base.manager.AppManager;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.bean.HundredWishBean;
import com.application.zhangshi_app_android.databinding.ItemHundredWishBinding;
import com.application.zhangshi_app_android.ui.function.HundredWishDetailActivity;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author Ljj
* @date 2023.04.23. 20:05
* @desc
*/public class HundredWishRvAdapter extends BaseRVAdapter<HundredWishBean, ItemHundredWishBinding, HundredWishRvAdapter.ViewHolder> {
    public HundredWishRvAdapter(Context context) {
        super(context);
    }
    @Override
    protected int getLayoutId() {
        return R.layout.item_hundred_wish;
    }
    @Override
    protected ViewHolder getViewHolder(ItemHundredWishBinding itemBind, int viewType) {
        return new ViewHolder(itemBind);
    }
    @Override
    protected void onBind(ViewHolder holder, int position) {
        holder.getBinding().setBean(mDataList.get(position));
        if (position % 2 != 0){
            holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_blue));
        }else {
            holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_pink));
        }
        holder.getBinding().layoutTitle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (holder.isExpended){
                    int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
                    int collapsedHeight = holder.getBinding().layoutTitle.getMeasuredHeight();
                    int distanceToCollapse = (int) (initialHeight - collapsedHeight);
                    Animation a = new Animation() {
                        @Override
                        protected void applyTransformation(float interpolatedTime, Transformation t) {
                            if (interpolatedTime == 1){
                            }
                            holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight - (distanceToCollapse * interpolatedTime));
                            holder.getBinding().cardView.requestLayout();
                        }
                        @Override
                        public boolean willChangeBounds() {
                            return true;
                        }
                    };
                    a.setDuration(500);
                    holder.getBinding().cardView.startAnimation(a);
                    holder.isExpended = false;
                }else{
                    final int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
                    holder.getBinding().cardView.measure(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
                    int targetHeight = holder.getBinding().cardView.getMeasuredHeight();
                    int distanceToExpand = targetHeight - initialHeight;
                    Animation a = new Animation() {
                        @Override
                        protected void applyTransformation(float interpolatedTime, Transformation t) {
                            if (interpolatedTime == 1){
                            }
                            holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight + (distanceToExpand * interpolatedTime));
                            holder.getBinding().cardView.requestLayout();
                        }
                        @Override
                        public boolean willChangeBounds() {
                            return true;
                        }
                    };
                    a.setDuration(500);
                    holder.getBinding().cardView.startAnimation(a);
                    holder.isExpended = true;
                }
            }
        });
        holder.getBinding().layoutContent.setOnClickListener(v -> {
            AppManager.getAppManager().startActivity(
                    new Intent(getRecyclerView().getContext(), HundredWishDetailActivity.class)
                            .putExtra("bean",mDataList.get(position)));
        });
        ImageRvAdapter adapter = new ImageRvAdapter(mContext);
        holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3));
        holder.getBinding().rvImage.setAdapter(adapter);
        String url = mDataList.get(position).getUrl();
        if (url == null||url.isEmpty()){
            return;
        }
        List<String> list;
        if (url.contains(",")){
            String[] split = url.split(",");
            list = new ArrayList<>(Arrays.asList(split));
        }else {
            list = new ArrayList<>();
            list.add(url);
        }
        adapter.setData(list);
    }
    public static class ViewHolder extends BaseRVAdapter.BaseViewHolder<ItemHundredWishBinding> {
        private boolean isExpended;
        public ViewHolder(ItemHundredWishBinding binding) {
            super(binding);
        }
    }
}
app/src/main/java/com/application/zhangshi_app_android/adapter/ImageRvAdapter.java
@@ -54,7 +54,7 @@
    }
    @Override
    protected BaseViewHolder<ItemImageBinding> getViewHolder(ItemImageBinding itemBind) {
    protected BaseViewHolder<ItemImageBinding> getViewHolder(ItemImageBinding itemBind,int viewType) {
        return new BaseViewHolder<>(itemBind);
    }
app/src/main/java/com/application/zhangshi_app_android/adapter/IncomeAndExpensesRvAdapter.java
New file
@@ -0,0 +1,135 @@
package com.application.zhangshi_app_android.adapter;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Transformation;
import android.widget.FrameLayout;
import androidx.recyclerview.widget.GridLayoutManager;
import com.android.app_base.base.adapter.BaseRVAdapter;
import com.android.app_base.manager.AppManager;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.bean.CleanStorageBean;
import com.application.zhangshi_app_android.bean.IncomeAndExpensesBean;
import com.application.zhangshi_app_android.databinding.ItemCleanStorageBinding;
import com.application.zhangshi_app_android.databinding.ItemIncomeAndExpensesBinding;
import com.application.zhangshi_app_android.ui.function.CleanStorageDetailActivity;
import com.application.zhangshi_app_android.ui.function.IncomeAndExpensesDetailActivity;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
 * @author Ljj
 * @date 2023.04.20. 22:24
 * @desc
 */
public class IncomeAndExpensesRvAdapter extends BaseRVAdapter<IncomeAndExpensesBean, ItemIncomeAndExpensesBinding, IncomeAndExpensesRvAdapter.ViewHolder> {
    public IncomeAndExpensesRvAdapter(Context context) {
        super(context);
    }
    @Override
    protected int getLayoutId() {
        return R.layout.item_income_and_expenses;
    }
    @Override
    protected ViewHolder getViewHolder(ItemIncomeAndExpensesBinding itemBind, int viewType) {
        return new ViewHolder(itemBind);
    }
    @Override
    protected void onBind(ViewHolder holder, int position) {
        holder.getBinding().setBean(mDataList.get(position));
        if (position % 2 != 0){
            holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_blue));
        }else {
            holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_pink));
        }
        holder.getBinding().layoutTitle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (holder.isExpended){
                    int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
                    int collapsedHeight = holder.getBinding().layoutTitle.getMeasuredHeight();
                    int distanceToCollapse = (int) (initialHeight - collapsedHeight);
                    Animation a = new Animation() {
                        @Override
                        protected void applyTransformation(float interpolatedTime, Transformation t) {
                            if (interpolatedTime == 1){
                            }
                            holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight - (distanceToCollapse * interpolatedTime));
                            holder.getBinding().cardView.requestLayout();
                        }
                        @Override
                        public boolean willChangeBounds() {
                            return true;
                        }
                    };
                    a.setDuration(500);
                    holder.getBinding().cardView.startAnimation(a);
                    holder.isExpended = false;
                }else{
                    final int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
                    holder.getBinding().cardView.measure(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
                    int targetHeight = holder.getBinding().cardView.getMeasuredHeight();
                    int distanceToExpand = targetHeight - initialHeight;
                    Animation a = new Animation() {
                        @Override
                        protected void applyTransformation(float interpolatedTime, Transformation t) {
                            if (interpolatedTime == 1){
                            }
                            holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight + (distanceToExpand * interpolatedTime));
                            holder.getBinding().cardView.requestLayout();
                        }
                        @Override
                        public boolean willChangeBounds() {
                            return true;
                        }
                    };
                    a.setDuration(500);
                    holder.getBinding().cardView.startAnimation(a);
                    holder.isExpended = true;
                }
            }
        });
        holder.getBinding().layoutContent.setOnClickListener(v -> {
            AppManager.getAppManager().startActivity(
                    new Intent(getRecyclerView().getContext(), IncomeAndExpensesDetailActivity.class)
                            .putExtra("bean",mDataList.get(position)));
        });
        ImageRvAdapter adapter = new ImageRvAdapter(mContext);
        holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3));
        holder.getBinding().rvImage.setAdapter(adapter);
        String url = mDataList.get(position).getUrl();
        if (url == null||url.isEmpty()){
            return;
        }
        List<String> list;
        if (url.contains(",")){
            String[] split = url.split(",");
            list = new ArrayList<>(Arrays.asList(split));
        }else {
            list = new ArrayList<>();
            list.add(url);
        }
        adapter.setData(list);
    }
    public static class ViewHolder extends BaseRVAdapter.BaseViewHolder<ItemIncomeAndExpensesBinding> {
        private boolean isExpended;
        public ViewHolder(ItemIncomeAndExpensesBinding binding) {
            super(binding);
        }
    }
}
app/src/main/java/com/application/zhangshi_app_android/adapter/LittleDoctorRvAdapter.java
New file
@@ -0,0 +1,135 @@
package com.application.zhangshi_app_android.adapter;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Transformation;
import android.widget.FrameLayout;
import androidx.recyclerview.widget.GridLayoutManager;
import com.android.app_base.base.adapter.BaseRVAdapter;
import com.android.app_base.manager.AppManager;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.bean.LittleDoctorBean;
import com.application.zhangshi_app_android.databinding.ItemHonorCollectionBinding;
import com.application.zhangshi_app_android.databinding.ItemLittleDoctorBinding;
import com.application.zhangshi_app_android.ui.function.HonorCollectionDetailActivity;
import com.application.zhangshi_app_android.ui.function.LittleDoctorDetailActivity;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
 * @author Ljj
 * @date 2023.04.15. 15:06
 * @desc
 */
public class LittleDoctorRvAdapter extends BaseRVAdapter<LittleDoctorBean, ItemLittleDoctorBinding, LittleDoctorRvAdapter.ViewHolder> {
    public LittleDoctorRvAdapter(Context context) {
        super(context);
    }
    @Override
    protected int getLayoutId() {
        return R.layout.item_little_doctor;
    }
    @Override
    protected void onBind(ViewHolder holder, int position) {
        holder.getBinding().setBean(mDataList.get(position));
        if (position % 2 != 0){
            holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_blue));
        }else {
            holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_pink));
        }
        holder.getBinding().layoutTitle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (holder.isExpended){
                    int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
                    int collapsedHeight = holder.getBinding().layoutTitle.getMeasuredHeight();
                    int distanceToCollapse = (int) (initialHeight - collapsedHeight);
                    Animation a = new Animation() {
                        @Override
                        protected void applyTransformation(float interpolatedTime, Transformation t) {
                            if (interpolatedTime == 1){
                            }
                            holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight - (distanceToCollapse * interpolatedTime));
                            holder.getBinding().cardView.requestLayout();
                        }
                        @Override
                        public boolean willChangeBounds() {
                            return true;
                        }
                    };
                    a.setDuration(500);
                    holder.getBinding().cardView.startAnimation(a);
                    holder.isExpended = false;
                }else{
                    final int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
                    holder.getBinding().cardView.measure(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
                    int targetHeight = holder.getBinding().cardView.getMeasuredHeight();
                    int distanceToExpand = targetHeight - initialHeight;
                    Animation a = new Animation() {
                        @Override
                        protected void applyTransformation(float interpolatedTime, Transformation t) {
                            if (interpolatedTime == 1){
                            }
                            holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight + (distanceToExpand * interpolatedTime));
                            holder.getBinding().cardView.requestLayout();
                        }
                        @Override
                        public boolean willChangeBounds() {
                            return true;
                        }
                    };
                    a.setDuration(500);
                    holder.getBinding().cardView.startAnimation(a);
                    holder.isExpended = true;
                }
            }
        });
        holder.getBinding().layoutContent.setOnClickListener(v -> {
            AppManager.getAppManager().startActivity(
                    new Intent(getRecyclerView().getContext(), LittleDoctorDetailActivity.class)
                            .putExtra("bean",mDataList.get(position)));
        });
        ImageRvAdapter adapter = new ImageRvAdapter(mContext);
        holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3));
        holder.getBinding().rvImage.setAdapter(adapter);
        String url = mDataList.get(position).getUrl();
        if (url == null||url.isEmpty()){
            return;
        }
        List<String> list;
        if (url.contains(",")){
            String[] split = url.split(",");
            list = new ArrayList<>(Arrays.asList(split));
        }else {
            list = new ArrayList<>();
            list.add(url);
        }
        adapter.setData(list);
    }
    @Override
    protected ViewHolder getViewHolder(ItemLittleDoctorBinding itemBind, int viewType) {
        return new ViewHolder(itemBind);
    }
    public static class ViewHolder extends BaseViewHolder<ItemLittleDoctorBinding>{
        private boolean isExpended;
        public ViewHolder(ItemLittleDoctorBinding binding) {
            super(binding);
        }
    }
}
app/src/main/java/com/application/zhangshi_app_android/adapter/PetRvAdapter.java
New file
@@ -0,0 +1,118 @@
package com.application.zhangshi_app_android.adapter;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Transformation;
import android.widget.FrameLayout;
import androidx.recyclerview.widget.GridLayoutManager;
import com.android.app_base.base.adapter.BaseRVAdapter;
import com.android.app_base.manager.AppManager;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.bean.CleanStorageBean;
import com.application.zhangshi_app_android.bean.PetBean;
import com.application.zhangshi_app_android.databinding.ItemCleanStorageBinding;
import com.application.zhangshi_app_android.databinding.ItemPetBinding;
import com.application.zhangshi_app_android.ui.function.CleanStorageDetailActivity;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
 * @author Ljj
 * @date 2023.04.17. 18:40
 * @desc
 */
public class PetRvAdapter extends BaseRVAdapter<PetBean, ItemPetBinding, PetRvAdapter.ViewHolder> {
    public PetRvAdapter(Context context) {
        super(context);
    }
    @Override
    protected int getLayoutId() {
        return R.layout.item_pet;
    }
    @Override
    protected ViewHolder getViewHolder(ItemPetBinding itemBind, int viewType) {
        return new ViewHolder(itemBind);
    }
    @Override
    protected void onBind(ViewHolder holder, int position) {
        holder.getBinding().setBean(mDataList.get(position));
        if (position % 2 != 0){
            holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_blue));
        }else {
            holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_pink));
        }
        holder.getBinding().layoutTitle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (holder.isExpended){
                    int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
                    int collapsedHeight = holder.getBinding().layoutTitle.getMeasuredHeight();
                    int distanceToCollapse = (int) (initialHeight - collapsedHeight);
                    Animation a = new Animation() {
                        @Override
                        protected void applyTransformation(float interpolatedTime, Transformation t) {
                            if (interpolatedTime == 1){
                            }
                            holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight - (distanceToCollapse * interpolatedTime));
                            holder.getBinding().cardView.requestLayout();
                        }
                        @Override
                        public boolean willChangeBounds() {
                            return true;
                        }
                    };
                    a.setDuration(500);
                    holder.getBinding().cardView.startAnimation(a);
                    holder.isExpended = false;
                }else{
                    final int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
                    holder.getBinding().cardView.measure(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
                    int targetHeight = holder.getBinding().cardView.getMeasuredHeight();
                    int distanceToExpand = targetHeight - initialHeight;
                    Animation a = new Animation() {
                        @Override
                        protected void applyTransformation(float interpolatedTime, Transformation t) {
                            if (interpolatedTime == 1){
                            }
                            holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight + (distanceToExpand * interpolatedTime));
                            holder.getBinding().cardView.requestLayout();
                        }
                        @Override
                        public boolean willChangeBounds() {
                            return true;
                        }
                    };
                    a.setDuration(500);
                    holder.getBinding().cardView.startAnimation(a);
                    holder.isExpended = true;
                }
            }
        });
        holder.getBinding().layoutContent.setOnClickListener(v -> {
            AppManager.getAppManager().startActivity(
                    new Intent(getRecyclerView().getContext(), CleanStorageDetailActivity.class)
                            .putExtra("bean",mDataList.get(position)));
        });
    }
    public static class ViewHolder extends BaseRVAdapter.BaseViewHolder<ItemPetBinding> {
        private boolean isExpended;
        public ViewHolder(ItemPetBinding binding) {
            super(binding);
        }
    }
}
app/src/main/java/com/application/zhangshi_app_android/adapter/PropertyRvAdapter.java
New file
@@ -0,0 +1,134 @@
package com.application.zhangshi_app_android.adapter;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Transformation;
import android.widget.FrameLayout;
import androidx.recyclerview.widget.GridLayoutManager;
import com.android.app_base.base.adapter.BaseRVAdapter;
import com.android.app_base.manager.AppManager;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.bean.PropertyBean;
import com.application.zhangshi_app_android.databinding.ItemCleanStorageBinding;
import com.application.zhangshi_app_android.databinding.ItemPropertyBinding;
import com.application.zhangshi_app_android.ui.function.CleanStorageDetailActivity;
import com.application.zhangshi_app_android.ui.function.PropertyDetailActivity;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
 * @author Ljj
 * @date 2023.04.21. 19:26
 * @desc 个人财产 Adapter
 */
public class PropertyRvAdapter extends BaseRVAdapter<PropertyBean, ItemPropertyBinding, PropertyRvAdapter.ViewHolder> {
    public PropertyRvAdapter(Context context) {
        super(context);
    }
    @Override
    protected int getLayoutId() {
        return R.layout.item_property;
    }
    @Override
    protected ViewHolder getViewHolder(ItemPropertyBinding itemBind, int viewType) {
        return new ViewHolder(itemBind);
    }
    @Override
    protected void onBind(ViewHolder holder, int position) {
        holder.getBinding().setBean(mDataList.get(position));
        if (position % 2 != 0){
            holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_blue));
        }else {
            holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_pink));
        }
        holder.getBinding().layoutTitle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (holder.isExpended){
                    int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
                    int collapsedHeight = holder.getBinding().layoutTitle.getMeasuredHeight();
                    int distanceToCollapse = (int) (initialHeight - collapsedHeight);
                    Animation a = new Animation() {
                        @Override
                        protected void applyTransformation(float interpolatedTime, Transformation t) {
                            if (interpolatedTime == 1){
                            }
                            holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight - (distanceToCollapse * interpolatedTime));
                            holder.getBinding().cardView.requestLayout();
                        }
                        @Override
                        public boolean willChangeBounds() {
                            return true;
                        }
                    };
                    a.setDuration(500);
                    holder.getBinding().cardView.startAnimation(a);
                    holder.isExpended = false;
                }else{
                    final int initialHeight = holder.getBinding().cardView.getMeasuredHeight();
                    holder.getBinding().cardView.measure(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
                    int targetHeight = holder.getBinding().cardView.getMeasuredHeight();
                    int distanceToExpand = targetHeight - initialHeight;
                    Animation a = new Animation() {
                        @Override
                        protected void applyTransformation(float interpolatedTime, Transformation t) {
                            if (interpolatedTime == 1){
                            }
                            holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight + (distanceToExpand * interpolatedTime));
                            holder.getBinding().cardView.requestLayout();
                        }
                        @Override
                        public boolean willChangeBounds() {
                            return true;
                        }
                    };
                    a.setDuration(500);
                    holder.getBinding().cardView.startAnimation(a);
                    holder.isExpended = true;
                }
            }
        });
        holder.getBinding().layoutContent.setOnClickListener(v -> {
            AppManager.getAppManager().startActivity(
                    new Intent(getRecyclerView().getContext(), PropertyDetailActivity.class)
                            .putExtra("bean",mDataList.get(position)));
        });
        ImageRvAdapter adapter = new ImageRvAdapter(mContext);
        holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3));
        holder.getBinding().rvImage.setAdapter(adapter);
        String url = mDataList.get(position).getUrl();
        if (url == null||url.isEmpty()){
            return;
        }
        List<String> list;
        if (url.contains(",")){
            String[] split = url.split(",");
            list = new ArrayList<>(Arrays.asList(split));
        }else {
            list = new ArrayList<>();
            list.add(url);
        }
        adapter.setData(list);
    }
    public static class ViewHolder extends BaseRVAdapter.BaseViewHolder<ItemPropertyBinding> {
        private boolean isExpended;
        public ViewHolder(ItemPropertyBinding binding) {
            super(binding);
        }
    }
}
app/src/main/java/com/application/zhangshi_app_android/bean/CertificateOfHonorBean.java
New file
@@ -0,0 +1,111 @@
package com.application.zhangshi_app_android.bean;
import java.io.Serializable;
/**
 * @author Ljj
 * @date 2023.04.23. 22:32
 * @desc 荣誉证书 Bean
 */
public class CertificateOfHonorBean implements Serializable {
    //名称
    private String name;
    //时间
    private String time;
    //类别
    private String type;
    //证号
    private String certificateNumber;
    //级别
    private String level;
    //有效时间
    private String effectiveTime;
    //获得时间
    private String getTime;
    //存放位置
    private String location;
    //备注
    private String remark;
    //电子文件
    private String url;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getTime() {
        return time;
    }
    public void setTime(String time) {
        this.time = time;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getCertificateNumber() {
        return certificateNumber;
    }
    public void setCertificateNumber(String certificateNumber) {
        this.certificateNumber = certificateNumber;
    }
    public String getLevel() {
        return level;
    }
    public void setLevel(String level) {
        this.level = level;
    }
    public String getEffectiveTime() {
        return effectiveTime;
    }
    public void setEffectiveTime(String effectiveTime) {
        this.effectiveTime = effectiveTime;
    }
    public String getGetTime() {
        return getTime;
    }
    public void setGetTime(String getTime) {
        this.getTime = getTime;
    }
    public String getLocation() {
        return location;
    }
    public void setLocation(String location) {
        this.location = location;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
app/src/main/java/com/application/zhangshi_app_android/bean/CleanStorageBean.java
New file
@@ -0,0 +1,112 @@
package com.application.zhangshi_app_android.bean;
import java.io.Serializable;
/**
 * @author Ljj
 * @date 2023.04.16. 19:13
 * @desc 保洁收纳 bean
 */
public class CleanStorageBean implements Serializable {
    //序号
    private int id;
    //类型
    private String type;
    //适用人
    private String suitablePeople;
    //类别
    private String category;
    //保洁方法
    private String cleanMethod;
    //材料存放地
    private String materialStorageLocation;
    //放置地点
    private String placementLocation;
    //备注
    private String remark;
    private String url;
    public CleanStorageBean(int id, String type, String suitablePeople, String category, String cleanMethod, String materialStorageLocation, String placementLocation, String remark, String url) {
        this.id = id;
        this.type = type;
        this.suitablePeople = suitablePeople;
        this.category = category;
        this.cleanMethod = cleanMethod;
        this.materialStorageLocation = materialStorageLocation;
        this.placementLocation = placementLocation;
        this.remark = remark;
        this.url = url;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getSuitablePeople() {
        return suitablePeople;
    }
    public void setSuitablePeople(String suitablePeople) {
        this.suitablePeople = suitablePeople;
    }
    public String getCategory() {
        return category;
    }
    public void setCategory(String category) {
        this.category = category;
    }
    public String getCleanMethod() {
        return cleanMethod;
    }
    public void setCleanMethod(String cleanMethod) {
        this.cleanMethod = cleanMethod;
    }
    public String getMaterialStorageLocation() {
        return materialStorageLocation;
    }
    public void setMaterialStorageLocation(String materialStorageLocation) {
        this.materialStorageLocation = materialStorageLocation;
    }
    public String getPlacementLocation() {
        return placementLocation;
    }
    public void setPlacementLocation(String placementLocation) {
        this.placementLocation = placementLocation;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
app/src/main/java/com/application/zhangshi_app_android/bean/HomeDevicesBean.java
@@ -10,20 +10,21 @@
public class HomeDevicesBean implements Serializable {
    private long id;
    private String name;
    private String createTime;
    private String people;
    private String createDate;
    private String buyer;
    private String content;
    private String address;
    private String location;
    private String remark;
    private String url;
    private String familyId;
    public HomeDevicesBean(long id, String name, String createTime, String people, String content, String address, String remark, String url) {
        this.id = id;
        this.name = name;
        this.createTime = createTime;
        this.people = people;
        this.createDate = createTime;
        this.buyer = people;
        this.content = content;
        this.address = address;
        this.location = address;
        this.remark = remark;
        this.url = url;
    }
@@ -36,20 +37,20 @@
        this.name = name;
    }
    public String getCreateTime() {
        return createTime;
    public String getCreateDate() {
        return createDate;
    }
    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    public void setCreateDate(String createDate) {
        this.createDate = createDate;
    }
    public String getPeople() {
        return people;
    public String getBuyer() {
        return buyer;
    }
    public void setPeople(String people) {
        this.people = people;
    public void setBuyer(String buyer) {
        this.buyer = buyer;
    }
    public String getContent() {
@@ -60,12 +61,12 @@
        this.content = content;
    }
    public String getAddress() {
        return address;
    public String getLocation() {
        return location;
    }
    public void setAddress(String address) {
        this.address = address;
    public void setLocation(String location) {
        this.location = location;
    }
    public String getRemark() {
@@ -90,4 +91,12 @@
    public void setId(long id) {
        this.id = id;
    }
    public String getFamilyId() {
        return familyId;
    }
    public void setFamilyId(String familyId) {
        this.familyId = familyId;
    }
}
app/src/main/java/com/application/zhangshi_app_android/bean/HomeMemberBean.java
New file
@@ -0,0 +1,102 @@
package com.application.zhangshi_app_android.bean;
/**
 * @author Ljj
 * @date 2023.04.11. 14:13
 * @desc 首页成员信息
 */
public class HomeMemberBean {
    private String generation;
    private String name;
    private String gender;
    private String url;
    private String birthday;
    private String deathDay;
    private String phone;
    private String company;
    private String spouse;
    public HomeMemberBean(String generation, String name, String gender, String url, String birthday, String deathDay, String phone, String company, String spouse) {
        this.generation = generation;
        this.name = name;
        this.gender = gender;
        this.url = url;
        this.birthday = birthday;
        this.deathDay = deathDay;
        this.phone = phone;
        this.company = company;
        this.spouse = spouse;
    }
    public String getGeneration() {
        return generation;
    }
    public void setGeneration(String generation) {
        this.generation = generation;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public String getBirthday() {
        return birthday;
    }
    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }
    public String getDeathDay() {
        return deathDay;
    }
    public void setDeathDay(String deathDay) {
        this.deathDay = deathDay;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getCompany() {
        return company;
    }
    public void setCompany(String company) {
        this.company = company;
    }
    public String getSpouse() {
        return spouse;
    }
    public void setSpouse(String spouse) {
        this.spouse = spouse;
    }
}
app/src/main/java/com/application/zhangshi_app_android/bean/HonorCollectionBean.java
New file
@@ -0,0 +1,119 @@
package com.application.zhangshi_app_android.bean;
import java.io.Serializable;
/**
 * @author Ljj
 * @date 2023.04.14. 21:12
 * @desc
 */
public class HonorCollectionBean implements Serializable {
    private int id;
    private String type;//类型
    private String name;//名称
    private String getTime;//获得时间
    private String source;//来源
    private String price;//价值
    private String owner;//所有者
    private String location;//存放地点
    private String remark;//备注
    private String url;//电子文件
    private String familyId;//家庭id
    private int ownData;//拥有数据
    public String getName() {
        return name;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getGetTime() {
        return getTime;
    }
    public void setGetTime(String getTime) {
        this.getTime = getTime;
    }
    public String getSource() {
        return source;
    }
    public void setSource(String source) {
        this.source = source;
    }
    public String getPrice() {
        return price;
    }
    public void setPrice(String price) {
        this.price = price;
    }
    public String getOwner() {
        return owner;
    }
    public void setOwner(String owner) {
        this.owner = owner;
    }
    public String getLocation() {
        return location;
    }
    public void setLocation(String location) {
        this.location = location;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getFamilyId() {
        return familyId;
    }
    public void setFamilyId(String familyId) {
        this.familyId = familyId;
    }
    public int getOwnData() {
        return ownData;
    }
    public void setOwnData(int ownData) {
        this.ownData = ownData;
    }
}
app/src/main/java/com/application/zhangshi_app_android/bean/HonorCollectionRequestBean.java
New file
@@ -0,0 +1,118 @@
package com.application.zhangshi_app_android.bean;
import java.util.HashMap;
import java.util.Map;
/**
 * @author Ljj
 * @date 2023.04.17. 21:26
 * @desc 荣誉收藏 请求Bean
 */
public class HonorCollectionRequestBean {
    private String type;//类型
    private String name;//名称
    private String getTime;//获得时间
    private String source;//来源
    private String price;//价值
    private String owner;//所有者
    private String location;//存放地点
    private String remark;//备注
    private int pageNum = 1;//页码
    private int pageSize = 20;//每页条数
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getGetTime() {
        return getTime;
    }
    public void setGetTime(String getTime) {
        this.getTime = getTime;
    }
    public String getSource() {
        return source;
    }
    public void setSource(String source) {
        this.source = source;
    }
    public String getPrice() {
        return price;
    }
    public void setPrice(String price) {
        this.price = price;
    }
    public String getOwner() {
        return owner;
    }
    public void setOwner(String owner) {
        this.owner = owner;
    }
    public String getLocation() {
        return location;
    }
    public void setLocation(String location) {
        this.location = location;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public int getPageNum() {
        return pageNum;
    }
    public void setPageNum(int pageNum) {
        this.pageNum = pageNum;
    }
    public int getPageSize() {
        return pageSize;
    }
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
    //map
    public Map<String, Object> toMap() {
        Map<String, Object> map = new HashMap<>();
        map.put("type", type == null ? "" : type);
        map.put("name", name == null ? "" : name);
        map.put("getTime", getTime == null ? "" : getTime);
        map.put("source", source == null ? "" : source);
        map.put("price", price == null ? "" : price);
        map.put("owner", owner == null ? "" : owner);
        map.put("location", location == null ? "" : location);
        map.put("remark", remark == null ? "" : remark);
        map.put("pageNum", pageNum);
        map.put("pageSize", pageSize);
        return map;
    }
}
app/src/main/java/com/application/zhangshi_app_android/bean/HonorCollectionResponseBean.java
New file
@@ -0,0 +1,47 @@
package com.application.zhangshi_app_android.bean;
import java.util.List;
/**
 * @author Ljj
 * @date 2023.04.17. 21:38
 * @desc 荣誉收藏 返回Bean
 */
public class HonorCollectionResponseBean {
    private List<HonorCollectionBean> data;
    private long pageNum;
    private long pageSize;
    private long total;
    public List<HonorCollectionBean> getData() {
        return data;
    }
    public void setData(List<HonorCollectionBean> data) {
        this.data = data;
    }
    public long getPageNum() {
        return pageNum;
    }
    public void setPageNum(long pageNum) {
        this.pageNum = pageNum;
    }
    public long getPageSize() {
        return pageSize;
    }
    public void setPageSize(long pageSize) {
        this.pageSize = pageSize;
    }
    public long getTotal() {
        return total;
    }
    public void setTotal(long total) {
        this.total = total;
    }
}
app/src/main/java/com/application/zhangshi_app_android/bean/HundredWishBean.java
New file
@@ -0,0 +1,101 @@
package com.application.zhangshi_app_android.bean;
import java.io.Serializable;
/**
 * @author Ljj
 * @date 2023.04.23. 20:04
 * @desc
 */
public class HundredWishBean implements Serializable {
    //标题
    private String title;
    //创建时间
    private String createTime;
    //始于何因
    private String reason;
    //受惠人
    private String beneficiary;
    //继承人
    private String heir;
    //实现难度
    private String difficulty;
    //是否依旧有效 1有效 0无效
    private int isEffective;
    //备注
    private String remark;
    //电子文件
    private String url;
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getCreateTime() {
        return createTime;
    }
    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }
    public String getReason() {
        return reason;
    }
    public void setReason(String reason) {
        this.reason = reason;
    }
    public String getBeneficiary() {
        return beneficiary;
    }
    public void setBeneficiary(String beneficiary) {
        this.beneficiary = beneficiary;
    }
    public String getHeir() {
        return heir;
    }
    public void setHeir(String heir) {
        this.heir = heir;
    }
    public String getDifficulty() {
        return difficulty;
    }
    public void setDifficulty(String difficulty) {
        this.difficulty = difficulty;
    }
    public int getIsEffective() {
        return isEffective;
    }
    public void setIsEffective(int isEffective) {
        this.isEffective = isEffective;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
app/src/main/java/com/application/zhangshi_app_android/bean/IncomeAndExpensesBean.java
New file
@@ -0,0 +1,119 @@
package com.application.zhangshi_app_android.bean;
import java.io.Serializable;
/**
 * @author Ljj
 * @date 2023.04.20. 22:25
 * @desc 收支台账 实体类
 */
public class IncomeAndExpensesBean implements Serializable {
    private int id;
    private int type;//0=基金,1=台账
    private String createTime;
    private String price;//金额
    private String useFor;//用途
    private String usePeople;//使用人
    private int kind;//0=现金,1=自动划扣
    private String balance;//余额
    private String remark;//备注
    private String url;//电子文件
    private String familyId;//家庭id
    private int ownData;//是否是本家庭的数据 0=否,1=是
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public int getType() {
        return type;
    }
    public void setType(int type) {
        this.type = type;
    }
    public String getCreateTime() {
        return createTime;
    }
    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }
    public String getPrice() {
        return price;
    }
    public void setPrice(String price) {
        this.price = price;
    }
    public String getUseFor() {
        return useFor;
    }
    public void setUseFor(String useFor) {
        this.useFor = useFor;
    }
    public String getUsePeople() {
        return usePeople;
    }
    public void setUsePeople(String usePeople) {
        this.usePeople = usePeople;
    }
    public int getKind() {
        return kind;
    }
    public void setKind(int kind) {
        this.kind = kind;
    }
    public String getBalance() {
        return balance;
    }
    public void setBalance(String balance) {
        this.balance = balance;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public String getFamilyId() {
        return familyId;
    }
    public void setFamilyId(String familyId) {
        this.familyId = familyId;
    }
    public int getOwnData() {
        return ownData;
    }
    public void setOwnData(int ownData) {
        this.ownData = ownData;
    }
}
app/src/main/java/com/application/zhangshi_app_android/bean/IncomeAndExpensesResponseBean.java
New file
@@ -0,0 +1,47 @@
package com.application.zhangshi_app_android.bean;
import java.util.List;
/**
 * @author Ljj
 * @date 2023.04.20. 22:50
 * @desc
 */
public class IncomeAndExpensesResponseBean {
    private List<IncomeAndExpensesBean> data;
    private long pageNum;
    private long pageSize;
    private long total;
    public List<IncomeAndExpensesBean> getData() {
        return data;
    }
    public void setData(List<IncomeAndExpensesBean> data) {
        this.data = data;
    }
    public long getPageNum() {
        return pageNum;
    }
    public void setPageNum(long pageNum) {
        this.pageNum = pageNum;
    }
    public long getPageSize() {
        return pageSize;
    }
    public void setPageSize(long pageSize) {
        this.pageSize = pageSize;
    }
    public long getTotal() {
        return total;
    }
    public void setTotal(long total) {
        this.total = total;
    }
}
app/src/main/java/com/application/zhangshi_app_android/bean/LittleDoctorBean.java
New file
@@ -0,0 +1,114 @@
package com.application.zhangshi_app_android.bean;
import java.io.Serializable;
/**
 * @author Ljj
 * @date 2023.04.15. 15:25
 * @desc
 */
public class LittleDoctorBean implements Serializable {
    private int id;
    private String type;//类型
    private String symptom;//症状
    private String duration;//持续时间
    private String cmedical;//中医处方
    private String wmedical;
    private String effect;
    private String suitable;
    private String remark;
    private String url;
    public LittleDoctorBean(int id, String symptoms, String usingPeople, String duration, String type, String tcmPrescription, String westernMedicinePrescription, String efficacy, String remark, String url) {
        this.id = id;
        this.symptom = symptoms;
        this.suitable = usingPeople;
        this.duration = duration;
        this.type = type;
        this.cmedical = tcmPrescription;
        this.wmedical = westernMedicinePrescription;
        this.effect = efficacy;
        this.remark = remark;
        this.url = url;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getSymptom() {
        return symptom;
    }
    public void setSymptom(String symptom) {
        this.symptom = symptom;
    }
    public String getSuitable() {
        return suitable;
    }
    public void setSuitable(String suitable) {
        this.suitable = suitable;
    }
    public String getDuration() {
        return duration;
    }
    public void setDuration(String duration) {
        this.duration = duration;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getCmedical() {
        return cmedical;
    }
    public void setCmedical(String cmedical) {
        this.cmedical = cmedical;
    }
    public String getWmedical() {
        return wmedical;
    }
    public void setWmedical(String wmedical) {
        this.wmedical = wmedical;
    }
    public String getEffect() {
        return effect;
    }
    public void setEffect(String effect) {
        this.effect = effect;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
app/src/main/java/com/application/zhangshi_app_android/bean/LittleDoctorRequestBean.java
New file
@@ -0,0 +1,24 @@
package com.application.zhangshi_app_android.bean;
import java.util.HashMap;
import java.util.Map;
/**
 * @author Ljj
 * @date 2023.04.15. 21:30
 * @desc
 */
public class LittleDoctorRequestBean {
    private int pageNum = 1;
    private int pageSize = 20;
    public LittleDoctorRequestBean() {
    }
    public Map<String, Object> toMap() {
        Map<String, Object> map = new HashMap<>();
        map.put("page", pageNum);
        map.put("pageSize", pageSize);
        return map;
    }
}
app/src/main/java/com/application/zhangshi_app_android/bean/LittleDoctorResponseBean.java
New file
@@ -0,0 +1,47 @@
package com.application.zhangshi_app_android.bean;
import java.util.List;
/**
 * @author Ljj
 * @date 2023.04.17. 22:17
 * @desc 小医生返回数据
 */
public class LittleDoctorResponseBean {
    private List<LittleDoctorBean> data;
    private long pageNum;
    private long pageSize;
    private long total;
    public List<LittleDoctorBean> getData() {
        return data;
    }
    public void setData(List<LittleDoctorBean> data) {
        this.data = data;
    }
    public long getPageNum() {
        return pageNum;
    }
    public void setPageNum(long pageNum) {
        this.pageNum = pageNum;
    }
    public long getPageSize() {
        return pageSize;
    }
    public void setPageSize(long pageSize) {
        this.pageSize = pageSize;
    }
    public long getTotal() {
        return total;
    }
    public void setTotal(long total) {
        this.total = total;
    }
}
app/src/main/java/com/application/zhangshi_app_android/bean/PetBean.java
New file
@@ -0,0 +1,155 @@
package com.application.zhangshi_app_android.bean;
import java.io.Serializable;
/**
 * @author Ljj
 * @date 2023.04.17. 18:52
 * @desc
 */
public class PetBean implements Serializable {
    private int id;
    private String idNum;
    private String securityCode;
    private String type;
    private String name;
    private String birth;
    private int sex;
    private String color;
    private String properties;
    private String eatHabit;
    private String lifeHabit;
    private String disEatHabit;
    private String disLifeHabit;
    private String address;
    private String dialect;
    private String url;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getIdNum() {
        return idNum;
    }
    public void setIdNum(String idNum) {
        this.idNum = idNum;
    }
    public String getSecurityCode() {
        return securityCode;
    }
    public void setSecurityCode(String securityCode) {
        this.securityCode = securityCode;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getBirth() {
        return birth;
    }
    public void setBirth(String birth) {
        this.birth = birth;
    }
    public int getSex() {
        return sex;
    }
    public void setSex(int sex) {
        this.sex = sex;
    }
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
    public String getProperties() {
        return properties;
    }
    public void setProperties(String properties) {
        this.properties = properties;
    }
    public String getEatHabit() {
        return eatHabit;
    }
    public void setEatHabit(String eatHabit) {
        this.eatHabit = eatHabit;
    }
    public String getLifeHabit() {
        return lifeHabit;
    }
    public void setLifeHabit(String lifeHabit) {
        this.lifeHabit = lifeHabit;
    }
    public String getDisEatHabit() {
        return disEatHabit;
    }
    public void setDisEatHabit(String disEatHabit) {
        this.disEatHabit = disEatHabit;
    }
    public String getDisLifeHabit() {
        return disLifeHabit;
    }
    public void setDisLifeHabit(String disLifeHabit) {
        this.disLifeHabit = disLifeHabit;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getDialect() {
        return dialect;
    }
    public void setDialect(String dialect) {
        this.dialect = dialect;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
app/src/main/java/com/application/zhangshi_app_android/bean/PropertyBean.java
New file
@@ -0,0 +1,117 @@
package com.application.zhangshi_app_android.bean;
import java.io.Serializable;
/**
 * @author Ljj
 * @date 2023.04.21. 19:11
 * @desc 个人财产 Bean
 */
public class PropertyBean implements Serializable {
    private String type;
    private String name;
    private String price;//价值
    private String createTime;//时间
    private String term;//期限
    private String status;//变更或注销
    private String propertyRight;//产权
    private String location;//位置
    private String remark;//备注
    private String url;//电子文件
    public PropertyBean() {
    }
    public PropertyBean(String type, String name, String price, String createTime, String term, String status, String propertyRight, String location, String remark, String url) {
        this.type = type;
        this.name = name;
        this.price = price;
        this.createTime = createTime;
        this.term = term;
        this.status = status;
        this.propertyRight = propertyRight;
        this.location = location;
        this.remark = remark;
        this.url = url;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPrice() {
        return price;
    }
    public void setPrice(String price) {
        this.price = price;
    }
    public String getCreateTime() {
        return createTime;
    }
    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }
    public String getTerm() {
        return term;
    }
    public void setTerm(String term) {
        this.term = term;
    }
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    public String getPropertyRight() {
        return propertyRight;
    }
    public void setPropertyRight(String propertyRight) {
        this.propertyRight = propertyRight;
    }
    public String getLocation() {
        return location;
    }
    public void setLocation(String location) {
        this.location = location;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
app/src/main/java/com/application/zhangshi_app_android/data/DataRepository.java
@@ -10,6 +10,9 @@
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaRequestBean;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaResponseBean;
import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean;
import com.application.zhangshi_app_android.bean.HonorCollectionResponseBean;
import com.application.zhangshi_app_android.bean.IncomeAndExpensesResponseBean;
import com.application.zhangshi_app_android.bean.LittleDoctorResponseBean;
import com.application.zhangshi_app_android.bean.LoginRequestBean;
import com.application.zhangshi_app_android.bean.LoginResponseBean;
import com.application.zhangshi_app_android.bean.UploadFileResponseBean;
@@ -138,6 +141,28 @@
    }
    /**
     * 获取家庭荣誉
     */
    public Observable<ResultData<HonorCollectionResponseBean>> getHonorCollections(Map<String, Object> map) {
        return mHttpDataSource.getHonorCollections(map);
    }
    /**
     * 获取小医生
     */
    public Observable<ResultData<LittleDoctorResponseBean>> getLittleDoctors(Map<String, Object> map) {
        return mHttpDataSource.getLittleDoctors(map);
    }
    /**
     *  获取收支台账
     */
    public Observable<ResultData<IncomeAndExpensesResponseBean>> getIncomeAndExpenses(Map<String, Object> map) {
        return mHttpDataSource.getIncomeAndExpenses(map);
    }
    /**
     * @see LocalDataSourceImpl
     */
}
app/src/main/java/com/application/zhangshi_app_android/data/source/HttpDataSource.java
@@ -7,6 +7,9 @@
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaRequestBean;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaResponseBean;
import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean;
import com.application.zhangshi_app_android.bean.HonorCollectionResponseBean;
import com.application.zhangshi_app_android.bean.IncomeAndExpensesResponseBean;
import com.application.zhangshi_app_android.bean.LittleDoctorResponseBean;
import com.application.zhangshi_app_android.bean.LoginRequestBean;
import com.application.zhangshi_app_android.bean.LoginResponseBean;
import com.application.zhangshi_app_android.bean.UploadFileResponseBean;
@@ -71,4 +74,19 @@
     * 获取家庭设备
     */
    Observable<ResultData<HomeDevicesResponseBean>> getHomeDevices(Map<String, Object> paramsMap);
    /**
     * 获取家庭荣誉
     */
    Observable<ResultData<HonorCollectionResponseBean>> getHonorCollections(Map<String, Object> map);
    /**
     * 获取小医生
     */
    Observable<ResultData<LittleDoctorResponseBean>> getLittleDoctors(Map<String, Object> map);
    /**
     * 获取收支
     */
    Observable<ResultData<IncomeAndExpensesResponseBean>> getIncomeAndExpenses(Map<String, Object> map);
}
app/src/main/java/com/application/zhangshi_app_android/data/source/http/ApiService.java
@@ -7,6 +7,9 @@
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaRequestBean;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaResponseBean;
import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean;
import com.application.zhangshi_app_android.bean.HonorCollectionResponseBean;
import com.application.zhangshi_app_android.bean.IncomeAndExpensesResponseBean;
import com.application.zhangshi_app_android.bean.LittleDoctorResponseBean;
import com.application.zhangshi_app_android.bean.LoginRequestBean;
import com.application.zhangshi_app_android.bean.LoginResponseBean;
import com.application.zhangshi_app_android.bean.UploadFileResponseBean;
@@ -89,6 +92,24 @@
    /**
     * 获取家庭设备
     */
    @GET("")//TODO 获取家庭设备
    @GET("/zfEquipment/all")
    Observable<ResultData<HomeDevicesResponseBean>> getHomeDevices(@QueryMap Map<String, Object> paramsMap);
    /**
     * 获取家庭荣誉
     */
    @GET("/zfCollection/all")
    Observable<ResultData<HonorCollectionResponseBean>> getHonorCollections(@QueryMap Map<String, Object> paramsMap);
    /**
     * 获取小医生
     */
    @GET("/zfDoctor/all")
    Observable<ResultData<LittleDoctorResponseBean>> getLittleDoctors(@QueryMap Map<String, Object> map);
    /**
     * 获取收支
     */
    @GET("/zfEconomy/all")
    Observable<ResultData<IncomeAndExpensesResponseBean>> getIncomeAndExpenses(@QueryMap Map<String, Object> map);
}
app/src/main/java/com/application/zhangshi_app_android/data/source/http/HttpDataSourceImpl.java
@@ -8,6 +8,9 @@
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaRequestBean;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaResponseBean;
import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean;
import com.application.zhangshi_app_android.bean.HonorCollectionResponseBean;
import com.application.zhangshi_app_android.bean.IncomeAndExpensesResponseBean;
import com.application.zhangshi_app_android.bean.LittleDoctorResponseBean;
import com.application.zhangshi_app_android.bean.LoginRequestBean;
import com.application.zhangshi_app_android.bean.LoginResponseBean;
import com.android.app_base.base.BaseConfig;
@@ -125,4 +128,28 @@
    public Observable<ResultData<HomeDevicesResponseBean>> getHomeDevices(Map<String, Object> paramsMap) {
        return apiService.getHomeDevices(paramsMap);
    }
    /**
     * 获取家庭荣誉
     */
    @Override
    public Observable<ResultData<HonorCollectionResponseBean>> getHonorCollections(Map<String, Object> map) {
        return apiService.getHonorCollections(map);
    }
    /**
     * 获取小医生
     */
    @Override
    public Observable<ResultData<LittleDoctorResponseBean>> getLittleDoctors(Map<String, Object> map) {
        return apiService.getLittleDoctors(map);
    }
    /**
     * 获取收支
     */
    @Override
    public Observable<ResultData<IncomeAndExpensesResponseBean>> getIncomeAndExpenses(Map<String, Object> map) {
        return apiService.getIncomeAndExpenses(map);
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/DLBaseActivity.java
@@ -1,6 +1,7 @@
package com.application.zhangshi_app_android.ui;
import android.graphics.Color;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
@@ -15,10 +16,18 @@
import com.android.app_base.base.viewmodel.BaseViewModel;
import com.android.app_base.manager.AppManager;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.ui.function.CleanStorageActivity;
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.PetActivity;
import com.application.zhangshi_app_android.ui.function.PropertyActivity;
import com.hjq.bar.TitleBar;
import java.util.HashMap;
@@ -68,24 +77,24 @@
    };
    @Override
    protected void onResume() {
        super.onResume();
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (mDrawerLayout != null) {
            classMap.put(null,(LinearLayout) findViewById(R.id.dl_home_root_net));
            classMap.put(FamilyMemorabiliaActivity.class,(LinearLayout) findViewById(R.id.dl_family_memorabilia));
            classMap.put(FamilyAssetsActivity.class,(LinearLayout) findViewById(R.id.dl_family_assets));
            classMap.put(HomeDevicesActivity.class,(LinearLayout) findViewById(R.id.dl_home_devices));
            classMap.put(null,(LinearLayout) findViewById(R.id.dl_honor_collection));
            classMap.put(null,(LinearLayout) findViewById(R.id.dl_little_doctor));
            classMap.put(null,(LinearLayout) findViewById(R.id.dl_clean_storage));
            classMap.put(HonorCollectionActivity.class,(LinearLayout) findViewById(R.id.dl_honor_collection));
            classMap.put(LittleDoctorActivity.class,(LinearLayout) findViewById(R.id.dl_little_doctor));
            classMap.put(CleanStorageActivity.class,(LinearLayout) findViewById(R.id.dl_clean_storage));
            classMap.put(null,(LinearLayout) findViewById(R.id.dl_contacts));
            classMap.put(null,(LinearLayout) findViewById(R.id.dl_pet));
            classMap.put(null,(LinearLayout) findViewById(R.id.dl_income_and_expenses));
            classMap.put(PetActivity.class,(LinearLayout) findViewById(R.id.dl_pet));
            classMap.put(IncomeAndExpensesActivity.class,(LinearLayout) findViewById(R.id.dl_income_and_expenses));
            classMap.put(GrowthExperienceActivity.class,(LinearLayout) findViewById(R.id.dl_growing_up));
            classMap.put(null,(LinearLayout) findViewById(R.id.dl_marriage));
            classMap.put(null,(LinearLayout) findViewById(R.id.dl_property));
            classMap.put(null,(LinearLayout) findViewById(R.id.dl_hundred_wish));
            classMap.put(MarriageActivity.class,(LinearLayout) findViewById(R.id.dl_marriage));
            classMap.put(PropertyActivity.class,(LinearLayout) findViewById(R.id.dl_property));
            classMap.put(HundredWishActivity.class,(LinearLayout) findViewById(R.id.dl_hundred_wish));
            classMap.put(null,(LinearLayout) findViewById(R.id.dl_health_care));
            classMap.put(null,(LinearLayout) findViewById(R.id.dl_certificate_of_honor));
            classMap.put(null,(LinearLayout) findViewById(R.id.dl_privacy));
app/src/main/java/com/application/zhangshi_app_android/ui/function/CertificateOfHonorActivity.java
New file
@@ -0,0 +1,58 @@
package com.application.zhangshi_app_android.ui.function;
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.CertificateOfHonorRvAdapter;
import com.application.zhangshi_app_android.adapter.HundredWishRvAdapter;
import com.application.zhangshi_app_android.databinding.ActivityCertificateOfHonorBinding;
import com.application.zhangshi_app_android.databinding.ActivityHundredWishBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
/**
 * @author Ljj
 * @date 2023.04.23. 22:29
 * @desc 荣誉证书 Activity
 */
public class CertificateOfHonorActivity extends DLBaseActivity<ActivityCertificateOfHonorBinding, CertificateOfHonorActivityViewModel> {
    private CertificateOfHonorRvAdapter adapter;
    @Override
    public int getLayoutId() {
        return R.layout.activity_certificate_of_honor;
    }
    @Override
    public int getVariableId() {
        return BR.viewModel;
    }
    @Override
    public void initParam() {
    }
    @Override
    public void initView() {
        adapter = new CertificateOfHonorRvAdapter(this);
        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));
        itemDecoration.setFirstTop((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20));
        binding.recyclerView.addItemDecoration(itemDecoration);
        binding.recyclerView.setAdapter(adapter);
    }
    @Override
    public void initData() {
        viewModel.getHundredWish();
    }
    @Override
    public void initLiveDataObserve() {
        viewModel.getDataListLiveData().observe(this, dataList -> {
            adapter.setData(dataList);
        });
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/CertificateOfHonorActivityViewModel.java
New file
@@ -0,0 +1,61 @@
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.CertificateOfHonorBean;
import com.application.zhangshi_app_android.bean.HundredWishBean;
import com.application.zhangshi_app_android.data.DataRepository;
import java.util.ArrayList;
import java.util.List;
/**
 * @author Ljj
 * @date 2023.04.23. 22:31
 * @desc
 */
public class CertificateOfHonorActivityViewModel  extends BaseViewModel<DataRepository> {
    private MutableLiveData<List<CertificateOfHonorBean>> dataListLiveData;
    public CertificateOfHonorActivityViewModel(@NonNull Application application) {
        super(application);
    }
    @Override
    protected DataRepository initModel() {
        return DataRepository.getInstance();
    }
    public MutableLiveData<List<CertificateOfHonorBean>> getDataListLiveData() {
        if (dataListLiveData == null) {
            dataListLiveData = new MutableLiveData<>();
        }
        return dataListLiveData;
    }
    public void setDataListLiveData(MutableLiveData<List<CertificateOfHonorBean>> dataListLiveData) {
        this.dataListLiveData = dataListLiveData;
    }
    public void getHundredWish() {
        List<CertificateOfHonorBean> beans =  new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            CertificateOfHonorBean bean = new CertificateOfHonorBean();
            bean.setName("荣誉证书" + i);
            bean.setTime("2023-01-01");
            bean.setType("类别" + i);
            bean.setCertificateNumber("证号" + i);
            bean.setLevel("级别" + i);
            bean.setEffectiveTime("2030-01-01");
            bean.setGetTime("2020-01-01");
            bean.setLocation("存放位置" + i);
            bean.setRemark("备注");
            beans.add(bean);
        }
        dataListLiveData.setValue(beans);
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/CertificateOfHonorDetailActivity.java
New file
@@ -0,0 +1,102 @@
package com.application.zhangshi_app_android.ui.function;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import androidx.recyclerview.widget.GridLayoutManager;
import com.application.zhangshi_app_android.BR;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.adapter.ImageRvAdapter;
import com.application.zhangshi_app_android.bean.CertificateOfHonorBean;
import com.application.zhangshi_app_android.bean.HundredWishBean;
import com.application.zhangshi_app_android.databinding.ActivityCertificateOfHonorDetailBinding;
import com.application.zhangshi_app_android.databinding.ActivityHundredWishDetailBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
 * @author Ljj
 * @date 2023.04.23. 22:49
 * @desc
 */
public class CertificateOfHonorDetailActivity extends DLBaseActivity<ActivityCertificateOfHonorDetailBinding,CertificateOfHonorDetailActivityViewModel> {
    private ImageRvAdapter adapter;
    @Override
    public int getLayoutId() {
        return R.layout.activity_certificate_of_honor_detail;
    }
    @Override
    public int getVariableId() {
        return BR.viewModel;
    }
    @Override
    public void initParam() {
        if (getIntent().hasExtra("bean")){
            viewModel.getBeanLiveData().setValue((CertificateOfHonorBean) getIntent().getSerializableExtra("bean"));
        }
    }
    @Override
    public void initView() {
        adapter = new ImageRvAdapter(this);
        GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
        binding.rvImage.setLayoutManager(gridLayoutManager);
        binding.rvImage.setNestedScrollingEnabled(false);
        setIsEdited(false);
    }
    @Override
    public void initData() {
    }
    @Override
    public void initLiveDataObserve() {
        viewModel.getBeanLiveData().observe(this,bean -> {
            if (bean!=null){
                String url = bean.getUrl();
                if (url == null||url.isEmpty()){
                    return;
                }
                List<String> list;
                if (url.contains(",")){
                    String[] split = url.split(",");
                    list = new ArrayList<>(Arrays.asList(split));
                }else {
                    list = new ArrayList<>();
                    list.add(url);
                }
                adapter.setData(list);
            }
        });
    }
    public void setIsEdited(boolean isEdited){
        disableAllEditText(getContentView(),isEdited);
        adapter.setIsEdited(isEdited);
    }
    public void disableAllEditText(ViewGroup viewGroup, boolean isEdited) {
        for (int i = 0; i < viewGroup.getChildCount(); i++) {
            View child = viewGroup.getChildAt(i);
            if (child instanceof ViewGroup) {
                disableAllEditText((ViewGroup) child,isEdited);
            } else if (child instanceof EditText) {
                child.setEnabled(isEdited);
                child.setFocusable(isEdited);
                child.setFocusableInTouchMode(isEdited);
                if (!isEdited){
                    child.clearFocus();
                }
            }
        }
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/CertificateOfHonorDetailActivityViewModel.java
New file
@@ -0,0 +1,41 @@
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.CertificateOfHonorBean;
import com.application.zhangshi_app_android.data.DataRepository;
/**
 * @author Ljj
 * @date 2023.04.23. 22:47
 * @desc 荣誉证书详情
 */
public class CertificateOfHonorDetailActivityViewModel extends BaseViewModel<DataRepository> {
    private MutableLiveData<CertificateOfHonorBean> beanLiveData;
    public CertificateOfHonorDetailActivityViewModel(@NonNull Application application) {
        super(application);
    }
    @Override
    protected DataRepository initModel() {
        return DataRepository.getInstance();
    }
    public MutableLiveData<CertificateOfHonorBean> getBeanLiveData() {
        if (beanLiveData == null) {
            beanLiveData = new MutableLiveData<>();
        }
        return beanLiveData;
    }
    public void setBeanLiveData(MutableLiveData<CertificateOfHonorBean> beanLiveData) {
        this.beanLiveData = beanLiveData;
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/CleanStorageActivity.java
New file
@@ -0,0 +1,57 @@
package com.application.zhangshi_app_android.ui.function;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
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.CleanStorageRvAdapter;
import com.application.zhangshi_app_android.adapter.LittleDoctorRvAdapter;
import com.application.zhangshi_app_android.databinding.ActivityCleanStorageBinding;
import com.application.zhangshi_app_android.databinding.ActivityLittleDoctorBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
public class CleanStorageActivity extends DLBaseActivity<ActivityCleanStorageBinding, CleanStorageActivityViewModel> {
    private CleanStorageRvAdapter adapter;
    @Override
    public int getLayoutId() {
        return R.layout.activity_clean_storage;
    }
    @Override
    public int getVariableId() {
        return BR.viewModel;
    }
    @Override
    public void initParam() {
    }
    @Override
    public void initView() {
        adapter = new CleanStorageRvAdapter(this);
        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));
        itemDecoration.setFirstTop((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20));
        binding.recyclerView.addItemDecoration(itemDecoration);
        binding.recyclerView.setAdapter(adapter);
    }
    @Override
    public void initData() {
        viewModel.getCleanStorages();
    }
    @Override
    public void initLiveDataObserve() {
        viewModel.getDataListLiveData().observe(this, dataList -> {
            adapter.setData(dataList);
        });
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/CleanStorageActivityViewModel.java
New file
@@ -0,0 +1,52 @@
package com.application.zhangshi_app_android.ui.function;
import android.app.Application;
import androidx.annotation.NonNull;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import com.android.app_base.base.viewmodel.BaseViewModel;
import com.application.zhangshi_app_android.bean.CleanStorageBean;
import com.application.zhangshi_app_android.data.DataRepository;
import java.util.ArrayList;
import java.util.List;
/**
 * @author Ljj
 * @date 2023.04.16. 18:56
 * @desc
 */
public class CleanStorageActivityViewModel extends BaseViewModel<DataRepository> {
    private MutableLiveData<List<CleanStorageBean>> dataListLiveData;
    public CleanStorageActivityViewModel(@NonNull Application application) {
        super(application);
    }
    @Override
    protected DataRepository initModel() {
        return DataRepository.getInstance();
    }
    public MutableLiveData<List<CleanStorageBean>> getDataListLiveData() {
        if (dataListLiveData == null) {
            dataListLiveData = new MutableLiveData<>();
        }
        return dataListLiveData;
    }
    public void setDataListLiveData(MutableLiveData<List<CleanStorageBean>> dataListLiveData) {
        this.dataListLiveData = dataListLiveData;
    }
    public void getCleanStorages() {
        List<CleanStorageBean> cleanStorageBeans =  new ArrayList<>();
        cleanStorageBeans.add(new CleanStorageBean(1,"保洁","全体","玻璃窗","玻璃水洗","杂物房","窗户","擦干",null));
        cleanStorageBeans.add(new CleanStorageBean(1,"保洁","全体","玻璃窗","玻璃水洗","杂物房","窗户","擦干",null));
        cleanStorageBeans.add(new CleanStorageBean(1,"保洁","全体","玻璃窗","玻璃水洗","杂物房","窗户","擦干",null));
        cleanStorageBeans.add(new CleanStorageBean(1,"保洁","全体","玻璃窗","玻璃水洗","杂物房","窗户","擦干",null));
        dataListLiveData.setValue(cleanStorageBeans);
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/CleanStorageDetailActivity.java
New file
@@ -0,0 +1,99 @@
package com.application.zhangshi_app_android.ui.function;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import com.application.zhangshi_app_android.BR;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.adapter.ImageRvAdapter;
import com.application.zhangshi_app_android.bean.CleanStorageBean;
import com.application.zhangshi_app_android.bean.LittleDoctorBean;
import com.application.zhangshi_app_android.databinding.ActivityCleanStorageDetailBinding;
import com.application.zhangshi_app_android.databinding.ActivityLittleDoctorDetailBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class CleanStorageDetailActivity extends DLBaseActivity<ActivityCleanStorageDetailBinding,CleanStorageDetailActivityViewModel> {
    private ImageRvAdapter adapter;
    @Override
    public int getLayoutId() {
        return R.layout.activity_clean_storage_detail;
    }
    @Override
    public int getVariableId() {
        return BR.viewModel;
    }
    @Override
    public void initParam() {
        if (getIntent().hasExtra("bean")){
            viewModel.getBeanLiveData().setValue((CleanStorageBean) getIntent().getSerializableExtra("bean"));
        }
    }
    @Override
    public void initView() {
        adapter = new ImageRvAdapter(this);
        GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
        binding.rvImage.setLayoutManager(gridLayoutManager);
        binding.rvImage.setNestedScrollingEnabled(false);
        setIsEdited(false);
    }
    @Override
    public void initData() {
    }
    @Override
    public void initLiveDataObserve() {
        viewModel.getBeanLiveData().observe(this,bean -> {
            if (bean!=null){
                String url = bean.getUrl();
                if (url == null||url.isEmpty()){
                    return;
                }
                List<String> list;
                if (url.contains(",")){
                    String[] split = url.split(",");
                    list = new ArrayList<>(Arrays.asList(split));
                }else {
                    list = new ArrayList<>();
                    list.add(url);
                }
                adapter.setData(list);
            }
        });
    }
    public void setIsEdited(boolean isEdited){
        disableAllEditText(getContentView(),isEdited);
        adapter.setIsEdited(isEdited);
    }
    public void disableAllEditText(ViewGroup viewGroup, boolean isEdited) {
        for (int i = 0; i < viewGroup.getChildCount(); i++) {
            View child = viewGroup.getChildAt(i);
            if (child instanceof ViewGroup) {
                disableAllEditText((ViewGroup) child,isEdited);
            } else if (child instanceof EditText) {
                child.setEnabled(isEdited);
                child.setFocusable(isEdited);
                child.setFocusableInTouchMode(isEdited);
                if (!isEdited){
                    child.clearFocus();
                }
            }
        }
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/CleanStorageDetailActivityViewModel.java
New file
@@ -0,0 +1,41 @@
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.CleanStorageBean;
import com.application.zhangshi_app_android.data.DataRepository;
/**
 * @author Ljj
 * @date 2023.04.16. 21:53
 * @desc
 */
public class CleanStorageDetailActivityViewModel extends BaseViewModel<DataRepository> {
    private MutableLiveData<CleanStorageBean> beanLiveData;
    public CleanStorageDetailActivityViewModel(@NonNull Application application) {
        super(application);
    }
    @Override
    protected DataRepository initModel() {
        return DataRepository.getInstance();
    }
    public MutableLiveData<CleanStorageBean> getBeanLiveData() {
        if (beanLiveData == null) {
            beanLiveData = new MutableLiveData<>();
        }
        return beanLiveData;
    }
    public void setBeanLiveData(MutableLiveData<CleanStorageBean> beanLiveData) {
        this.beanLiveData = beanLiveData;
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivity.java
@@ -62,12 +62,13 @@
    @Override
    public void initView() {
        adapter = new ImageRvAdapter(this);
        adapter = new ImageRvAdapter(this,viewModel);
        GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
        binding.rvImage.setLayoutManager(gridLayoutManager);
        binding.rvImage.setNestedScrollingEnabled(false);
        View footerView = View.inflate(this,R.layout.item_image_footer,null);
        binding.rvImage.addFooterView(footerView);
        binding.rvImage.requestLayout();
        footerView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
@@ -108,7 +109,7 @@
            // 设置pop透明效果
            popupWindow.setBackgroundDrawable(new ColorDrawable(0x0000));
            // 设置pop出入动画
            popupWindow.setAnimationStyle(com.android.app_base.R.style.pop_add);
            popupWindow.setAnimationStyle(com.android.app_base.R.style.pop_operate);
            // 设置pop获取焦点,如果为false点击返回按钮会退出当前Activity,如果pop中有Editor的话,focusable必须要为true
            popupWindow.setFocusable(true);
            // 设置pop可点击,为false点击事件无效,默认为true
app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyAssetsActivity.java
@@ -6,18 +6,13 @@
import android.widget.PopupWindow;
import androidx.databinding.library.baseAdapters.BR;
import androidx.lifecycle.Observer;
import com.android.app_base.utils.ScreenSizeUtils;
import com.android.app_base.widget.LinearItemDecoration;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.adapter.FamilyAssetsRvAdapter;
import com.application.zhangshi_app_android.adapter.FamilyMemorabiliaRvAdapter;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
import com.application.zhangshi_app_android.databinding.ActivityFamilyAssetsBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
import java.util.List;
/**
 * @author Ljj
@@ -48,6 +43,13 @@
    @Override
    public void initView() {
        binding.refreshLayout.setEnableRefresh(false);
        binding.refreshLayout.setEnableLoadMore(true);
        binding.refreshLayout.setEnableOverScrollDrag(true);
        binding.refreshLayout.setOnLoadMoreListener(refreshLayout -> {
//            viewModel.getMoreFamilyMemorabilia();
        });
        adapter = new FamilyAssetsRvAdapter(this);
        LinearItemDecoration itemDecoration = new LinearItemDecoration();
        itemDecoration.setBottomSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_12));
@@ -93,7 +95,7 @@
        // 设置pop透明效果
        popupWindow.setBackgroundDrawable(new ColorDrawable(0x0000));
        // 设置pop出入动画
        popupWindow.setAnimationStyle(com.android.app_base.R.style.pop_add);
        popupWindow.setAnimationStyle(com.android.app_base.R.style.pop_operate);
        // 设置pop获取焦点,如果为false点击返回按钮会退出当前Activity,如果pop中有Editor的话,focusable必须要为true
        popupWindow.setFocusable(true);
        // 设置pop可点击,为false点击事件无效,默认为true
app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivity.java
@@ -1,6 +1,5 @@
package com.application.zhangshi_app_android.ui.function;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.ColorDrawable;
import android.view.KeyEvent;
@@ -8,22 +7,15 @@
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.PopupWindow;
import android.widget.TextView;
import androidx.annotation.IdRes;
import androidx.annotation.LayoutRes;
import androidx.appcompat.app.AlertDialog;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ViewDataBinding;
import androidx.drawerlayout.widget.DrawerLayout;
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.base.view.BaseActivity;
import com.android.app_base.manager.AppManager;
import com.android.app_base.utils.ScreenSizeUtils;
import com.android.app_base.widget.LinearItemDecoration;
@@ -34,7 +26,6 @@
import com.application.zhangshi_app_android.databinding.ActivityFamilyMemorabiliaBinding;
import com.application.zhangshi_app_android.databinding.PopSearchBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
import com.hjq.bar.TitleBar;
import java.util.List;
@@ -67,6 +58,13 @@
    @Override
    public void initView() {
        binding.refreshLayout.setEnableRefresh(false);
        binding.refreshLayout.setEnableLoadMore(true);
        binding.refreshLayout.setEnableOverScrollDrag(true);
            binding.refreshLayout.setOnLoadMoreListener(refreshLayout -> {
            viewModel.getMoreFamilyMemorabilia();
        });
        adapter = new FamilyMemorabiliaRvAdapter(this,viewModel);
        LinearItemDecoration itemDecoration = new LinearItemDecoration();
        itemDecoration.setBottomSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_12));
@@ -87,6 +85,7 @@
        });
        binding.ivSearchType.setOnClickListener(v -> {
            hideSoftKeyboard();
            mSearchPopupWindow.setWidth(binding.layoutSearch.getMeasuredWidth());
            mSearchPopupWindow.showAsDropDown(binding.layoutSearch,0,0);
        });
@@ -148,9 +147,9 @@
                    return;
                }
                if (familyMemorabiliaBeans.isEmpty()){
                    viewModel.getOperateTypeLiveData().postValue(1);
                    viewModel.getOperateTypeLiveData().setValue(1);
                }else{
                    viewModel.getOperateTypeLiveData().postValue(2);
                    viewModel.getOperateTypeLiveData().setValue(2);
                }
            }
        });
@@ -158,6 +157,12 @@
            @Override
            public void onChanged(List<FamilyMemorabiliaBean> familyMemorabiliaBeans) {
                adapter.setData(familyMemorabiliaBeans);
            }
        });
        viewModel.getMoreListLiveData().observe(this, new Observer<List<FamilyMemorabiliaBean>>() {
            @Override
            public void onChanged(List<FamilyMemorabiliaBean> familyMemorabiliaBeans) {
                adapter.addData(familyMemorabiliaBeans);
            }
        });
        viewModel.getOperateTypeLiveData().observe(this, integer -> {
@@ -175,19 +180,20 @@
                adapter.setCheckable(true);
            }else if (integer == 2){
                binding.ivOperate.setBackgroundResource(R.drawable.ic_delete_white);
                new UIDialog.Builder(this)
                        .setTitle("您确定要删除项目吗")
                        .setContent("项目删除后将无法恢复")
                        .setConfirm("确定")
                        .setCancel("取消")
                        .setListener(new UIDialog.OnListener() {
                            @Override
                            public void onConfirm(BaseDialog dialog) {
                                viewModel.delete();
                            }
                        })
                        .show();
                adapter.setCheckable(true);
                binding.ivOperate.setOnClickListener(v -> {
                    new UIDialog.Builder(this)
                            .setTitle("您确定要删除项目吗")
                            .setContent("项目删除后将无法恢复")
                            .setConfirm("确定")
                            .setCancel("取消")
                            .setListener(new UIDialog.OnListener() {
                                @Override
                                public void onConfirm(BaseDialog dialog) {
                                    viewModel.delete();
                                }
                            })
                            .show();
                });
            }
        });
    }
@@ -203,10 +209,10 @@
        // 设置pop透明效果
        popupWindow.setBackgroundDrawable(new ColorDrawable(0x0000));
        // 设置pop出入动画
        popupWindow.setAnimationStyle(com.android.app_base.R.style.pop_add);
        // 设置pop获取焦点,如果为false点击返回按钮会退出当前Activity,如果pop中有Editor的话,focusable必须要为true
        popupWindow.setAnimationStyle(com.android.app_base.R.style.pop_operate);
//        // 设置pop获取焦点,如果为false点击返回按钮会退出当前Activity,如果pop中有Editor的话,focusable必须要为true
        popupWindow.setFocusable(true);
        // 设置pop可点击,为false点击事件无效,默认为true
//        // 设置pop可点击,为false点击事件无效,默认为true
        popupWindow.setTouchable(true);
        // 设置点击pop外侧消失,默认为false;在focusable为true时点击外侧始终消失
        popupWindow.setOutsideTouchable(false);
@@ -221,10 +227,17 @@
    }
    @Override
    protected void dataFinish() {
        super.dataFinish();
        binding.refreshLayout.finishLoadMore();
    }
    @Override
    protected void hide() {
        super.hide();
        binding.layoutDataNull.setVisibility(View.GONE);
        binding.recyclerView.setVisibility(View.VISIBLE);
        binding.refreshLayout.finishLoadMore();
    }
    @Override
@@ -243,4 +256,15 @@
            mOperatePopupWindow.dismiss();
        }
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (mSearchPopupWindow != null){
            mSearchPopupWindow.dismiss();
        }
        if (mOperatePopupWindow != null){
            mOperatePopupWindow.dismiss();
        }
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivityViewModel.java
@@ -29,6 +29,7 @@
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Action;
/**
 * @author Ljj
@@ -41,7 +42,8 @@
    private MutableLiveData<List<FamilyMemorabiliaBean>> dataListLiveData;//所有数据
    private MutableLiveData<Integer> operateTypeLiveData;//操作类型 0 选择操作 1.完成 2.删除
    private MutableLiveData<FamilyMemorabiliaRequestBean> requestBeanMutableLiveData;
    private MutableLiveData<FamilyMemorabiliaRequestBean> requestBeanMutableLiveData;//请求参数
    private MutableLiveData<List<FamilyMemorabiliaBean>> moreListLiveData;//下拉加载数据
    public FamilyMemorabiliaActivityViewModel(@NonNull Application application) {
        super(application);
    }
@@ -54,9 +56,7 @@
     * 获取家大事记
     */
    public void getFamilyMemorabilia() {
        if (getRequestBeanMutableLiveData().getValue() == null){
            getRequestBeanMutableLiveData().setValue(new FamilyMemorabiliaRequestBean());
        }
        System.out.println(getRequestBeanMutableLiveData().getValue());
        model.getFamilyMemorabilia(getRequestBeanMutableLiveData().getValue().getMap())
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new Observer<ResultData<FamilyMemorabiliaResponseBean>>() {
@@ -73,6 +73,50 @@
                            }else {
                                changeStateView(StateViewEnum.HIDE);
                                dataListLiveData.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 getMoreFamilyMemorabilia() {
        requestBeanMutableLiveData.getValue().setPageNum(requestBeanMutableLiveData.getValue().getPageNum() + 1);
        model.getFamilyMemorabilia(getRequestBeanMutableLiveData().getValue().getMap())
                .compose(RxUtils.schedulersTransformer())
                .doFinally(new Action() {
                    @Override
                    public void run() throws Exception {
                        changeStateView(StateViewEnum.DATA_FINISH);
                    }
                })
                .subscribe(new Observer<ResultData<FamilyMemorabiliaResponseBean>>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        addSubscribe(d);
                    }
                    @Override
                    public void onNext(ResultData<FamilyMemorabiliaResponseBean> 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());
@@ -152,6 +196,20 @@
        this.checkListLiveData = checkListLiveData;
    }
    public MutableLiveData<FamilyMemorabiliaRequestBean> getRequestBeanMutableLiveData() {
        if (requestBeanMutableLiveData == null){
            requestBeanMutableLiveData = new MutableLiveData<>();
        }
        if (requestBeanMutableLiveData.getValue() == null){
            requestBeanMutableLiveData.setValue(new FamilyMemorabiliaRequestBean());
        }
        return requestBeanMutableLiveData;
    }
    public void setRequestBeanMutableLiveData(MutableLiveData<FamilyMemorabiliaRequestBean> requestBeanMutableLiveData) {
        this.requestBeanMutableLiveData = requestBeanMutableLiveData;
    }
    public MutableLiveData<List<FamilyMemorabiliaBean>> getDataListLiveData() {
        if (dataListLiveData == null){
            dataListLiveData = new MutableLiveData<>();
@@ -163,19 +221,15 @@
        this.dataListLiveData = dataListLiveData;
    }
    @NonNull
    public MutableLiveData<FamilyMemorabiliaRequestBean> getRequestBeanMutableLiveData() {
        if (requestBeanMutableLiveData == null){
            requestBeanMutableLiveData = new MutableLiveData<>();
    public MutableLiveData<List<FamilyMemorabiliaBean>> getMoreListLiveData() {
        if (moreListLiveData == null){
            moreListLiveData = new MutableLiveData<>();
        }
        if (requestBeanMutableLiveData.getValue()==null){
            requestBeanMutableLiveData.postValue(new FamilyMemorabiliaRequestBean());
        }
        return requestBeanMutableLiveData;
        return moreListLiveData;
    }
    public void setRequestBeanMutableLiveData(MutableLiveData<FamilyMemorabiliaRequestBean> requestBeanMutableLiveData) {
        this.requestBeanMutableLiveData = requestBeanMutableLiveData;
    public void setMoreListLiveData(MutableLiveData<List<FamilyMemorabiliaBean>> moreListLiveData) {
        this.moreListLiveData = moreListLiveData;
    }
    public MutableLiveData<Integer> getOperateTypeLiveData() {
@@ -190,6 +244,10 @@
        this.operateTypeLiveData = operateTypeLiveData;
    }
    /**
     * 改变排序
     * @param b true 降序 false 升序
     */
    public void changeOrder(boolean b) {
        List<FamilyMemorabiliaBean> list = getDataListLiveData().getValue();
        if (list == null || list.isEmpty()){
app/src/main/java/com/application/zhangshi_app_android/ui/function/FunctionFragment.java
@@ -71,6 +71,33 @@
                AppManager.getAppManager().startActivity(GrowthExperienceActivity.class);
            }
        });
        binding.layoutHonorCollection.setOnClickListener(v->{
            AppManager.getAppManager().startActivity(HonorCollectionActivity.class);
        });
        binding.layoutLittleDoctor.setOnClickListener(v->{
            AppManager.getAppManager().startActivity(LittleDoctorActivity.class);
        });
        binding.layoutCleanStorage.setOnClickListener(v->{
            AppManager.getAppManager().startActivity(CleanStorageActivity.class);
        });
        binding.layoutPet.setOnClickListener(v->{
            AppManager.getAppManager().startActivity(PetActivity.class);
        });
        binding.layoutIncomeAndExpenses.setOnClickListener(v->{
            AppManager.getAppManager().startActivity(IncomeAndExpensesActivity.class);
        });
        binding.layoutProperty.setOnClickListener(v->{
            AppManager.getAppManager().startActivity(PropertyActivity.class);
        });
        binding.layoutHundredWish.setOnClickListener(v->{
            AppManager.getAppManager().startActivity(HundredWishActivity.class);
        });
        binding.layoutCertificateOfHonor.setOnClickListener(v->{
            AppManager.getAppManager().startActivity(CertificateOfHonorActivity.class);
        });
        binding.layoutMarriage.setOnClickListener(v->{
            AppManager.getAppManager().startActivity(MarriageActivity.class);
        });
    }
    @Override
app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesActivity.java
@@ -9,7 +9,6 @@
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.FamilyAssetsRvAdapter;
import com.application.zhangshi_app_android.adapter.HomeDevicesRvAdapter;
import com.application.zhangshi_app_android.databinding.ActivityHomeDevicesBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
@@ -86,7 +85,7 @@
        // 设置pop透明效果
        popupWindow.setBackgroundDrawable(new ColorDrawable(0x0000));
        // 设置pop出入动画
        popupWindow.setAnimationStyle(com.android.app_base.R.style.pop_add);
        popupWindow.setAnimationStyle(com.android.app_base.R.style.pop_operate);
        // 设置pop获取焦点,如果为false点击返回按钮会退出当前Activity,如果pop中有Editor的话,focusable必须要为true
        popupWindow.setFocusable(true);
        // 设置pop可点击,为false点击事件无效,默认为true
app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesActivityViewModel.java
@@ -5,22 +5,18 @@
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.FamilyAssetsBean;
import com.application.zhangshi_app_android.bean.FamilyAssetsResponseBean;
import com.application.zhangshi_app_android.bean.HomeDevicesBean;
import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean;
import com.application.zhangshi_app_android.data.DataRepository;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
@@ -48,14 +44,6 @@
    }
    public void getHomeDevices(){
        List<HomeDevicesBean> list = new ArrayList<>();
        list.add(new HomeDevicesBean(1,"电视","2023-04-03","张三","夏普液晶电视","客厅","4k超高清",""));
        list.add(new HomeDevicesBean(1,"电视","2023-04-02","张三","夏普液晶电视","客厅","4k超高清",""));
        list.add(new HomeDevicesBean(1,"电视","2023-04-01","张三","夏普液晶电视","客厅","4k超高清",""));
        if (list != null && !list.isEmpty()){
            dataListLiveData.postValue(list);
            return;
        }
        model.getHomeDevices(new HashMap<>())
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new Observer<ResultData<HomeDevicesResponseBean>>() {
@@ -118,8 +106,8 @@
                Date date1 = null;
                Date date2 = null;
                try {
                    date1 = format.parse(o1.getCreateTime());
                    date2 = format.parse(o2.getCreateTime());
                    date1 = format.parse(o1.getCreateDate());
                    date2 = format.parse(o2.getCreateDate());
                } catch (ParseException e) {
                    throw new RuntimeException(e);
                }
app/src/main/java/com/application/zhangshi_app_android/ui/function/HonorCollectionActivity.java
New file
@@ -0,0 +1,57 @@
package com.application.zhangshi_app_android.ui.function;
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.FamilyAssetsRvAdapter;
import com.application.zhangshi_app_android.adapter.HonorCollectionRvAdapter;
import com.application.zhangshi_app_android.databinding.ActivityHonorCollectionBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
/**
 * @author Ljj
 * @date 2023.04.14. 20:50
 * @desc 荣誉收藏 Activity
 */
public class HonorCollectionActivity extends DLBaseActivity<ActivityHonorCollectionBinding, HonorCollectionActivityViewModel> {
    private HonorCollectionRvAdapter adapter;
    @Override
    public int getLayoutId() {
        return R.layout.activity_honor_collection;
    }
    @Override
    public int getVariableId() {
        return BR.viewModel;
    }
    @Override
    public void initParam() {
    }
    @Override
    public void initView() {
        adapter = new HonorCollectionRvAdapter(this);
        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));
        itemDecoration.setFirstTop((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20));
        binding.recyclerView.addItemDecoration(itemDecoration);
        binding.recyclerView.setAdapter(adapter);
    }
    @Override
    public void initData() {
        viewModel.getHonorCollections();
    }
    @Override
    public void initLiveDataObserve() {
        viewModel.getDataListLiveData().observe(this, homeDevices -> {
            adapter.setData(homeDevices);
        });
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/HonorCollectionActivityViewModel.java
New file
@@ -0,0 +1,92 @@
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.HomeDevicesResponseBean;
import com.application.zhangshi_app_android.bean.HonorCollectionBean;
import com.application.zhangshi_app_android.bean.HonorCollectionRequestBean;
import com.application.zhangshi_app_android.bean.HonorCollectionResponseBean;
import com.application.zhangshi_app_android.data.DataRepository;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
/**
 * @author Ljj
 * @date 2023.04.14. 20:53
 * @desc 荣誉收藏 ViewModel
 */
public class HonorCollectionActivityViewModel extends BaseViewModel<DataRepository> {
    private MutableLiveData<List<HonorCollectionBean>> dataListLiveData;
    private HonorCollectionRequestBean requestBean = new HonorCollectionRequestBean();
    public HonorCollectionActivityViewModel(@NonNull Application application) {
        super(application);
    }
    @Override
    protected DataRepository initModel() {
        return DataRepository.getInstance();
    }
    public MutableLiveData<List<HonorCollectionBean>> getDataListLiveData() {
        if (dataListLiveData == null){
            dataListLiveData = new MutableLiveData<>();
        }
        return dataListLiveData;
    }
    public void setDataListLiveData(MutableLiveData<List<HonorCollectionBean>> dataListLiveData) {
        this.dataListLiveData = dataListLiveData;
    }
    public void getHonorCollections() {
        model.getHonorCollections(requestBean.toMap())
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new Observer<ResultData<HonorCollectionResponseBean>>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        addSubscribe(d);
                    }
                    @Override
                    public void onNext(ResultData<HonorCollectionResponseBean> data) {
                        if (data.getCode() == CODE_SUCCESS){
                            if (data.getData().getData().isEmpty()){
                                changeStateView(StateViewEnum.DATA_NULL);
                            }else {
                                changeStateView(StateViewEnum.HIDE);
                                dataListLiveData.postValue(data.getData().getData());
                            }
                        }else {
                            messageLiveData.postValue(data.getMsg());
                        }
                    }
                    @Override
                    public void onError(Throwable e) {
                        messageLiveData.postValue(e.getMessage());
                    }
                    @Override
                    public void onComplete() {
                    }
                });
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/HonorCollectionDetailActivity.java
New file
@@ -0,0 +1,99 @@
package com.application.zhangshi_app_android.ui.function;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import androidx.recyclerview.widget.GridLayoutManager;
import com.application.zhangshi_app_android.BR;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.adapter.ImageRvAdapter;
import com.application.zhangshi_app_android.bean.HonorCollectionBean;
import com.application.zhangshi_app_android.databinding.ActivityHonorCollectionDetailBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
 * @author Ljj
 * @date 2023.04.14. 22:21
 * @desc
 */
public class HonorCollectionDetailActivity extends DLBaseActivity<ActivityHonorCollectionDetailBinding, HonorCollectionDetailActivityViewModel> {
    private ImageRvAdapter adapter;
    @Override
    public int getLayoutId() {
        return R.layout.activity_honor_collection_detail;
    }
    @Override
    public int getVariableId() {
        return BR.viewModel;
    }
    @Override
    public void initParam() {
        if (getIntent().hasExtra("bean")){
            viewModel.getBeanLiveData().setValue((HonorCollectionBean) getIntent().getSerializableExtra("bean"));
        }
    }
    @Override
    public void initView() {
        adapter = new ImageRvAdapter(this);
        GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
        binding.rvImage.setLayoutManager(gridLayoutManager);
        binding.rvImage.setNestedScrollingEnabled(false);
        setIsEdited(false);
    }
    @Override
    public void initData() {
    }
    @Override
    public void initLiveDataObserve() {
        viewModel.getBeanLiveData().observe(this,bean -> {
            if (bean!=null){
                String url = bean.getUrl();
                if (url == null||url.isEmpty()){
                    return;
                }
                List<String> list;
                if (url.contains(",")){
                    String[] split = url.split(",");
                    list = new ArrayList<>(Arrays.asList(split));
                }else {
                    list = new ArrayList<>();
                    list.add(url);
                }
                adapter.setData(list);
            }
        });
    }
    public void setIsEdited(boolean isEdited){
        disableAllEditText(getContentView(),isEdited);
        adapter.setIsEdited(isEdited);
    }
    public void disableAllEditText(ViewGroup viewGroup, boolean isEdited) {
        for (int i = 0; i < viewGroup.getChildCount(); i++) {
            View child = viewGroup.getChildAt(i);
            if (child instanceof ViewGroup) {
                disableAllEditText((ViewGroup) child,isEdited);
            } else if (child instanceof EditText) {
                child.setEnabled(isEdited);
                child.setFocusable(isEdited);
                child.setFocusableInTouchMode(isEdited);
                if (!isEdited){
                    child.clearFocus();
                }
            }
        }
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/HonorCollectionDetailActivityViewModel.java
New file
@@ -0,0 +1,40 @@
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.HonorCollectionBean;
import com.application.zhangshi_app_android.data.DataRepository;
/**
 * @author Ljj
 * @date 2023.04.14. 22:24
 * @desc
 */
public class HonorCollectionDetailActivityViewModel extends BaseViewModel<DataRepository> {
    private MutableLiveData<HonorCollectionBean> beanLiveData;
    public HonorCollectionDetailActivityViewModel(@NonNull Application application) {
        super(application);
    }
    @Override
    protected DataRepository initModel() {
        return DataRepository.getInstance();
    }
    public MutableLiveData<HonorCollectionBean> getBeanLiveData() {
        if (beanLiveData == null){
            beanLiveData = new MutableLiveData<>();
        }
        return beanLiveData;
    }
    public void setBeanLiveData(MutableLiveData<HonorCollectionBean> beanLiveData) {
        this.beanLiveData = beanLiveData;
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/HundredWishActivity.java
New file
@@ -0,0 +1,58 @@
package com.application.zhangshi_app_android.ui.function;
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.HundredWishRvAdapter;
import com.application.zhangshi_app_android.adapter.PropertyRvAdapter;
import com.application.zhangshi_app_android.databinding.ActivityHundredWishBinding;
import com.application.zhangshi_app_android.databinding.ActivityPropertyBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
/**
 * @author Ljj
 * @date 2023.04.23. 14:15
 * @desc 百年心愿
 */
public class HundredWishActivity extends DLBaseActivity<ActivityHundredWishBinding, HundredWishActivityViewModel> {
    private HundredWishRvAdapter adapter;
    @Override
    public int getLayoutId() {
        return R.layout.activity_hundred_wish;
    }
    @Override
    public int getVariableId() {
        return BR.viewModel;
    }
    @Override
    public void initParam() {
    }
    @Override
    public void initView() {
        adapter = new HundredWishRvAdapter(this);
        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));
        itemDecoration.setFirstTop((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20));
        binding.recyclerView.addItemDecoration(itemDecoration);
        binding.recyclerView.setAdapter(adapter);
    }
    @Override
    public void initData() {
        viewModel.getHundredWish();
    }
    @Override
    public void initLiveDataObserve() {
        viewModel.getDataListLiveData().observe(this, dataList -> {
            adapter.setData(dataList);
        });
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/HundredWishActivityViewModel.java
New file
@@ -0,0 +1,70 @@
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.HundredWishBean;
import com.application.zhangshi_app_android.bean.PropertyBean;
import com.application.zhangshi_app_android.data.DataRepository;
import java.util.ArrayList;
import java.util.List;
/**
 * @author Ljj
 * @date 2023.04.23. 20:04
 * @desc
 */
public class HundredWishActivityViewModel extends BaseViewModel<DataRepository> {
    private MutableLiveData<List<HundredWishBean>> dataListLiveData;
    public HundredWishActivityViewModel(@NonNull Application application) {
        super(application);
    }
    @Override
    protected DataRepository initModel() {
        return DataRepository.getInstance();
    }
    public MutableLiveData<List<HundredWishBean>> getDataListLiveData() {
        if (dataListLiveData == null) {
            dataListLiveData = new MutableLiveData<>();
        }
        return dataListLiveData;
    }
    public void setDataListLiveData(MutableLiveData<List<HundredWishBean>> dataListLiveData) {
        this.dataListLiveData = dataListLiveData;
    }
    public void getHundredWish() {
        List<HundredWishBean> beans =  new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            HundredWishBean bean = new HundredWishBean();
            bean.setTitle("标题");
            bean.setCreateTime("2020-01-01");
            bean.setReason("始于何因");
            bean.setBeneficiary("受惠人");
            bean.setHeir("继承人");
            bean.setDifficulty("实现难度");
            bean.setIsEffective(1);
            bean.setRemark("备注");
            beans.add(bean);
        }
        HundredWishBean bean = new HundredWishBean();
        bean.setTitle("标题aaaaaaaaaaaaaa");
        bean.setCreateTime("2020-01-01");
        bean.setReason("始于何因");
        bean.setBeneficiary("受惠人");
        bean.setHeir("继承人");
        bean.setDifficulty("实现难度");
        bean.setIsEffective(1);
        bean.setRemark("备注");
        beans.add(bean);
        dataListLiveData.setValue(beans);
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/HundredWishDetailActivity.java
New file
@@ -0,0 +1,102 @@
package com.application.zhangshi_app_android.ui.function;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import androidx.recyclerview.widget.GridLayoutManager;
import com.application.zhangshi_app_android.BR;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.adapter.ImageRvAdapter;
import com.application.zhangshi_app_android.bean.HundredWishBean;
import com.application.zhangshi_app_android.bean.PropertyBean;
import com.application.zhangshi_app_android.databinding.ActivityHundredWishDetailBinding;
import com.application.zhangshi_app_android.databinding.ActivityPropertyDetailBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
 * @author Ljj
 * @date 2023.04.23. 20:18
 * @desc
 */
public class HundredWishDetailActivity extends DLBaseActivity<ActivityHundredWishDetailBinding,HundredWishDetailActivityViewModel> {
    private ImageRvAdapter adapter;
    @Override
    public int getLayoutId() {
        return R.layout.activity_hundred_wish_detail;
    }
    @Override
    public int getVariableId() {
        return BR.viewModel;
    }
    @Override
    public void initParam() {
        if (getIntent().hasExtra("bean")){
            viewModel.getBeanLiveData().setValue((HundredWishBean) getIntent().getSerializableExtra("bean"));
        }
    }
    @Override
    public void initView() {
        adapter = new ImageRvAdapter(this);
        GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
        binding.rvImage.setLayoutManager(gridLayoutManager);
        binding.rvImage.setNestedScrollingEnabled(false);
        setIsEdited(false);
    }
    @Override
    public void initData() {
    }
    @Override
    public void initLiveDataObserve() {
        viewModel.getBeanLiveData().observe(this,bean -> {
            if (bean!=null){
                String url = bean.getUrl();
                if (url == null||url.isEmpty()){
                    return;
                }
                List<String> list;
                if (url.contains(",")){
                    String[] split = url.split(",");
                    list = new ArrayList<>(Arrays.asList(split));
                }else {
                    list = new ArrayList<>();
                    list.add(url);
                }
                adapter.setData(list);
            }
        });
    }
    public void setIsEdited(boolean isEdited){
        disableAllEditText(getContentView(),isEdited);
        adapter.setIsEdited(isEdited);
    }
    public void disableAllEditText(ViewGroup viewGroup, boolean isEdited) {
        for (int i = 0; i < viewGroup.getChildCount(); i++) {
            View child = viewGroup.getChildAt(i);
            if (child instanceof ViewGroup) {
                disableAllEditText((ViewGroup) child,isEdited);
            } else if (child instanceof EditText) {
                child.setEnabled(isEdited);
                child.setFocusable(isEdited);
                child.setFocusableInTouchMode(isEdited);
                if (!isEdited){
                    child.clearFocus();
                }
            }
        }
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/HundredWishDetailActivityViewModel.java
New file
@@ -0,0 +1,42 @@
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.HundredWishBean;
import com.application.zhangshi_app_android.bean.PropertyBean;
import com.application.zhangshi_app_android.data.DataRepository;
/**
 * @author Ljj
 * @date 2023.04.23. 20:19
 * @desc
 */
public class HundredWishDetailActivityViewModel extends BaseViewModel<DataRepository> {
    private MutableLiveData<HundredWishBean> beanLiveData;
    public HundredWishDetailActivityViewModel(@NonNull Application application) {
        super(application);
    }
    @Override
    protected DataRepository initModel() {
        return DataRepository.getInstance();
    }
    public MutableLiveData<HundredWishBean> getBeanLiveData() {
        if (beanLiveData == null) {
            beanLiveData = new MutableLiveData<>();
        }
        return beanLiveData;
    }
    public void setBeanLiveData(MutableLiveData<HundredWishBean> beanLiveData) {
        this.beanLiveData = beanLiveData;
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/IncomeAndExpensesActivity.java
New file
@@ -0,0 +1,58 @@
package com.application.zhangshi_app_android.ui.function;
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.CleanStorageRvAdapter;
import com.application.zhangshi_app_android.adapter.IncomeAndExpensesRvAdapter;
import com.application.zhangshi_app_android.databinding.ActivityCleanStorageBinding;
import com.application.zhangshi_app_android.databinding.ActivityIncomeAndExpensesBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
/**
 * @author Ljj
 * @date 2023.04.20. 22:17
 * @desc 收支台账
 */
public class IncomeAndExpensesActivity extends DLBaseActivity<ActivityIncomeAndExpensesBinding, IncomeAndExpensesActivityViewModel> {
    private IncomeAndExpensesRvAdapter adapter;
    @Override
    public int getLayoutId() {
        return R.layout.activity_income_and_expenses;
    }
    @Override
    public int getVariableId() {
        return BR.viewModel;
    }
    @Override
    public void initParam() {
    }
    @Override
    public void initView() {
        adapter = new IncomeAndExpensesRvAdapter(this);
        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));
        itemDecoration.setFirstTop((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20));
        binding.recyclerView.addItemDecoration(itemDecoration);
        binding.recyclerView.setAdapter(adapter);
    }
    @Override
    public void initData() {
        viewModel.getIncomeAndExpenses();
    }
    @Override
    public void initLiveDataObserve() {
        viewModel.getDataListLiveData().observe(this, dataList -> {
            adapter.setData(dataList);
        });
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/IncomeAndExpensesActivityViewModel.java
New file
@@ -0,0 +1,89 @@
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.utils.RxUtils;
import com.application.zhangshi_app_android.bean.CleanStorageBean;
import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean;
import com.application.zhangshi_app_android.bean.IncomeAndExpensesBean;
import com.application.zhangshi_app_android.bean.IncomeAndExpensesResponseBean;
import com.application.zhangshi_app_android.data.DataRepository;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
/**
 * @author Ljj
 * @date 2023.04.20. 22:21
 * @desc
 */
public class IncomeAndExpensesActivityViewModel extends BaseViewModel<DataRepository> {
    private MutableLiveData<List<IncomeAndExpensesBean>> dataListLiveData;
    public IncomeAndExpensesActivityViewModel(@NonNull Application application) {
        super(application);
    }
    @Override
    protected DataRepository initModel() {
        return DataRepository.getInstance();
    }
    public MutableLiveData<List<IncomeAndExpensesBean>> getDataListLiveData() {
        if (dataListLiveData == null) {
            dataListLiveData = new MutableLiveData<>();
        }
        return dataListLiveData;
    }
    public void setDataListLiveData(MutableLiveData<List<IncomeAndExpensesBean>> dataListLiveData) {
        this.dataListLiveData = dataListLiveData;
    }
    public void getIncomeAndExpenses() {
        model.getIncomeAndExpenses(new HashMap<>())
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new Observer<ResultData<IncomeAndExpensesResponseBean>>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        addSubscribe(d);
                    }
                    @Override
                    public void onNext(ResultData<IncomeAndExpensesResponseBean> data) {
                        if (data.getCode() == CODE_SUCCESS){
                            if (data.getData().getData().isEmpty()){
                                changeStateView(StateViewEnum.DATA_NULL);
                            }else {
                                changeStateView(StateViewEnum.HIDE);
                                dataListLiveData.postValue(data.getData().getData());
                            }
                        }else {
                            messageLiveData.postValue(data.getMsg());
                        }
                    }
                    @Override
                    public void onError(Throwable e) {
                        messageLiveData.postValue(e.getMessage());
                    }
                    @Override
                    public void onComplete() {
                    }
                });
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/IncomeAndExpensesDetailActivity.java
New file
@@ -0,0 +1,103 @@
package com.application.zhangshi_app_android.ui.function;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import androidx.recyclerview.widget.GridLayoutManager;
import com.application.zhangshi_app_android.BR;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.adapter.ImageRvAdapter;
import com.application.zhangshi_app_android.bean.IncomeAndExpensesBean;
import com.application.zhangshi_app_android.bean.LittleDoctorBean;
import com.application.zhangshi_app_android.databinding.ActivityIncomeAndExpensesBinding;
import com.application.zhangshi_app_android.databinding.ActivityIncomeAndExpensesDetailBinding;
import com.application.zhangshi_app_android.databinding.ActivityLittleDoctorDetailBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
 * @author Ljj
 * @date 2023.04.20. 22:56
 * @desc
 */
public class IncomeAndExpensesDetailActivity extends DLBaseActivity<ActivityIncomeAndExpensesDetailBinding, IncomeAndExpensesDetailActivityViewModel> {
    private ImageRvAdapter adapter;
    @Override
    public int getLayoutId() {
        return R.layout.activity_income_and_expenses_detail;
    }
    @Override
    public int getVariableId() {
        return BR.viewModel;
    }
    @Override
    public void initParam() {
        if (getIntent().hasExtra("bean")){
            viewModel.getBeanLiveData().setValue((IncomeAndExpensesBean) getIntent().getSerializableExtra("bean"));
        }
    }
    @Override
    public void initView() {
        adapter = new ImageRvAdapter(this);
        GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
        binding.rvImage.setLayoutManager(gridLayoutManager);
        binding.rvImage.setNestedScrollingEnabled(false);
        setIsEdited(false);
    }
    @Override
    public void initData() {
    }
    @Override
    public void initLiveDataObserve() {
        viewModel.getBeanLiveData().observe(this,bean -> {
            if (bean!=null){
                String url = bean.getUrl();
                if (url == null||url.isEmpty()){
                    return;
                }
                List<String> list;
                if (url.contains(",")){
                    String[] split = url.split(",");
                    list = new ArrayList<>(Arrays.asList(split));
                }else {
                    list = new ArrayList<>();
                    list.add(url);
                }
                adapter.setData(list);
            }
        });
    }
    public void setIsEdited(boolean isEdited){
        disableAllEditText(getContentView(),isEdited);
        adapter.setIsEdited(isEdited);
    }
    public void disableAllEditText(ViewGroup viewGroup, boolean isEdited) {
        for (int i = 0; i < viewGroup.getChildCount(); i++) {
            View child = viewGroup.getChildAt(i);
            if (child instanceof ViewGroup) {
                disableAllEditText((ViewGroup) child,isEdited);
            } else if (child instanceof EditText) {
                child.setEnabled(isEdited);
                child.setFocusable(isEdited);
                child.setFocusableInTouchMode(isEdited);
                if (!isEdited){
                    child.clearFocus();
                }
            }
        }
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/IncomeAndExpensesDetailActivityViewModel.java
New file
@@ -0,0 +1,40 @@
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.IncomeAndExpensesBean;
import com.application.zhangshi_app_android.data.DataRepository;
/**
 * @author Ljj
 * @date 2023.04.20. 22:59
 * @desc
 */
public class IncomeAndExpensesDetailActivityViewModel extends BaseViewModel<DataRepository> {
    private MutableLiveData<IncomeAndExpensesBean> beanLiveData;
    public IncomeAndExpensesDetailActivityViewModel(@NonNull Application application) {
        super(application);
    }
    @Override
    protected DataRepository initModel() {
        return DataRepository.getInstance();
    }
    public MutableLiveData<IncomeAndExpensesBean> getBeanLiveData() {
        if (beanLiveData == null){
            beanLiveData = new MutableLiveData<>();
        }
        return beanLiveData;
    }
    public void setBeanLiveData(IncomeAndExpensesBean littleDoctorBean) {
        beanLiveData.setValue(littleDoctorBean);
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/LittleDoctorActivity.java
New file
@@ -0,0 +1,57 @@
package com.application.zhangshi_app_android.ui.function;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
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.HonorCollectionRvAdapter;
import com.application.zhangshi_app_android.adapter.LittleDoctorRvAdapter;
import com.application.zhangshi_app_android.databinding.ActivityLittleDoctorBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
public class LittleDoctorActivity extends DLBaseActivity<ActivityLittleDoctorBinding,LittleDoctorActivityViewModel> {
    private LittleDoctorRvAdapter adapter;
    @Override
    public int getLayoutId() {
        return R.layout.activity_little_doctor;
    }
    @Override
    public int getVariableId() {
        return BR.viewModel;
    }
    @Override
    public void initParam() {
    }
    @Override
    public void initView() {
        adapter = new LittleDoctorRvAdapter(this);
        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));
        itemDecoration.setFirstTop((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20));
        binding.recyclerView.addItemDecoration(itemDecoration);
        binding.recyclerView.setAdapter(adapter);
    }
    @Override
    public void initData() {
        viewModel.getLittleDoctors();
    }
    @Override
    public void initLiveDataObserve() {
        viewModel.getDataListLiveData().observe(this, homeDevices -> {
            adapter.setData(homeDevices);
        });
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/LittleDoctorActivityViewModel.java
New file
@@ -0,0 +1,99 @@
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.FamilyMemorabiliaRequestBean;
import com.application.zhangshi_app_android.bean.FamilyMemorabiliaResponseBean;
import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean;
import com.application.zhangshi_app_android.bean.HonorCollectionBean;
import com.application.zhangshi_app_android.bean.HonorCollectionResponseBean;
import com.application.zhangshi_app_android.bean.LittleDoctorBean;
import com.application.zhangshi_app_android.bean.LittleDoctorRequestBean;
import com.application.zhangshi_app_android.bean.LittleDoctorResponseBean;
import com.application.zhangshi_app_android.data.DataRepository;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
/**
 * @author Ljj
 * @date 2023.04.15. 14:04
 * @desc
 */
public class LittleDoctorActivityViewModel extends BaseViewModel<DataRepository> {
    private MutableLiveData<List<LittleDoctorBean>> dataListLiveData;
    private LittleDoctorRequestBean requestBean = new LittleDoctorRequestBean();
    public LittleDoctorActivityViewModel(@NonNull Application application) {
        super(application);
    }
    @Override
    protected DataRepository initModel() {
        return DataRepository.getInstance();
    }
    public MutableLiveData<List<LittleDoctorBean>> getDataListLiveData() {
        if (dataListLiveData == null){
            dataListLiveData = new MutableLiveData<>();
        }
        return dataListLiveData;
    }
    public void setDataListLiveData(MutableLiveData<List<LittleDoctorBean>> dataListLiveData) {
        this.dataListLiveData = dataListLiveData;
    }
    public void getLittleDoctors() {
        model.getLittleDoctors(requestBean.toMap())
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new Observer<ResultData<LittleDoctorResponseBean>>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        addSubscribe(d);
                    }
                    @Override
                    public void onNext(ResultData<LittleDoctorResponseBean> data) {
                        if (data.getCode() == CODE_SUCCESS){
                            if (data.getData().getData().isEmpty()){
                                changeStateView(StateViewEnum.DATA_NULL);
                            }else {
                                changeStateView(StateViewEnum.HIDE);
                                dataListLiveData.postValue(data.getData().getData());
                            }
                        }else {
                            messageLiveData.postValue(data.getMsg());
                        }
                    }
                    @Override
                    public void onError(Throwable e) {
                        messageLiveData.postValue(e.getMessage());
                    }
                    @Override
                    public void onComplete() {
                    }
                });
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/LittleDoctorDetailActivity.java
New file
@@ -0,0 +1,95 @@
package com.application.zhangshi_app_android.ui.function;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import androidx.recyclerview.widget.GridLayoutManager;
import com.application.zhangshi_app_android.BR;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.adapter.ImageRvAdapter;
import com.application.zhangshi_app_android.bean.LittleDoctorBean;
import com.application.zhangshi_app_android.databinding.ActivityLittleDoctorDetailBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class LittleDoctorDetailActivity extends DLBaseActivity<ActivityLittleDoctorDetailBinding, LittleDoctorDetailActivityViewModel> {
    private ImageRvAdapter adapter;
    @Override
    public int getLayoutId() {
        return R.layout.activity_little_doctor_detail;
    }
    @Override
    public int getVariableId() {
        return BR.viewModel;
    }
    @Override
    public void initParam() {
        if (getIntent().hasExtra("bean")){
            viewModel.getBeanLiveData().setValue((LittleDoctorBean) getIntent().getSerializableExtra("bean"));
        }
    }
    @Override
    public void initView() {
        adapter = new ImageRvAdapter(this);
        GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
        binding.rvImage.setLayoutManager(gridLayoutManager);
        binding.rvImage.setNestedScrollingEnabled(false);
        setIsEdited(false);
    }
    @Override
    public void initData() {
    }
    @Override
    public void initLiveDataObserve() {
        viewModel.getBeanLiveData().observe(this,bean -> {
            if (bean!=null){
                String url = bean.getUrl();
                if (url == null||url.isEmpty()){
                    return;
                }
                List<String> list;
                if (url.contains(",")){
                    String[] split = url.split(",");
                    list = new ArrayList<>(Arrays.asList(split));
                }else {
                    list = new ArrayList<>();
                    list.add(url);
                }
                adapter.setData(list);
            }
        });
    }
    public void setIsEdited(boolean isEdited){
        disableAllEditText(getContentView(),isEdited);
        adapter.setIsEdited(isEdited);
    }
    public void disableAllEditText(ViewGroup viewGroup, boolean isEdited) {
        for (int i = 0; i < viewGroup.getChildCount(); i++) {
            View child = viewGroup.getChildAt(i);
            if (child instanceof ViewGroup) {
                disableAllEditText((ViewGroup) child,isEdited);
            } else if (child instanceof EditText) {
                child.setEnabled(isEdited);
                child.setFocusable(isEdited);
                child.setFocusableInTouchMode(isEdited);
                if (!isEdited){
                    child.clearFocus();
                }
            }
        }
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/LittleDoctorDetailActivityViewModel.java
New file
@@ -0,0 +1,40 @@
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.LittleDoctorBean;
import com.application.zhangshi_app_android.data.DataRepository;
/**
 * @author Ljj
 * @date 2023.04.15. 17:56
 * @desc 小医生详情 ViewModel
 */
public class LittleDoctorDetailActivityViewModel extends BaseViewModel<DataRepository> {
    private MutableLiveData<LittleDoctorBean> beanLiveData;
    public LittleDoctorDetailActivityViewModel(@NonNull Application application) {
        super(application);
    }
    @Override
    protected DataRepository initModel() {
        return DataRepository.getInstance();
    }
    public MutableLiveData<LittleDoctorBean> getBeanLiveData() {
        if (beanLiveData == null){
            beanLiveData = new MutableLiveData<>();
        }
        return beanLiveData;
    }
    public void setBeanLiveData(LittleDoctorBean littleDoctorBean) {
        beanLiveData.setValue(littleDoctorBean);
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/MarriageActivity.java
New file
@@ -0,0 +1,136 @@
package com.application.zhangshi_app_android.ui.function;
import android.animation.ValueAnimator;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.Transformation;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import com.application.zhangshi_app_android.BR;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.databinding.ActivityMarriageBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
/**
 * @author Ljj
 * @date 2023.04.23. 23:23
 * @desc 婚姻状况 Activity
 */
public class MarriageActivity extends DLBaseActivity<ActivityMarriageBinding,MarriageActivityViewModel> {
    @Override
    public int getLayoutId() {
        return R.layout.activity_marriage;
    }
    @Override
    public int getVariableId() {
        return BR.viewModel;
    }
    @Override
    public void initParam() {
    }
    private boolean isExpended = false;
    @Override
    public void initView() {
    }
    @Override
    public void initData() {
    }
    @Override
    public void initLiveDataObserve() {
        viewModel.getIsSpouseExpendedLiveData().observe(this, aBoolean -> {
            if (aBoolean){
                binding.ivSpouseFold.setOnClickListener(view -> {
                    collapseView(binding.cardSpouse,binding.layoutTitleSpouse);
                    viewModel.getIsSpouseExpendedLiveData().setValue(false);
                });
            }else {
                binding.ivSpouseFold.setOnClickListener(view -> {
                    expendView(binding.cardSpouse);
                    viewModel.getIsSpouseExpendedLiveData().setValue(true);
                });
            }
        });
        viewModel.getIsPredecessorExpendedLiveData().observe(this, aBoolean -> {
            if (aBoolean){
                binding.ivPredecessorFold.setOnClickListener(view -> {
                    collapseView(binding.cardPredecessor,binding.layoutTitlePredecessor);
                    viewModel.getIsPredecessorExpendedLiveData().setValue(false);
                });
            }else {
                binding.ivPredecessorFold.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        expendView(binding.cardPredecessor);
                        viewModel.getIsPredecessorExpendedLiveData().setValue(true);
                    }
                });
            }
        });
        viewModel.getIsProcreateExpendedLiveData().observe(this, aBoolean -> {
            if (aBoolean){
                binding.ivProcreateFold.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        collapseView(binding.cardProcreate,binding.layoutTitleProcreate);
                        viewModel.getIsProcreateExpendedLiveData().setValue(false);
                    }
                });
            }else {
                binding.ivProcreateFold.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        expendView(binding.cardProcreate);
                        viewModel.getIsProcreateExpendedLiveData().setValue(true);
                    }
                });
            }
        });
    }
    public void collapseView(View initialView,View collapsedView){
        int initialHeight = initialView.getMeasuredHeight();
        int collapsedHeight = collapsedView.getMeasuredHeight();
        int distanceToCollapse = (int) (initialHeight - collapsedHeight);
        Animation a = new Animation() {
            @Override
            protected void applyTransformation(float interpolatedTime, Transformation t) {
                if (interpolatedTime == 1){
                }
                initialView.getLayoutParams().height = (int) (initialHeight - (distanceToCollapse * interpolatedTime));
                initialView.requestLayout();
            }
            @Override
            public boolean willChangeBounds() {
                return true;
            }
        };
        a.setDuration(500);
        initialView.startAnimation(a);
    }
    public void expendView(View initialView){
        int initialHeight = initialView.getMeasuredHeight();
        initialView.measure(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
        int targetHeight = initialView.getMeasuredHeight();
        ValueAnimator animator = ValueAnimator.ofInt(initialHeight,targetHeight);
        animator.addUpdateListener(animation -> {
            initialView.getLayoutParams().height = (int) animation.getAnimatedValue();
            initialView.requestLayout();
        });
        animator.setDuration(500);
        animator.start();
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/MarriageActivityViewModel.java
New file
@@ -0,0 +1,65 @@
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.data.DataRepository;
/**
 * @author Ljj
 * @date 2023.04.23. 23:24
 * @desc 婚姻状况 ViewModel
 */
public class MarriageActivityViewModel extends BaseViewModel<DataRepository> {
    private MutableLiveData<Boolean> isSpouseExpendedLiveData;
    private MutableLiveData<Boolean> isPredecessorExpendedLiveData;
    private MutableLiveData<Boolean> isProcreateExpendedLiveData;
    public MarriageActivityViewModel(@NonNull Application application) {
        super(application);
    }
    @Override
    protected DataRepository initModel() {
        return DataRepository.getInstance();
    }
    public MutableLiveData<Boolean> getIsSpouseExpendedLiveData() {
        if (isSpouseExpendedLiveData == null){
            isSpouseExpendedLiveData = new MutableLiveData<>();
            isSpouseExpendedLiveData.setValue(false);
        }
        return isSpouseExpendedLiveData;
    }
    public void setIsSpouseExpendedLiveData(MutableLiveData<Boolean> isSpouseExpendedLiveData) {
        this.isSpouseExpendedLiveData = isSpouseExpendedLiveData;
    }
    public MutableLiveData<Boolean> getIsPredecessorExpendedLiveData() {
        if (isPredecessorExpendedLiveData == null){
            isPredecessorExpendedLiveData = new MutableLiveData<>();
            isPredecessorExpendedLiveData.setValue(false);
        }
        return isPredecessorExpendedLiveData;
    }
    public void setIsPredecessorExpendedLiveData(MutableLiveData<Boolean> isPredecessorExpendedLiveData) {
        this.isPredecessorExpendedLiveData = isPredecessorExpendedLiveData;
    }
    public MutableLiveData<Boolean> getIsProcreateExpendedLiveData() {
        if (isProcreateExpendedLiveData == null){
            isProcreateExpendedLiveData = new MutableLiveData<>();
            isProcreateExpendedLiveData.setValue(false);
        }
        return isProcreateExpendedLiveData;
    }
    public void setIsProcreateExpendedLiveData(MutableLiveData<Boolean> isProcreateExpendedLiveData) {
        this.isProcreateExpendedLiveData = isProcreateExpendedLiveData;
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/PetActivity.java
New file
@@ -0,0 +1,58 @@
package com.application.zhangshi_app_android.ui.function;
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.LittleDoctorRvAdapter;
import com.application.zhangshi_app_android.adapter.PetRvAdapter;
import com.application.zhangshi_app_android.databinding.ActivityLittleDoctorBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
/**
 * @author Ljj
 * @date 2023.04.17. 18:21
 * @desc
 */
public class PetActivity extends DLBaseActivity<ActivityLittleDoctorBinding,LittleDoctorActivityViewModel> {
    private PetRvAdapter adapter;
    @Override
    public int getLayoutId() {
        return R.layout.activity_pet;
    }
    @Override
    public int getVariableId() {
        return BR.viewModel;
    }
    @Override
    public void initParam() {
    }
    @Override
    public void initView() {
        adapter = new PetRvAdapter(this);
        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));
        itemDecoration.setFirstTop((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20));
        binding.recyclerView.addItemDecoration(itemDecoration);
        binding.recyclerView.setAdapter(adapter);
    }
    @Override
    public void initData() {
//        viewModel.getPets();
    }
    @Override
    public void initLiveDataObserve() {
//        viewModel.getDataListLiveData().observe(this, homeDevices -> {
//            adapter.setData(homeDevices);
//        });
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/PetActivityViewModel.java
New file
@@ -0,0 +1,24 @@
package com.application.zhangshi_app_android.ui.function;
import android.app.Application;
import androidx.annotation.NonNull;
import com.android.app_base.base.viewmodel.BaseViewModel;
import com.application.zhangshi_app_android.data.DataRepository;
/**
 * @author Ljj
 * @date 2023.04.17. 18:23
 * @desc
 */
public class PetActivityViewModel extends BaseViewModel<DataRepository> {
    public PetActivityViewModel(@NonNull Application application) {
        super(application);
    }
    @Override
    protected DataRepository initModel() {
        return DataRepository.getInstance();
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/PropertyActivity.java
New file
@@ -0,0 +1,56 @@
package com.application.zhangshi_app_android.ui.function;
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.PropertyRvAdapter;
import com.application.zhangshi_app_android.databinding.ActivityPropertyBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
/**
 * @author Ljj
 * @date 2023.04.21. 18:55
 * @desc 个人财产 Activity
 */
public class PropertyActivity extends DLBaseActivity<ActivityPropertyBinding, PropertyActivityViewModel> {
    private PropertyRvAdapter adapter;
    @Override
    public int getLayoutId() {
        return R.layout.activity_property;
    }
    @Override
    public int getVariableId() {
        return BR.viewModel;
    }
    @Override
    public void initParam() {
    }
    @Override
    public void initView() {
        adapter = new PropertyRvAdapter(this);
        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));
        itemDecoration.setFirstTop((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20));
        binding.recyclerView.addItemDecoration(itemDecoration);
        binding.recyclerView.setAdapter(adapter);
    }
    @Override
    public void initData() {
        viewModel.getProperty();
    }
    @Override
    public void initLiveDataObserve() {
        viewModel.getDataListLiveData().observe(this, dataList -> {
            adapter.setData(dataList);
        });
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/PropertyActivityViewModel.java
New file
@@ -0,0 +1,60 @@
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.PropertyBean;
import com.application.zhangshi_app_android.data.DataRepository;
import java.util.ArrayList;
import java.util.List;
/**
 * @author Ljj
 * @date 2023.04.21. 19:10
 * @desc 个人财产 ViewModel
 */
public class PropertyActivityViewModel  extends BaseViewModel<DataRepository> {
    private MutableLiveData<List<PropertyBean>> dataListLiveData;
    public PropertyActivityViewModel(@NonNull Application application) {
        super(application);
    }
    @Override
    protected DataRepository initModel() {
        return DataRepository.getInstance();
    }
    public MutableLiveData<List<PropertyBean>> getDataListLiveData() {
        if (dataListLiveData == null) {
            dataListLiveData = new MutableLiveData<>();
        }
        return dataListLiveData;
    }
    public void setDataListLiveData(MutableLiveData<List<PropertyBean>> dataListLiveData) {
        this.dataListLiveData = dataListLiveData;
    }
    public void getProperty() {
        List<PropertyBean> cleanStorageBeans =  new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            PropertyBean bean = new PropertyBean();
            bean.setType("房产");
            bean.setName("房产");
            bean.setPrice("1000");
            bean.setCreateTime("2020-01-01");
            bean.setTerm("2020-01-01");
            bean.setStatus("变更");
            bean.setPropertyRight("产权");
            bean.setLocation("位置");
            bean.setRemark("备注");
            cleanStorageBeans.add(bean);
        }
        dataListLiveData.setValue(cleanStorageBeans);
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/PropertyDetailActivity.java
New file
@@ -0,0 +1,102 @@
package com.application.zhangshi_app_android.ui.function;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import androidx.recyclerview.widget.GridLayoutManager;
import com.application.zhangshi_app_android.BR;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.adapter.ImageRvAdapter;
import com.application.zhangshi_app_android.bean.CleanStorageBean;
import com.application.zhangshi_app_android.bean.PropertyBean;
import com.application.zhangshi_app_android.databinding.ActivityCleanStorageDetailBinding;
import com.application.zhangshi_app_android.databinding.ActivityPropertyDetailBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
 * @author Ljj
 * @date 2023.04.21. 21:02
 * @desc
 */
public class PropertyDetailActivity extends DLBaseActivity<ActivityPropertyDetailBinding,PropertyDetailActivityViewModel> {
    private ImageRvAdapter adapter;
    @Override
    public int getLayoutId() {
        return R.layout.activity_property_detail;
    }
    @Override
    public int getVariableId() {
        return BR.viewModel;
    }
    @Override
    public void initParam() {
        if (getIntent().hasExtra("bean")){
            viewModel.getBeanLiveData().setValue((PropertyBean) getIntent().getSerializableExtra("bean"));
        }
    }
    @Override
    public void initView() {
        adapter = new ImageRvAdapter(this);
        GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
        binding.rvImage.setLayoutManager(gridLayoutManager);
        binding.rvImage.setNestedScrollingEnabled(false);
        setIsEdited(false);
    }
    @Override
    public void initData() {
    }
    @Override
    public void initLiveDataObserve() {
        viewModel.getBeanLiveData().observe(this,bean -> {
            if (bean!=null){
                String url = bean.getUrl();
                if (url == null||url.isEmpty()){
                    return;
                }
                List<String> list;
                if (url.contains(",")){
                    String[] split = url.split(",");
                    list = new ArrayList<>(Arrays.asList(split));
                }else {
                    list = new ArrayList<>();
                    list.add(url);
                }
                adapter.setData(list);
            }
        });
    }
    public void setIsEdited(boolean isEdited){
        disableAllEditText(getContentView(),isEdited);
        adapter.setIsEdited(isEdited);
    }
    public void disableAllEditText(ViewGroup viewGroup, boolean isEdited) {
        for (int i = 0; i < viewGroup.getChildCount(); i++) {
            View child = viewGroup.getChildAt(i);
            if (child instanceof ViewGroup) {
                disableAllEditText((ViewGroup) child,isEdited);
            } else if (child instanceof EditText) {
                child.setEnabled(isEdited);
                child.setFocusable(isEdited);
                child.setFocusableInTouchMode(isEdited);
                if (!isEdited){
                    child.clearFocus();
                }
            }
        }
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/PropertyDetailActivityViewModel.java
New file
@@ -0,0 +1,42 @@
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.CleanStorageBean;
import com.application.zhangshi_app_android.bean.PropertyBean;
import com.application.zhangshi_app_android.data.DataRepository;
/**
 * @author Ljj
 * @date 2023.04.21. 21:16
 * @desc
 */
public class PropertyDetailActivityViewModel extends BaseViewModel<DataRepository> {
    private MutableLiveData<PropertyBean> beanLiveData;
    public PropertyDetailActivityViewModel(@NonNull Application application) {
        super(application);
    }
    @Override
    protected DataRepository initModel() {
        return DataRepository.getInstance();
    }
    public MutableLiveData<PropertyBean> getBeanLiveData() {
        if (beanLiveData == null) {
            beanLiveData = new MutableLiveData<>();
        }
        return beanLiveData;
    }
    public void setBeanLiveData(MutableLiveData<PropertyBean> beanLiveData) {
        this.beanLiveData = beanLiveData;
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/home/HomeFragment.java
@@ -1,11 +1,19 @@
package com.application.zhangshi_app_android.ui.home;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.PopupWindow;
import com.android.app_base.base.view.BaseFragment;
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.HomeMemberAdapter;
import com.application.zhangshi_app_android.bean.HomeMemberBean;
import com.application.zhangshi_app_android.databinding.FragmentHomeBinding;
import com.hjq.bar.TitleBar;
/**
 * @author Ljj
@@ -13,6 +21,9 @@
 * @desc 首页 Fragment
 */
public class HomeFragment extends BaseFragment<FragmentHomeBinding,HomeFragmentViewModel> {
    private PopupWindow mPopupWindow;
    private HomeMemberAdapter homeMemberAdapter;
    public HomeFragment() {
    }
@@ -40,6 +51,23 @@
    @Override
    protected void initView() {
        mPopupWindow = new PopupWindow(getSelfActivity());
        mPopupWindow.setContentView(View.inflate(getSelfActivity(),R.layout.pop_basic_information,null));
        mPopupWindow.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
        mPopupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
        mPopupWindow.setBackgroundDrawable(new ColorDrawable(0x0000));
        mPopupWindow.setAnimationStyle(com.android.app_base.R.style.pop_info);
        mPopupWindow.setFocusable(true);
        mPopupWindow.setTouchable(true);
        mPopupWindow.setOutsideTouchable(true);
        homeMemberAdapter = new HomeMemberAdapter(getSelfActivity());
        LinearItemDecoration itemDecoration = new LinearItemDecoration();
        itemDecoration.setBottomSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_8));
        itemDecoration.setHorizontalSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20));
        itemDecoration.setFirstTop((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20));
        binding.rvHomeMember.addItemDecoration(itemDecoration);
        binding.rvHomeMember.setAdapter(homeMemberAdapter);
    }
    @Override
@@ -51,4 +79,33 @@
    protected void initLiveDataObserve() {
    }
    @Override
    protected boolean isStatusBarImmersionEnabled() {
        return true;
    }
    private boolean isShow = true;
    @Override
    public void onLeftClick(TitleBar titleBar) {
        if (isShow) {
            mPopupWindow.setHeight(binding.treeView.getHeight());
            mPopupWindow.showAsDropDown(binding.titleBar,0,0);
            isShow = false;
        }else {
            binding.rvHomeMember.setVisibility(View.VISIBLE);
            binding.treeView.setVisibility(View.GONE);
            binding.layoutHomeRootNet.setVisibility(View.GONE);
            homeMemberAdapter.addItem(new HomeMemberBean("第一代","张三","男",null,"2023.09.09","2023.09.09","12345678901","张氏公司","张四"));
            homeMemberAdapter.addItem(new HomeMemberBean("第一代","张三","男",null,"2023.09.09","2023.09.09","12345678901","张氏公司","张四"));
            homeMemberAdapter.addItem(new HomeMemberBean("第一代","张三","男",null,"2023.09.09","2023.09.09","12345678901","张氏公司","张四"));
            homeMemberAdapter.addItem(new HomeMemberBean("第一代","张三","男",null,"2023.09.09","2023.09.09","12345678901","张氏公司","张四"));
            homeMemberAdapter.addItem(new HomeMemberBean("第一代","张三","男",null,"2023.09.09","2023.09.09","12345678901","张氏公司","张四"));
            homeMemberAdapter.addItem(new HomeMemberBean("第一代","张三","男",null,"2023.09.09","2023.09.09","12345678901","张氏公司","张四"));
            isShow = true;
        }
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/main/MainActivity.java
@@ -54,6 +54,7 @@
                super.onPageSelected(position);
            }
        });
        binding.mainVp.setUserInputEnabled(false);
        // 不使用图标默认变色
        binding.mainBnv.setItemIconTintList(null);
app/src/main/java/com/application/zhangshi_app_android/widget/TreeView.java
New file
@@ -0,0 +1,395 @@
package com.application.zhangshi_app_android.widget;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.view.View;
import android.widget.OverScroller;
import android.widget.RelativeLayout;
import androidx.annotation.Nullable;
import com.application.zhangshi_app_android.R;
/**
 * @author Ljj
 * @date 2023.04.08. 20:03
 * @desc
 */
public class TreeView extends RelativeLayout {
    private Context mContext;
    // 最小缩放比例
    float smallScale = 0f;
    // 正常缩放比例
    float normalScale = 0f;
    // 最大缩放比例
    float bigScale = 0f;
    // 当前比例
    float currentScale = 0f;
    // 缩放倍数
    private static final float ZOOM_SCALE = 2f;
    private final View treeView;
    private final GestureDetector mGestureDetector;
    // 双指操作
    private final ScaleGestureDetector mScaleGestureDetector;
    // 惯性滑动
    private final OverScroller mOverScroller;
    private final FlingRunner mFlingRunner;
    // 是否放大 [默认是缩小,双击改变状态]
    boolean isZoomIn = false;
    // 放大后手指移动位置
    private final OffSet moveOffset = new OffSet();
    private boolean isDoubleClickZoomIn = false;
    public TreeView(Context context) {
        this(context, null);
    }
    public TreeView(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, 0);
    }
    public TreeView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        this(context, attrs, defStyleAttr, 0);
    }
    public TreeView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        setWillNotDraw(false);
        mContext = context;
        treeView = LayoutInflater.from(context).inflate(R.layout.layout_tree_view,this,false);
        LayoutParams layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        layoutParams.alignWithParent = true;
        layoutParams.addRule(CENTER_IN_PARENT);
        addView(treeView,layoutParams);
        mGestureDetector = new GestureDetector(context, new MyGestureListener());
        mScaleGestureDetector = new ScaleGestureDetector(context, new MyScaleGestureListener());
        mOverScroller = new OverScroller(context);
        mFlingRunner = new FlingRunner();
    }
    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        // view比例
        float viewScale = (float) getWidth() / (float) getHeight();
        // 图片比例
        float bitScale = (float) treeView.getMeasuredWidth() / (float) treeView.getMeasuredHeight();
//        // 如果图片比例大于view比例
//        if (bitScale > viewScale) {
//            // 横向图片
//            smallScale = (float) getWidth() / (float) treeView.getMeasuredWidth();
//            bigScale = (float) getHeight() / (float) treeView.getMeasuredHeight() * ZOOM_SCALE;
//        } else {
//            // 纵向图片
//            smallScale = (float) getHeight() / (float) treeView.getMeasuredHeight();
//            bigScale = (float) getWidth() / (float) treeView.getMeasuredWidth() * ZOOM_SCALE;
//        }
        smallScale = (float) getWidth() / (float) treeView.getMeasuredWidth();
        smallScale = (float) getHeight() / (float) treeView.getMeasuredHeight();
        bigScale = (float) getHeight() / (float) treeView.getMeasuredHeight() * ZOOM_SCALE;
        // 当前缩放比例 = 缩放前的比例
        currentScale = smallScale;
    }
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.scale(currentScale, currentScale, getWidth() / 2f, getHeight() / 2f);
        // 移动画布
        if (isDoubleClickZoomIn){
            if (currentScale <= bigScale) {//双击改变状态时偏移量随着缩放比例变化
                float a = (currentScale - smallScale) / (bigScale - smallScale);
                moveOffset.setPhyX(moveOffset.getPhyX() * a);
                moveOffset.setPhyY(moveOffset.getPhyY() * a);
            }
        }
        canvas.translate(moveOffset.getLogX(currentScale), moveOffset.getLogY(currentScale));
    }
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        // 双指操作
        boolean scaleTouchEvent = mScaleGestureDetector.onTouchEvent(event);
        // 是否是双指操作
        if (mScaleGestureDetector.isInProgress()) {
            return scaleTouchEvent;
        }
        // 双击操作
        return mGestureDetector.onTouchEvent(event);
    }
    private class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
        // 单击情况 : 抬起[ACTION_UP]时候触发
        // 双击情况 : 第二次抬起[ACTION_POINTER_UP]时候触发
        @Override
        public boolean onSingleTapUp(MotionEvent e) {
            return super.onSingleTapUp(e);
        }
        // 长按时触发 [300ms]
        @Override
        public void onLongPress(MotionEvent e) {
            super.onLongPress(e);
        }
        // 滑动时候触发 类似 ACTION_MOVE 事件
        @Override
        public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
            // 如果是放大状态才能移动
//            if (isZoomIn) {
                moveOffset.setPhyX(moveOffset.getPhyX() - distanceX);
                moveOffset.setPhyY(moveOffset.getPhyY() - distanceY);
                // 修正偏移量,防止图片移动时边缘出现白色背景
                fixOffset();
                invalidate();
//            }
            return super.onScroll(e1, e2, distanceX, distanceY);
        }
        // 滑翔/飞翔 [惯性滑动]
        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
//            mOverScroller.fling(
//                    (int) moveOffset.getX(),
//                    (int) moveOffset.getY(),
//                    (int) velocityX,
//                    (int) velocityY,
//                    (int) (-(treeView.getMeasuredWidth() * bigScale - getWidth()) / 2),
//                    (int) ((treeView.getMeasuredHeight() * bigScale - getWidth()) / 2),
//                    (int) (-(treeView.getMeasuredHeight() * bigScale - getHeight()) / 2),
//                    (int) ((treeView.getMeasuredHeight() * bigScale - getHeight()) / 2),
//                    300,
//                    300
//            );
//            // 设置fling效果
//            mFlingRunner.run();
            return super.onFling(e1, e2, velocityX, velocityY);
        }
        // 延时触发 [100ms] -- 常用与水波纹等效果
        @Override
        public void onShowPress(MotionEvent e) {
            super.onShowPress(e);
        }
        // 按下 这里必须返回true 因为所有事件都是由按下出发的
        @Override
        public boolean onDown(MotionEvent e) {
            return true;
        }
        // 双击 -- 第二次按下时候触发 (40ms - 300ms) [小于40ms是为了防止抖动]
        @Override
        public boolean onDoubleTap(MotionEvent e) {
            if (isDoubleClickZoomIn){
                // 判断双击的位置是否在treeView上
                float fixedWidth =  treeView.getWidth()*(1-currentScale)/2;
                float fixedHeight =  treeView.getHeight()*(1-currentScale)/2;
                if (treeView.getLeft()+fixedWidth <= e.getX() && e.getX()  <= treeView.getRight()-fixedWidth  && treeView.getTop()+fixedHeight <= e.getY() && e.getY() <= treeView.getBottom()-fixedHeight){
                    // 先改为放大,第一次双击是放大效果
                    isZoomIn = !isZoomIn;
                    if (isZoomIn) {
                        // 双击放大时定位到放大后双击的位置
//                    float currentX = e.getX() - (float) treeView.getWidth() / 2f;
//                    float currentY = e.getY() - (float) treeView.getHeight() / 2f;
//                    moveOffset.setX(currentX - currentX * bigScale);
//                    moveOffset.setY(currentY - currentY * bigScale);
//                    // 修正偏移量,防止图片移动时边缘出现白色背景
//                    fixOffset();
                        // 放大 放大到最大比例
                        //添加动画,更加流畅
                        scaleAnimation(currentScale, bigScale).start();
                    } else {
                        // 缩小 缩小为原先留白的比例
                        scaleAnimation(bigScale, smallScale).start();
                    }
                }
            }
            return super.onDoubleTap(e);
        }
        // 双击 第二次的事件处理 DOWN MOVE UP 都会执行到这里
        @Override
        public boolean onDoubleTapEvent(MotionEvent e) {
            return super.onDoubleTapEvent(e);
        }
        // 单击时触发 双击时不触发
        @Override
        public boolean onSingleTapConfirmed(MotionEvent e) {
            return super.onSingleTapConfirmed(e);
        }
    }
    // 缩放动画
    public ObjectAnimator scaleAnimation(float start, float end) {
        ObjectAnimator animator = ObjectAnimator.ofFloat(this, "currentScale", start, end);
        // 动画时间
        animator.setDuration(500);
        return animator;
    }
    // 属性动画的关键!!  内部通过反射调用set方法来赋值
    public void setCurrentScale(float currentScale) {
        this.currentScale = currentScale;
        invalidate();
    }
    public void fixOffset() {
        // 当前图片放大后的宽
        float currentWidth = treeView.getMeasuredWidth() * currentScale;
        // 当前图片放大后的高
        float currentHeight = treeView.getMeasuredHeight() * currentScale;
        System.out.println("currentScale = " + currentScale);
        System.out.println("moveOffset.getLogX(currentScale) = " + moveOffset.getLogX(currentScale));
        System.out.println("moveOffset.getLogY(currentScale) = " + moveOffset.getLogY(currentScale));
        System.out.println("moveOffset.getPhyX() = " + moveOffset.getPhyX());
        System.out.println("moveOffset.getPhyY() = " + moveOffset.getPhyY());
        System.out.println("currentWidth = " + currentWidth);
        System.out.println("currentHeight = " + currentHeight);
        System.out.println(-(currentWidth - getWidth()) / 2 / bigScale);
        System.out.println(-(currentWidth - getWidth()) / 2 / currentScale);
        System.out.println(-(currentWidth - getWidth()) / 2 );
        System.out.println(moveOffset.getPhyX());
        // 右侧限制
        moveOffset.setPhyX(Math.max(moveOffset.getPhyX(), -(currentWidth - getWidth()) / 2));
        // 左侧限制 [左侧moveOffset.getX()为负数]
        moveOffset.setPhyX(Math.min(moveOffset.getPhyX(), (currentWidth - getWidth()) / 2 ));
        // 下侧限制
        moveOffset.setPhyY(Math.max(moveOffset.getPhyY(), -(currentHeight - getHeight()) / 2 ));
        // 上侧限制 [上侧moveOffset.getY()为负数]
        moveOffset.setPhyY(Math.min(moveOffset.getPhyY(), (currentHeight - getHeight()) / 2 ));
    }
    class MyScaleGestureListener implements ScaleGestureDetector.OnScaleGestureListener {
        // 在双指操作开始时候获取当前缩放值
        private float scaleFactor = 0f;
        // 双指操作
        @Override
        public boolean onScale(ScaleGestureDetector detector) {
            // detector.getScaleFactor 缩放因子
            currentScale = scaleFactor * detector.getScaleFactor();
            // 刷新
            invalidate();
            return false;
        }
        // 双指操作开始
        @Override
        public boolean onScaleBegin(ScaleGestureDetector detector) {
            scaleFactor = currentScale;
            // 注意这里要为true 表示开始双指操作
            return true;
        }
        // 双指操作结束
        @Override
        public void onScaleEnd(ScaleGestureDetector detector) {
            // 当前图片宽
            float currentWidth = treeView.getMeasuredWidth() * currentScale;
            // 缩放前的图片宽
            float smallWidth = treeView.getMeasuredWidth() * smallScale;
            // 缩放后的图片宽
            float bigWidth = treeView.getMeasuredWidth() * bigScale;
            // 如果当前图片 < 缩放前的图片
            if (currentWidth < smallWidth) {
                // 图片缩小
                isZoomIn = false;
                scaleAnimation(currentScale, smallScale).start();
            }else if (currentWidth > bigWidth) {// 如果当前状态 > 缩放后的图片 那么就让他改变为最大的状态
                scaleAnimation(currentScale, bigScale).start();
                // 双击时候 图片放大
                isZoomIn = true;
            } else{
                // 图片缩小
                isZoomIn = true;
            }
        }
    }
    // 惯性滑动辅助
    class FlingRunner implements Runnable {
        @Override
        public void run() {
            // 判断当前是否是执行
            if (mOverScroller.computeScrollOffset()) {
                // 设置fling的值
                moveOffset.setPhyX(mOverScroller.getCurrX());
                moveOffset.setPhyY(mOverScroller.getCurrY());
                // 继续执行FlingRunner.run
                postOnAnimation(this);
                // 刷新
                invalidate();
            }
        }
    }
    private static class OffSet {
        float phyX;
        float phyY;
        public OffSet() {
        }
        public float getPhyX() {
            return phyX;
        }
        public void setPhyX(float phyX) {
            this.phyX = phyX;
        }
        public float getPhyY() {
            return phyY;
        }
        public void setPhyY(float phyY) {
            this.phyY = phyY;
        }
        public float getLogX(float scale) {
            return phyX / scale;
        }
        public float getLogY(float scale) {
            return phyY / scale;
        }
    }
    /**
     * 是否双击放大
     */
    public void setDoubleClickZoomIn(boolean doubleClickZoomIn) {
        isDoubleClickZoomIn = doubleClickZoomIn;
    }
}
app/src/main/res/drawable-xhdpi/bg_home_root_net.png
app/src/main/res/drawable-xhdpi/bg_home_root_net_detail.png
app/src/main/res/drawable-xhdpi/bg_home_root_net_grass.png
app/src/main/res/drawable-xhdpi/ic_fold.png

app/src/main/res/drawable-xhdpi/ic_radio_button.png
app/src/main/res/drawable-xhdpi/ic_unfold.png

app/src/main/res/drawable-xxhdpi/bg_home_root_net.png
app/src/main/res/drawable-xxhdpi/bg_home_root_net_detail.png
app/src/main/res/drawable-xxhdpi/bg_home_root_net_grass.png
app/src/main/res/drawable-xxhdpi/ic_fold.png

app/src/main/res/drawable-xxhdpi/ic_radio_button.png
app/src/main/res/drawable-xxhdpi/ic_unfold.png

app/src/main/res/drawable/shape_ffd8e6f5_10_10_0_10.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FFD8E6F5"/>
    <corners android:topLeftRadius="10dp" android:topRightRadius="10dp" android:bottomLeftRadius="10dp" android:bottomRightRadius="0dp" />
</shape>
app/src/main/res/drawable/shape_fffad1e0_10_10_0_10.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FFFAD1E0"/>
    <corners android:topLeftRadius="10dp" android:topRightRadius="10dp" android:bottomLeftRadius="10dp" android:bottomRightRadius="0dp" />
</shape>
app/src/main/res/layout/activity_certificate_of_honor.xml
New file
@@ -0,0 +1,143 @@
<?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="viewModel"
            type="com.application.zhangshi_app_android.ui.function.CertificateOfHonorActivityViewModel" />
    </data>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <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"
                >
                <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="@dimen/sp_20"
                    />
                <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="在“家大事记内搜索”"
                    />
                <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"
            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>
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:background="@color/color_normal_background"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/titleBar"
            app:layout_constraintVertical_bias="1.0"
            tools:itemCount="20"
            />
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>
app/src/main/res/layout/activity_certificate_of_honor_detail.xml
New file
@@ -0,0 +1,225 @@
<?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="viewModel"
            type="com.application.zhangshi_app_android.ui.function.CertificateOfHonorDetailActivityViewModel" />
    </data>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/color_normal_background"
        android:orientation="vertical">
        <com.android.app_base.widget.ExtendTitleBar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:title="@{viewModel.beanLiveData.name+`(仅供查看)`}"
            app:titleGravity="left"
            />
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            >
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:paddingHorizontal="20dp"
                android:paddingBottom="20dp"
                >
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="@dimen/dp_10"
                    android:layout_height="@dimen/dp_20"
                    android:text="名称"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="text"
                    android:autofillHints="creditCardNumber"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:textSize="16sp"
                    android:text="@={viewModel.beanLiveData.name}"
                    />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="时间"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.time}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="类别"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:text="@={viewModel.beanLiveData.type}"
                    android:textColor="#DE000000"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="证号/专业"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.certificateNumber}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="级别"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.level}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="有效时间"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.effectiveTime}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="获得时间"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@{viewModel.beanLiveData.getTime}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="存放位置"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.location}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="备注"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.remark}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="电子文件"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/shape_6b0000_stroke"
                    >
                    <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:layout_marginBottom="10dp"
                        android:layout_marginTop="2sp"
                        android:paddingStart="10dp"
                        android:paddingEnd="5dp"
                        android:paddingVertical="10dp"
                        />
                </RelativeLayout>
            </LinearLayout>
        </ScrollView>
    </LinearLayout>
</layout>
app/src/main/res/layout/activity_clean_storage.xml
New file
@@ -0,0 +1,144 @@
<?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="viewModel"
            type="com.application.zhangshi_app_android.ui.function.CleanStorageActivityViewModel" />
    </data>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <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"
                >
                <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="@dimen/sp_20"
                    />
                <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="在“家大事记内搜索”"
                    />
                <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"
            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>
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:background="@color/color_normal_background"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/titleBar"
            app:layout_constraintVertical_bias="1.0"
            tools:itemCount="20"
            tools:layout_editor_absoluteX="-81dp"
            tools:listitem="@layout/item_family_assets" />
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>
app/src/main/res/layout/activity_clean_storage_detail.xml
New file
@@ -0,0 +1,191 @@
<?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="viewModel"
            type="com.application.zhangshi_app_android.ui.function.CleanStorageDetailActivityViewModel" />
    </data>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/color_normal_background"
        android:orientation="vertical">
        <com.android.app_base.widget.ExtendTitleBar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:title="保洁收纳"
            app:titleGravity="left"
            />
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            >
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:paddingHorizontal="20dp"
                android:paddingBottom="20dp"
                >
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="@dimen/dp_10"
                    android:layout_height="@dimen/dp_20"
                    android:text="类型"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="text"
                    android:autofillHints="creditCardNumber"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:textSize="16sp"
                    android:text="@={viewModel.beanLiveData.type}"
                    />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="适用人"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.suitablePeople}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="类别"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:text="@={viewModel.beanLiveData.category}"
                    android:textColor="#DE000000"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="保洁方法"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.cleanMethod}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="材料存放地"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.materialStorageLocation}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="放置地点"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.placementLocation}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="备注"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.remark}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="电子文件"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/shape_6b0000_stroke"
                    >
                    <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:layout_marginBottom="10dp"
                        android:layout_marginTop="2sp"
                        android:paddingStart="10dp"
                        android:paddingEnd="5dp"
                        android:paddingVertical="10dp"
                        />
                </RelativeLayout>
            </LinearLayout>
        </ScrollView>
    </LinearLayout>
</layout>
app/src/main/res/layout/activity_family_assets.xml
@@ -127,17 +127,30 @@
                />
        </LinearLayout>
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerView"
        <com.scwang.smart.refresh.layout.SmartRefreshLayout
            android:id="@+id/refreshLayout"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:background="@color/color_normal_background"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/titleBar"
            app:layout_constraintVertical_bias="1.0"
            tools:itemCount="20"
            tools:layout_editor_absoluteX="-81dp"
            tools:listitem="@layout/item_family_memorabilia" />
            >
            <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"
                tools:itemCount="20"
                tools:listitem="@layout/item_family_assets" />
            <com.scwang.smart.refresh.footer.BallPulseFooter
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>
        </com.scwang.smart.refresh.layout.SmartRefreshLayout>
    </androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout/activity_family_assets_detail.xml
@@ -167,6 +167,7 @@
                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="20dp"
                    android:background="@drawable/shape_6b0000_stroke"
                    >
                    <com.android.app_base.widget.WrapRecyclerView
app/src/main/res/layout/activity_family_memorabilia.xml
@@ -127,18 +127,32 @@
                android:textColor="#73000000"
                />
        </LinearLayout>
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerView"
        <com.scwang.smart.refresh.layout.SmartRefreshLayout
            android:id="@+id/refreshLayout"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:background="@color/color_normal_background"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/titleBar"
            app:layout_constraintVertical_bias="1.0"
            tools:itemCount="20"
            tools:layout_editor_absoluteX="-81dp"
            tools:listitem="@layout/item_family_memorabilia" />
            >
            <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"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/titleBar"
                tools:itemCount="20"
                tools:listitem="@layout/item_family_memorabilia" />
            <com.scwang.smart.refresh.footer.BallPulseFooter
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>
        </com.scwang.smart.refresh.layout.SmartRefreshLayout>
        <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@+id/fab_add"
app/src/main/res/layout/activity_home_devices.xml
@@ -134,10 +134,9 @@
            android:background="@color/color_normal_background"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/titleBar"
            app:layout_constraintVertical_bias="1.0"
            tools:itemCount="20"
            tools:layout_editor_absoluteX="-81dp"
            tools:listitem="@layout/item_family_memorabilia" />
            tools:listitem="@layout/item_home_devices" />
    </androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout/activity_home_devices_detail.xml
@@ -68,7 +68,7 @@
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.createTime}"
                    android:text="@={viewModel.beanLiveData.createDate}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
@@ -84,7 +84,7 @@
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:text="@={viewModel.beanLiveData.people}"
                    android:text="@={viewModel.beanLiveData.buyer}"
                    android:textColor="#DE000000"
                    android:textSize="16sp" />
                <TextView
@@ -119,7 +119,7 @@
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.address}"
                    android:text="@={viewModel.beanLiveData.location}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
app/src/main/res/layout/activity_honor_collection.xml
New file
@@ -0,0 +1,144 @@
<?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="viewModel"
            type="com.application.zhangshi_app_android.ui.function.HonorCollectionActivityViewModel" />
    </data>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <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"
                >
                <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="@dimen/sp_20"
                    />
                <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="在“家大事记内搜索”"
                    />
                <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"
            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>
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:background="@color/color_normal_background"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/titleBar"
            app:layout_constraintVertical_bias="1.0"
            tools:itemCount="20"
            tools:layout_editor_absoluteX="-81dp"
            tools:listitem="@layout/item_family_assets" />
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>
app/src/main/res/layout/activity_honor_collection_detail.xml
New file
@@ -0,0 +1,191 @@
<?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">
    <data>
        <variable
            name="viewModel"
            type="com.application.zhangshi_app_android.ui.function.HonorCollectionDetailActivityViewModel" />
    </data>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/color_normal_background"
        android:orientation="vertical">
        <com.android.app_base.widget.ExtendTitleBar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:title="@{viewModel.beanLiveData.owner+`的`+ viewModel.beanLiveData.type}"
            app:titleGravity="left"
            />
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            >
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:paddingHorizontal="20dp"
                android:paddingBottom="20dp"
                >
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="@dimen/dp_10"
                    android:layout_height="@dimen/dp_20"
                    android:text="名称"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="text"
                    android:autofillHints="creditCardNumber"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:textSize="16sp"
                    android:text="@={viewModel.beanLiveData.name}"
                    />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="获得时间"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.getTime}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="来源"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:text="@={viewModel.beanLiveData.source}"
                    android:textColor="#DE000000"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="价值"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.price}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="持有人"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.owner}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="存放位置"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.location}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="备注"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.remark}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="电子文件"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/shape_6b0000_stroke"
                    >
                    <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:layout_marginBottom="10dp"
                        android:layout_marginTop="2sp"
                        android:paddingStart="10dp"
                        android:paddingEnd="5dp"
                        android:paddingVertical="10dp"
                        />
                </RelativeLayout>
            </LinearLayout>
        </ScrollView>
    </LinearLayout>
</layout>
app/src/main/res/layout/activity_hundred_wish.xml
New file
@@ -0,0 +1,143 @@
<?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="viewModel"
            type="com.application.zhangshi_app_android.ui.function.HundredWishActivityViewModel" />
    </data>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <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"
                >
                <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="@dimen/sp_20"
                    />
                <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="在“家大事记内搜索”"
                    />
                <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"
            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>
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:background="@color/color_normal_background"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/titleBar"
            app:layout_constraintVertical_bias="1.0"
            tools:itemCount="20"
            />
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>
app/src/main/res/layout/activity_hundred_wish_detail.xml
New file
@@ -0,0 +1,208 @@
<?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="viewModel"
            type="com.application.zhangshi_app_android.ui.function.HundredWishDetailActivityViewModel" />
    </data>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/color_normal_background"
        android:orientation="vertical">
        <com.android.app_base.widget.ExtendTitleBar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:title="@{viewModel.beanLiveData.title+`(仅供查看)`}"
            app:titleGravity="left"
            />
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            >
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:paddingHorizontal="20dp"
                android:paddingBottom="20dp"
                >
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="@dimen/dp_10"
                    android:layout_height="@dimen/dp_20"
                    android:text="理想标题/百年愿望"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="text"
                    android:autofillHints="creditCardNumber"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:textSize="16sp"
                    android:text="@={viewModel.beanLiveData.title}"
                    />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="时间"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.createTime}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="始于何因"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:text="@={viewModel.beanLiveData.reason}"
                    android:textColor="#DE000000"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="受惠人"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.beneficiary}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="继承人"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.heir}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="实现难度"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.difficulty}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="是否依旧有效"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@{viewModel.beanLiveData.isEffective==1?`是`:`否`}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="备注"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.remark}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="电子文件"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/shape_6b0000_stroke"
                    >
                    <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:layout_marginBottom="10dp"
                        android:layout_marginTop="2sp"
                        android:paddingStart="10dp"
                        android:paddingEnd="5dp"
                        android:paddingVertical="10dp"
                        />
                </RelativeLayout>
            </LinearLayout>
        </ScrollView>
    </LinearLayout>
</layout>
app/src/main/res/layout/activity_income_and_expenses.xml
New file
@@ -0,0 +1,144 @@
<?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="viewModel"
            type="com.application.zhangshi_app_android.ui.function.IncomeAndExpensesActivityViewModel" />
    </data>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <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"
                >
                <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="@dimen/sp_20"
                    />
                <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="在“家大事记内搜索”"
                    />
                <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"
            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>
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:background="@color/color_normal_background"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/titleBar"
            app:layout_constraintVertical_bias="1.0"
            tools:itemCount="20"
            tools:layout_editor_absoluteX="-81dp"
            tools:listitem="@layout/item_family_assets" />
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>
app/src/main/res/layout/activity_income_and_expenses_detail.xml
New file
@@ -0,0 +1,208 @@
<?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="viewModel"
            type="com.application.zhangshi_app_android.ui.function.IncomeAndExpensesDetailActivityViewModel" />
    </data>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/color_normal_background"
        android:orientation="vertical">
        <com.android.app_base.widget.ExtendTitleBar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:title="家庭收支台账"
            app:titleGravity="left" />
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            >
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:paddingHorizontal="20dp"
                android:paddingBottom="20dp"
                >
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="@dimen/dp_10"
                    android:layout_height="@dimen/dp_20"
                    android:text="基金/台账"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="text"
                    android:autofillHints="creditCardNumber"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:textSize="16sp"
                    android:text="@{viewModel.beanLiveData.type==0?`基金`:`台账`}"
                    />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="时间"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.createTime}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="收入/支出"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:text="@{viewModel.beanLiveData.price}"
                    android:textColor="#DE000000"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="用途"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.useFor}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="使用人"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.usePeople}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="现金/自动划扣"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@{viewModel.beanLiveData.kind==0?`现金`:`自动划扣`}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="余额"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.balance}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="备注"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.remark}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="电子文件"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/shape_6b0000_stroke"
                    >
                    <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:layout_marginBottom="10dp"
                        android:layout_marginTop="2sp"
                        android:paddingStart="10dp"
                        android:paddingEnd="5dp"
                        android:paddingVertical="10dp"
                        />
                </RelativeLayout>
            </LinearLayout>
        </ScrollView>
    </LinearLayout>
</layout>
app/src/main/res/layout/activity_little_doctor.xml
New file
@@ -0,0 +1,142 @@
<?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>
    </data>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <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"
                >
                <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="@dimen/sp_20"
                    />
                <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="在“家大事记内搜索”"
                    />
                <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"
            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>
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:background="@color/color_normal_background"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/titleBar"
            app:layout_constraintVertical_bias="1.0"
            tools:itemCount="20"
            tools:layout_editor_absoluteX="-81dp"
            tools:listitem="@layout/item_family_assets" />
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>
app/src/main/res/layout/activity_little_doctor_detail.xml
New file
@@ -0,0 +1,191 @@
<?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="viewModel"
            type="com.application.zhangshi_app_android.ui.function.LittleDoctorDetailActivityViewModel" />
    </data>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/color_normal_background"
        android:orientation="vertical">
        <com.android.app_base.widget.ExtendTitleBar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:title="小医生"
            app:titleGravity="left"
            />
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            >
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:paddingHorizontal="20dp"
                android:paddingBottom="20dp"
                >
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="@dimen/dp_10"
                    android:layout_height="@dimen/dp_20"
                    android:text="症状"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="text"
                    android:autofillHints="creditCardNumber"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:textSize="16sp"
                    android:text="@={viewModel.beanLiveData.symptom}"
                    />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="适用人"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.suitable}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="持续时间"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:text="@={viewModel.beanLiveData.duration}"
                    android:textColor="#DE000000"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="中医处方"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.cmedical}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="西医处方"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.wmedical}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="功效"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.effect}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="备注"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.remark}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="电子文件"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/shape_6b0000_stroke"
                    >
                    <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:layout_marginBottom="10dp"
                        android:layout_marginTop="2sp"
                        android:paddingStart="10dp"
                        android:paddingEnd="5dp"
                        android:paddingVertical="10dp"
                        />
                </RelativeLayout>
            </LinearLayout>
        </ScrollView>
    </LinearLayout>
</layout>
app/src/main/res/layout/activity_marriage.xml
New file
@@ -0,0 +1,1050 @@
<?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="viewModel"
            type="com.application.zhangshi_app_android.ui.function.MarriageActivityViewModel" />
    </data>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/color_normal_background"
        >
        <com.android.app_base.widget.ExtendTitleBar
            android:id="@+id/extendTitleBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:elevation="10dp"
            app:layout_constraintTop_toTopOf="parent"
            app:title="个人婚姻(仅供查看)"
            app:titleGravity="left"
            />
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/extendTitleBar"
            >
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                >
                <LinearLayout
                    android:id="@+id/ll_basic_information"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    android:layout_marginHorizontal="20dp"
                    android:layout_marginVertical="16dp"
                    >
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="基本信息"
                        android:textColor="@color/black"
                        android:textSize="20sp"
                        />
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp"
                        >
                        <LinearLayout
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:orientation="vertical"
                            >
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="姓名"
                                android:textColor="@color/black"
                                android:textSize="12sp"
                                android:alpha="0.54"
                                />
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="张三"
                                android:textColor="#DE000000"
                                android:textSize="14sp"
                                android:layout_marginTop="5dp"
                                />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:background="#6B000000"
                                android:layout_marginTop="8dp"
                                />
                        </LinearLayout>
                        <LinearLayout
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:orientation="vertical"
                            android:layout_marginStart="40dp"
                            >
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="性别"
                                android:textColor="@color/black"
                                android:textSize="12sp"
                                android:alpha="0.54"
                                />
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="男"
                                android:textColor="#DE000000"
                                android:textSize="14sp"
                                android:layout_marginTop="5dp"
                                />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:background="#6B000000"
                                android:layout_marginTop="8dp"
                                />
                        </LinearLayout>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="20dp"
                        >
                        <LinearLayout
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:orientation="vertical"
                            >
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="出生日期"
                                android:textColor="@color/black"
                                android:textSize="12sp"
                                android:alpha="0.54"
                                />
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="2010-01-01"
                                android:textColor="#DE000000"
                                android:textSize="14sp"
                                android:layout_marginTop="5dp"
                                />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:background="#6B000000"
                                android:layout_marginTop="8dp"
                                />
                        </LinearLayout>
                        <LinearLayout
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:orientation="vertical"
                            android:layout_marginStart="40dp"
                            >
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="民族"
                                android:textColor="@color/black"
                                android:textSize="12sp"
                                android:alpha="0.54"
                                />
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="汉族"
                                android:textColor="#DE000000"
                                android:textSize="14sp"
                                android:layout_marginTop="5dp"
                                />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:background="#6B000000"
                                android:layout_marginTop="8dp"
                                />
                        </LinearLayout>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="20dp"
                        >
                        <LinearLayout
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:orientation="vertical"
                            >
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="身份证号"
                                android:textColor="@color/black"
                                android:textSize="12sp"
                                android:alpha="0.54"
                                />
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="445222200110233318"
                                android:textColor="#DE000000"
                                android:textSize="14sp"
                                android:layout_marginTop="5dp"
                                android:ellipsize="marquee"
                                />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:background="#6B000000"
                                android:layout_marginTop="8dp"
                                />
                        </LinearLayout>
                        <LinearLayout
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:orientation="vertical"
                            android:layout_marginStart="40dp"
                            >
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="联系电话"
                                android:textColor="@color/black"
                                android:textSize="12sp"
                                android:alpha="0.54"
                                />
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="17818824255"
                                android:textColor="#DE000000"
                                android:textSize="14sp"
                                android:layout_marginTop="5dp"
                                />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:background="#6B000000"
                                android:layout_marginTop="8dp"
                                />
                        </LinearLayout>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="20dp"
                        >
                        <LinearLayout
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:orientation="vertical"
                            >
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="婚姻状况"
                                android:textColor="@color/black"
                                android:textSize="12sp"
                                android:alpha="0.54"
                                />
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="已婚"
                                android:textColor="#DE000000"
                                android:textSize="14sp"
                                android:layout_marginTop="5dp"
                                android:drawableStart="@drawable/ic_radio_button"
                                android:drawablePadding="8dp"
                                />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:background="#6B000000"
                                android:layout_marginTop="8dp"
                                />
                        </LinearLayout>
                        <LinearLayout
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:orientation="vertical"
                            android:layout_marginStart="40dp"
                            >
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="结婚时间"
                                android:textColor="@color/black"
                                android:textSize="12sp"
                                android:alpha="0.54"
                                />
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="2020-10"
                                android:textColor="#DE000000"
                                android:textSize="14sp"
                                android:layout_marginTop="5dp"
                                />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:background="#6B000000"
                                android:layout_marginTop="8dp"
                                />
                        </LinearLayout>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="20dp"
                        >
                        <LinearLayout
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:orientation="vertical"
                            >
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="户籍地址"
                                android:textColor="@color/black"
                                android:textSize="12sp"
                                android:alpha="0.54"
                                />
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="广东省广州市"
                                android:textColor="#DE000000"
                                android:textSize="14sp"
                                android:layout_marginTop="5dp"
                                />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:background="#6B000000"
                                android:layout_marginTop="8dp"
                                />
                        </LinearLayout>
                        <LinearLayout
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:orientation="vertical"
                            android:layout_marginStart="40dp"
                            >
                        </LinearLayout>
                    </LinearLayout>
                </LinearLayout>
                <androidx.cardview.widget.CardView
                    android:id="@+id/card_spouse"
                    android:layout_width="match_parent"
                    android:layout_height="50dp"
                    android:layout_marginHorizontal="14dp"
                    app:cardCornerRadius="10dp"
                    app:cardElevation="3dp"
                    tools:layout_height="wrap_content"
                    >
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="vertical"
                        android:layout_marginHorizontal="6dp"
                        >
                        <LinearLayout
                            android:id="@+id/layout_title_spouse"
                            android:layout_width="match_parent"
                            android:layout_height="50dp"
                            android:gravity="center_vertical"
                            >
                            <TextView
                                android:layout_width="0dp"
                                android:layout_weight="1"
                                android:layout_height="wrap_content"
                                android:text="配偶情况"
                                android:textColor="@color/black"
                                android:textSize="20sp"
                                />
                            <ImageView
                                android:id="@+id/iv_spouse_fold"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:background="@{viewModel.isSpouseExpendedLiveData?@drawable/ic_unfold:@drawable/ic_fold}"
                                />
                        </LinearLayout>
                        <LinearLayout
                            android:id="@+id/layout_content_spouse"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:orientation="vertical"
                            >
                            <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                >
                                <LinearLayout
                                    android:layout_width="0dp"
                                    android:layout_height="wrap_content"
                                    android:layout_weight="1"
                                    android:orientation="vertical"
                                    >
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="姓名"
                                        android:textColor="@color/black"
                                        android:textSize="12sp"
                                        android:alpha="0.54"
                                        />
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="张三"
                                        android:textColor="#DE000000"
                                        android:textSize="14sp"
                                        android:layout_marginTop="5dp"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:background="#6B000000"
                                        android:layout_marginTop="8dp"
                                        />
                                </LinearLayout>
                                <LinearLayout
                                    android:layout_width="0dp"
                                    android:layout_height="wrap_content"
                                    android:layout_weight="1"
                                    android:orientation="vertical"
                                    android:layout_marginStart="40dp"
                                    >
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="婚姻状况"
                                        android:textColor="@color/black"
                                        android:textSize="12sp"
                                        android:alpha="0.54"
                                        />
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="已婚"
                                        android:textColor="#DE000000"
                                        android:textSize="14sp"
                                        android:layout_marginTop="5dp"
                                        android:drawableStart="@drawable/ic_radio_button"
                                        android:drawablePadding="8dp"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:background="#6B000000"
                                        android:layout_marginTop="8dp"
                                        />
                                </LinearLayout>
                            </LinearLayout>
                            <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:layout_marginTop="20dp"
                                >
                                <LinearLayout
                                    android:layout_width="0dp"
                                    android:layout_height="wrap_content"
                                    android:layout_weight="1"
                                    android:orientation="vertical"
                                    >
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="出生日期"
                                        android:textColor="@color/black"
                                        android:textSize="12sp"
                                        android:alpha="0.54"
                                        />
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="2010-01-01"
                                        android:textColor="#DE000000"
                                        android:textSize="14sp"
                                        android:layout_marginTop="5dp"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:background="#6B000000"
                                        android:layout_marginTop="8dp"
                                        />
                                </LinearLayout>
                                <LinearLayout
                                    android:layout_width="0dp"
                                    android:layout_height="wrap_content"
                                    android:layout_weight="1"
                                    android:orientation="vertical"
                                    android:layout_marginStart="40dp"
                                    >
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="户籍地址"
                                        android:textColor="@color/black"
                                        android:textSize="12sp"
                                        android:alpha="0.54"
                                        />
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="广东省广州市"
                                        android:textColor="#DE000000"
                                        android:textSize="14sp"
                                        android:layout_marginTop="5dp"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:background="#6B000000"
                                        android:layout_marginTop="8dp"
                                        />
                                </LinearLayout>
                            </LinearLayout>
                            <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:layout_marginTop="20dp"
                                android:layout_marginBottom="10dp"
                                >
                                <LinearLayout
                                    android:layout_width="0dp"
                                    android:layout_height="wrap_content"
                                    android:layout_weight="1"
                                    android:orientation="vertical"
                                    >
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="工作单位"
                                        android:textColor="@color/black"
                                        android:textSize="12sp"
                                        android:alpha="0.54"
                                        />
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="张氏公司"
                                        android:textColor="#DE000000"
                                        android:textSize="14sp"
                                        android:layout_marginTop="5dp"
                                        android:ellipsize="marquee"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:background="#6B000000"
                                        android:layout_marginTop="8dp"
                                        />
                                </LinearLayout>
                                <LinearLayout
                                    android:layout_width="0dp"
                                    android:layout_height="wrap_content"
                                    android:layout_weight="1"
                                    android:orientation="vertical"
                                    android:layout_marginStart="40dp"
                                    >
                                </LinearLayout>
                            </LinearLayout>
                        </LinearLayout>
                    </LinearLayout>
                </androidx.cardview.widget.CardView>
                <androidx.cardview.widget.CardView
                    android:id="@+id/card_predecessor"
                    android:layout_width="match_parent"
                    android:layout_height="50dp"
                    android:layout_marginHorizontal="14dp"
                    android:layout_marginTop="10dp"
                    app:cardCornerRadius="10dp"
                    app:cardElevation="2dp"
                    >
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="vertical"
                        android:layout_marginHorizontal="6dp"
                        >
                        <LinearLayout
                            android:id="@+id/layout_title_predecessor"
                            android:layout_width="match_parent"
                            android:layout_height="50dp"
                            android:gravity="center_vertical"
                            >
                            <TextView
                                android:layout_width="0dp"
                                android:layout_weight="1"
                                android:layout_height="wrap_content"
                                android:text="前任"
                                android:textColor="@color/black"
                                android:textSize="20sp"
                                />
                            <ImageView
                                android:id="@+id/iv_predecessor_fold"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:background="@{viewModel.isPredecessorExpendedLiveData?@drawable/ic_unfold:@drawable/ic_fold}"
                                />
                        </LinearLayout>
                        <LinearLayout
                            android:id="@+id/layout_content_predecessor"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:orientation="vertical"
                            >
                            <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                >
                                <LinearLayout
                                    android:layout_width="0dp"
                                    android:layout_height="wrap_content"
                                    android:layout_weight="1"
                                    android:orientation="vertical"
                                    >
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="姓名"
                                        android:textColor="@color/black"
                                        android:textSize="12sp"
                                        android:alpha="0.54"
                                        />
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="张三"
                                        android:textColor="#DE000000"
                                        android:textSize="14sp"
                                        android:layout_marginTop="5dp"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:background="#6B000000"
                                        android:layout_marginTop="8dp"
                                        />
                                </LinearLayout>
                                <LinearLayout
                                    android:layout_width="0dp"
                                    android:layout_height="wrap_content"
                                    android:layout_weight="1"
                                    android:orientation="vertical"
                                    android:layout_marginStart="40dp"
                                    >
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="婚姻状况"
                                        android:textColor="@color/black"
                                        android:textSize="12sp"
                                        android:alpha="0.54"
                                        />
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="离婚"
                                        android:textColor="#DE000000"
                                        android:textSize="14sp"
                                        android:layout_marginTop="5dp"
                                        android:drawableStart="@drawable/ic_radio_button"
                                        android:drawablePadding="8dp"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:background="#6B000000"
                                        android:layout_marginTop="8dp"
                                        />
                                </LinearLayout>
                            </LinearLayout>
                            <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:layout_marginTop="20dp"
                                >
                                <LinearLayout
                                    android:layout_width="0dp"
                                    android:layout_height="wrap_content"
                                    android:layout_weight="1"
                                    android:orientation="vertical"
                                    >
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="出生日期"
                                        android:textColor="@color/black"
                                        android:textSize="12sp"
                                        android:alpha="0.54"
                                        />
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="2010-01-01"
                                        android:textColor="#DE000000"
                                        android:textSize="14sp"
                                        android:layout_marginTop="5dp"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:background="#6B000000"
                                        android:layout_marginTop="8dp"
                                        />
                                </LinearLayout>
                                <LinearLayout
                                    android:layout_width="0dp"
                                    android:layout_height="wrap_content"
                                    android:layout_weight="1"
                                    android:orientation="vertical"
                                    android:layout_marginStart="40dp"
                                    >
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="户籍地址"
                                        android:textColor="@color/black"
                                        android:textSize="12sp"
                                        android:alpha="0.54"
                                        />
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="广东省广州市"
                                        android:textColor="#DE000000"
                                        android:textSize="14sp"
                                        android:layout_marginTop="5dp"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:background="#6B000000"
                                        android:layout_marginTop="8dp"
                                        />
                                </LinearLayout>
                            </LinearLayout>
                            <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:layout_marginTop="20dp"
                                android:layout_marginBottom="10dp"
                                >
                                <LinearLayout
                                    android:layout_width="0dp"
                                    android:layout_height="wrap_content"
                                    android:layout_weight="1"
                                    android:orientation="vertical"
                                    >
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="工作单位"
                                        android:textColor="@color/black"
                                        android:textSize="12sp"
                                        android:alpha="0.54"
                                        />
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="张氏公司"
                                        android:textColor="#DE000000"
                                        android:textSize="14sp"
                                        android:layout_marginTop="5dp"
                                        android:ellipsize="marquee"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:background="#6B000000"
                                        android:layout_marginTop="8dp"
                                        />
                                </LinearLayout>
                                <LinearLayout
                                    android:layout_width="0dp"
                                    android:layout_height="wrap_content"
                                    android:layout_weight="1"
                                    android:orientation="vertical"
                                    android:layout_marginStart="40dp"
                                    >
                                </LinearLayout>
                            </LinearLayout>
                        </LinearLayout>
                    </LinearLayout>
                </androidx.cardview.widget.CardView>
                <androidx.cardview.widget.CardView
                    android:id="@+id/card_procreate"
                    android:layout_width="match_parent"
                    android:layout_height="50dp"
                    android:layout_marginHorizontal="14dp"
                    android:layout_marginTop="10dp"
                    app:cardCornerRadius="10dp"
                    app:cardElevation="2dp"
                    >
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="vertical"
                        android:layout_marginHorizontal="6dp"
                        >
                        <LinearLayout
                            android:id="@+id/layout_title_procreate"
                            android:layout_width="match_parent"
                            android:layout_height="50dp"
                            android:gravity="center_vertical"
                            >
                            <TextView
                                android:layout_width="0dp"
                                android:layout_weight="1"
                                android:layout_height="wrap_content"
                                android:text="生育情况"
                                android:textColor="@color/black"
                                android:textSize="20sp"
                                />
                            <ImageView
                                android:id="@+id/iv_procreate_fold"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:background="@{viewModel.isProcreateExpendedLiveData?@drawable/ic_unfold:@drawable/ic_fold}"
                                />
                        </LinearLayout>
                        <LinearLayout
                            android:id="@+id/layout_content_procreate"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:orientation="vertical"
                            >
                            <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                >
                                <LinearLayout
                                    android:layout_width="0dp"
                                    android:layout_height="wrap_content"
                                    android:layout_weight="1"
                                    android:orientation="vertical"
                                    >
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="生育状况"
                                        android:textColor="@color/black"
                                        android:textSize="12sp"
                                        android:alpha="0.54"
                                        />
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="已生育"
                                        android:textColor="#DE000000"
                                        android:textSize="14sp"
                                        android:layout_marginTop="5dp"
                                        android:drawableStart="@drawable/ic_radio_button"
                                        android:drawablePadding="8dp"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:background="#6B000000"
                                        android:layout_marginTop="8dp"
                                        />
                                </LinearLayout>
                                <LinearLayout
                                    android:layout_width="0dp"
                                    android:layout_height="wrap_content"
                                    android:layout_weight="1"
                                    android:orientation="vertical"
                                    android:layout_marginStart="40dp"
                                    >
                                </LinearLayout>
                            </LinearLayout>
                            <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:layout_marginTop="20dp"
                                >
                                <LinearLayout
                                    android:layout_width="0dp"
                                    android:layout_height="wrap_content"
                                    android:layout_weight="1"
                                    android:orientation="vertical"
                                    >
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="领取《计划生育服务手册》"
                                        android:textColor="@color/black"
                                        android:textSize="12sp"
                                        android:alpha="0.54"
                                        />
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="是"
                                        android:textColor="#DE000000"
                                        android:textSize="14sp"
                                        android:layout_marginTop="5dp"
                                        android:drawableStart="@drawable/ic_radio_button"
                                        android:drawablePadding="8dp"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:background="#6B000000"
                                        android:layout_marginTop="8dp"
                                        />
                                </LinearLayout>
                                <LinearLayout
                                    android:layout_width="0dp"
                                    android:layout_height="wrap_content"
                                    android:layout_weight="1"
                                    android:orientation="vertical"
                                    android:layout_marginStart="40dp"
                                    >
                                </LinearLayout>
                            </LinearLayout>
                            <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:layout_marginTop="20dp"
                                android:layout_marginBottom="10dp"
                                >
                                <LinearLayout
                                    android:layout_width="0dp"
                                    android:layout_height="wrap_content"
                                    android:layout_weight="1"
                                    android:orientation="vertical"
                                    >
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="领取《独生子女证》"
                                        android:textColor="@color/black"
                                        android:textSize="12sp"
                                        android:alpha="0.54"
                                        />
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="是"
                                        android:textColor="#DE000000"
                                        android:textSize="14sp"
                                        android:layout_marginTop="5dp"
                                        android:drawableStart="@drawable/ic_radio_button"
                                        android:drawablePadding="8dp"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:background="#6B000000"
                                        android:layout_marginTop="8dp"
                                        />
                                </LinearLayout>
                                <LinearLayout
                                    android:layout_width="0dp"
                                    android:layout_height="wrap_content"
                                    android:layout_weight="1"
                                    android:orientation="vertical"
                                    android:layout_marginStart="40dp"
                                    >
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="领取时间"
                                        android:textColor="@color/black"
                                        android:textSize="12sp"
                                        android:alpha="0.54"
                                        />
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:maxLines="1"
                                        android:text="2023-01-01"
                                        android:textColor="#DE000000"
                                        android:textSize="14sp"
                                        android:layout_marginTop="5dp"
                                        />
                                    <View
                                        android:layout_width="match_parent"
                                        android:layout_height="1dp"
                                        android:background="#6B000000"
                                        android:layout_marginTop="8dp"
                                        />
                                </LinearLayout>
                            </LinearLayout>
                        </LinearLayout>
                    </LinearLayout>
                </androidx.cardview.widget.CardView>
            </LinearLayout>
        </ScrollView>
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>
app/src/main/res/layout/activity_pet.xml
New file
@@ -0,0 +1,144 @@
<?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="viewModel"
            type="com.application.zhangshi_app_android.ui.function.PetActivityViewModel" />
    </data>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <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"
                >
                <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="@dimen/sp_20"
                    />
                <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="在“家大事记内搜索”"
                    />
                <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"
            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>
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:background="@color/color_normal_background"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/titleBar"
            app:layout_constraintVertical_bias="1.0"
            tools:itemCount="20"
            tools:layout_editor_absoluteX="-81dp"
            tools:listitem="@layout/item_family_assets" />
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>
app/src/main/res/layout/activity_property.xml
New file
@@ -0,0 +1,143 @@
<?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="viewModel"
            type="com.application.zhangshi_app_android.ui.function.PropertyActivityViewModel" />
    </data>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <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"
                >
                <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="@dimen/sp_20"
                    />
                <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="在“家大事记内搜索”"
                    />
                <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"
            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>
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:background="@color/color_normal_background"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/titleBar"
            app:layout_constraintVertical_bias="1.0"
            tools:itemCount="20"
            />
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>
app/src/main/res/layout/activity_property_detail.xml
New file
@@ -0,0 +1,225 @@
<?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="viewModel"
            type="com.application.zhangshi_app_android.ui.function.PropertyDetailActivityViewModel" />
    </data>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/color_normal_background"
        android:orientation="vertical">
        <com.android.app_base.widget.ExtendTitleBar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:title="@{viewModel.beanLiveData.name+`(仅供查看)`}"
            app:titleGravity="left"
            />
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            >
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:paddingHorizontal="20dp"
                android:paddingBottom="20dp"
                >
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="@dimen/dp_10"
                    android:layout_height="@dimen/dp_20"
                    android:text="时间"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="text"
                    android:autofillHints="creditCardNumber"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:textSize="16sp"
                    android:text="@={viewModel.beanLiveData.createTime}"
                    />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="财产类别"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.type}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="收支名称"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:text="@={viewModel.beanLiveData.name}"
                    android:textColor="#DE000000"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="价值(金额)"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.price}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="期限"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.term}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="更变或注销"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.status}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="产权"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.propertyRight}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="存放位置"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.location}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="备注"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="2dp"
                    android:inputType="text"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.remark}"
                    android:textSize="16sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
                    android:layout_height="wrap_content"
                    android:text="电子文件"
                    android:textColor="#767375"
                    android:textSize="12sp"
                    />
                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/shape_6b0000_stroke"
                    >
                    <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:layout_marginBottom="10dp"
                        android:layout_marginTop="2sp"
                        android:paddingStart="10dp"
                        android:paddingEnd="5dp"
                        android:paddingVertical="10dp"
                        />
                </RelativeLayout>
            </LinearLayout>
        </ScrollView>
    </LinearLayout>
</layout>
app/src/main/res/layout/fragment_home.xml
@@ -9,9 +9,60 @@
            type="com.application.zhangshi_app_android.ui.home.HomeFragmentViewModel" />
    </data>
    <androidx.constraintlayout.widget.ConstraintLayout
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        >
    </androidx.constraintlayout.widget.ConstraintLayout>
        <com.android.app_base.widget.ExtendTitleBar
            android:id="@+id/titleBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:title="家根网(仅供查看)"
            app:titleGravity="left" />
        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            >
            <com.application.zhangshi_app_android.widget.TreeView
                android:id="@+id/treeView"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                />
            <androidx.constraintlayout.widget.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:visibility="gone"
                android:id="@+id/layout_home_root_net"
                >
                <ImageView
                    android:id="@+id/iv_treeView"
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    app:layout_constraintDimensionRatio="360:417"
                    android:background="@drawable/bg_home_root_net"
                    app:layout_constraintBottom_toBottomOf="parent" />
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:background="@drawable/bg_home_root_net_grass"
                    app:layout_constraintBottom_toBottomOf="@id/iv_treeView"
                    app:layout_constraintDimensionRatio="350:217"
                    android:layout_marginBottom="-56dp"
                    />
            </androidx.constraintlayout.widget.ConstraintLayout>
            <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/rv_home_member"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:visibility="gone"
                />
        </androidx.constraintlayout.widget.ConstraintLayout>
    </LinearLayout>
</layout>
app/src/main/res/layout/item_certificate_of_honor.xml
New file
@@ -0,0 +1,268 @@
<?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.CertificateOfHonorBean" />
    </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="@color/color_card_pink"
            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="@dimen/dp_40"
                    android:gravity="center_vertical">
                    <TextView
                        android:id="@+id/textView2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="24dp"
                        android:text="@{bean.name}"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_16"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="创立张氏公司" />
                    <TextView
                        android:id="@+id/tv_time"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@{bean.effectiveTime}"
                        android:textColor="@color/black"
                        android:textSize="16sp"
                        android:layout_marginEnd="20dp"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="2019-01-12" />
                </androidx.constraintlayout.widget.ConstraintLayout>
                <LinearLayout
                    android:id="@+id/layout_content"
                    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="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="类别:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.type}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="证号/专业:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.certificateNumber}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="级别:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.level}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="有效时间:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.effectiveTime}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="获得时间:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.getTime}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="存放位置:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.location}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="备注:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.remark}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="@dimen/dp_6"
                        android:text="电子文件:"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_12"
                        android:textStyle="bold"
                        />
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_15"
                        >
                        <androidx.recyclerview.widget.RecyclerView
                            android:id="@+id/rv_image"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            tools:listitem="@layout/item_image"
                            tools:itemCount="3"
                            />
                    </LinearLayout>
                </LinearLayout>
            </LinearLayout>
        </androidx.cardview.widget.CardView>
    </LinearLayout>
</layout>
app/src/main/res/layout/item_clean_storage.xml
New file
@@ -0,0 +1,235 @@
<?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.CleanStorageBean" />
    </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="@color/color_card_pink"
            >
            <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="@dimen/dp_40"
                    android:gravity="center_vertical">
                    <TextView
                        android:id="@+id/textView2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="24dp"
                        android:text="@{bean.type}"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_16"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="房产证" />
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerInParent="true"
                        android:gravity="center"
                        android:text="@{bean.suitablePeople}"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_16"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintHorizontal_bias="0.45"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="张三" />
                    <TextView
                        android:id="@+id/tv_time"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@{bean.category}"
                        android:textColor="@color/black"
                        android:textSize="16sp"
                        android:layout_marginEnd="20dp"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="2019-01-12" />
                </androidx.constraintlayout.widget.ConstraintLayout>
                <LinearLayout
                    android:id="@+id/layout_content"
                    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="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="序号:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{String.valueOf(bean.id)}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="保洁方法:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.cleanMethod}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="材料存放地:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.materialStorageLocation}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="放置地点:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.placementLocation}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="备注:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.remark}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="@dimen/dp_6"
                        android:text="电子文件:"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_12"
                        android:textStyle="bold"
                        />
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_15"
                        >
                        <androidx.recyclerview.widget.RecyclerView
                            android:id="@+id/rv_image"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            tools:listitem="@layout/item_image"
                            tools:itemCount="3"
                            />
                    </LinearLayout>
                </LinearLayout>
            </LinearLayout>
        </androidx.cardview.widget.CardView>
    </LinearLayout>
</layout>
app/src/main/res/layout/item_family_assets.xml
@@ -26,49 +26,58 @@
                android:layout_height="wrap_content"
                android:orientation="vertical"
                >
                <RelativeLayout
                <androidx.constraintlayout.widget.ConstraintLayout
                    android:id="@+id/layout_title"
                    android:layout_width="match_parent"
                    android:layout_height="@dimen/dp_40"
                    android:gravity="center_vertical"
                    >
                    android:gravity="center_vertical">
                    <TextView
                        android:id="@+id/textView2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerVertical="true"
                        android:layout_marginStart="24dp"
                        android:textSize="@dimen/sp_16"
                        android:textColor="@color/black"
                        android:text="@{bean.type}"
                        android:textStyle="bold"
                        tools:text="房产证"
                        />
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_16"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="房产证" />
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerInParent="true"
                        android:layout_centerHorizontal="true"
                        android:layout_marginStart="24dp"
                        android:gravity="center"
                        android:text="@{bean.holder}"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_16"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintHorizontal_bias="0.45"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="张三" />
                    <TextView
                        android:id="@+id/tv_time"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="@dimen/sp_16"
                        android:textColor="@color/black"
                        android:text="@{bean.createTime}"
                        android:textStyle="bold"
                        android:layout_marginEnd="24dp"
                        android:layout_alignParentEnd="true"
                        android:layout_centerVertical="true"
                        tools:text="2019-01-12"
                        />
                        android:textColor="@color/black"
                        android:textSize="16sp"
                        android:layout_marginEnd="20dp"
                </RelativeLayout>
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="2019-01-12" />
                </androidx.constraintlayout.widget.ConstraintLayout>
                <LinearLayout
                    android:id="@+id/layout_content"
                    android:layout_width="match_parent"
@@ -88,7 +97,7 @@
                            android:text="序号:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
@@ -96,7 +105,7 @@
                            android:text="@{String.valueOf(bean.id)}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
@@ -111,7 +120,7 @@
                            android:text="证件卡号:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
@@ -119,7 +128,7 @@
                            android:text="@{bean.title}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
@@ -134,7 +143,7 @@
                            android:text="开户行:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
@@ -142,7 +151,7 @@
                            android:text="@{bean.location}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
@@ -157,7 +166,7 @@
                            android:text="存放地点:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
@@ -165,7 +174,7 @@
                            android:text="@{bean.address}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
@@ -181,7 +190,7 @@
                            android:text="备注:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
@@ -189,7 +198,7 @@
                            android:text="@{bean.remark}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <TextView
@@ -199,7 +208,7 @@
                        android:text="电子文件:"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_12"
                        android:textStyle="bold"
                        />
                    <LinearLayout
                        android:layout_width="match_parent"
app/src/main/res/layout/item_family_memorabilia.xml
@@ -16,14 +16,14 @@
        <androidx.cardview.widget.CardView
            android:id="@+id/cardView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_height="40dp"
            android:layout_margin="@dimen/dp_2"
            app:cardCornerRadius="@dimen/dp_10"
            app:cardBackgroundColor="@color/color_card_pink"
            >
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                >
                <RelativeLayout
@@ -50,7 +50,6 @@
                        android:textColor="@color/black"
                        android:text="@{bean.title}"
                        android:layout_weight="1"
                        android:textStyle="bold"
                        />
                    <TextView
                        android:layout_width="wrap_content"
@@ -58,7 +57,6 @@
                        android:textSize="@dimen/sp_16"
                        android:textColor="@color/black"
                        android:text="@{bean.createTime}"
                        android:textStyle="bold"
                        android:layout_marginEnd="24dp"
                        android:layout_alignParentEnd="true"
                        android:layout_centerVertical="true"
@@ -83,7 +81,7 @@
                            android:text="序号:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
@@ -91,7 +89,7 @@
                            android:text="@{String.valueOf(bean.id)}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
@@ -106,7 +104,7 @@
                            android:text="人物:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
@@ -114,7 +112,7 @@
                            android:text="@{bean.people}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
@@ -129,7 +127,7 @@
                            android:text="备注:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
@@ -137,7 +135,7 @@
                            android:text="@{bean.remark}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <TextView
@@ -147,7 +145,7 @@
                        android:text="电子文件:"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_12"
                        android:textStyle="bold"
                        />
                    <LinearLayout
                        android:layout_width="match_parent"
@@ -187,7 +185,7 @@
                                android:text="修改"
                                android:textColor="@color/black"
                                android:textSize="@dimen/sp_14"
                                android:textStyle="bold"
                                android:layout_marginStart="@dimen/dp_4"
                                />
                        </LinearLayout>
@@ -210,7 +208,7 @@
                                android:text="删除"
                                android:textColor="#FFE86F72"
                                android:textSize="@dimen/sp_14"
                                android:textStyle="bold"
                                android:layout_marginStart="@dimen/dp_4"
                                />
                        </LinearLayout>
app/src/main/res/layout/item_home_devices.xml
@@ -26,50 +26,59 @@
                android:layout_height="wrap_content"
                android:orientation="vertical"
                >
                <LinearLayout
                <androidx.constraintlayout.widget.ConstraintLayout
                    android:id="@+id/layout_title"
                    android:layout_width="match_parent"
                    android:layout_height="@dimen/dp_40"
                    android:gravity="center_vertical"
                    >
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerVertical="true"
                        android:layout_marginStart="24dp"
                        android:textSize="@dimen/sp_16"
                        android:textColor="@color/black"
                        android:text="@{bean.name}"
                        android:textStyle="bold"
                        tools:text="电视"
                        />
                    android:gravity="center_vertical">
                    <TextView
                        android:layout_width="0dp"
                        android:layout_weight="1"
                        android:id="@+id/textView2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="24dp"
                        android:text="@{bean.name}"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_16"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="电视" />
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerInParent="true"
                        android:layout_marginStart="24dp"
                        android:text="@{bean.address}"
                        android:gravity="center"
                        android:text="@{bean.location}"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_16"
                        android:textStyle="bold"
                        android:gravity="center"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintHorizontal_bias="0.45"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="张三" />
                    <TextView
                        android:id="@+id/textView"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="@dimen/sp_16"
                        android:text="@{bean.createDate}"
                        android:textColor="@color/black"
                        android:text="@{bean.createTime}"
                        android:textSize="16sp"
                        android:layout_marginEnd="20dp"
                        android:textStyle="bold"
                        android:layout_marginEnd="24dp"
                        android:layout_alignParentEnd="true"
                        android:layout_centerVertical="true"
                        tools:text="2019-01-12"
                        />
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="2019-01-12" />
                </LinearLayout>
                </androidx.constraintlayout.widget.ConstraintLayout>
                <LinearLayout
                    android:id="@+id/layout_content"
                    android:layout_width="match_parent"
@@ -117,7 +126,7 @@
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.people}"
                            android:text="@{bean.buyer}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
app/src/main/res/layout/item_home_member_list.xml
New file
@@ -0,0 +1,234 @@
<?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.HomeMemberBean" />
    </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="@color/color_card_pink"
            app:cardElevation="0dp"
            >
            <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="@dimen/dp_40"
                    android:gravity="center_vertical">
                    <TextView
                        android:id="@+id/textView2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="24dp"
                        android:text="@{bean.generation}"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_16"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="第一代" />
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerInParent="true"
                        android:gravity="center"
                        android:text="@{bean.name}"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_16"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintHorizontal_bias="0.55"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="张三" />
                    <TextView
                        android:id="@+id/tv_time"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@{bean.gender}"
                        android:textColor="@color/black"
                        android:textSize="16sp"
                        android:layout_marginEnd="20dp"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="男" />
                </androidx.constraintlayout.widget.ConstraintLayout>
                <androidx.constraintlayout.widget.ConstraintLayout
                    android:id="@+id/layout_content"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    android:paddingStart="@dimen/dp_24"
                    android:paddingVertical="13dp"
                    >
                    <androidx.constraintlayout.utils.widget.ImageFilterView
                        android:id="@+id/imageFilterView2"
                        android:layout_width="100dp"
                        android:layout_height="100dp"
                        android:background="@color/teal_200"
                        app:imageUrl="@{bean.url}"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:round="20dp" />
                    <LinearLayout
                        android:id="@+id/linearLayout4"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toEndOf="@+id/imageFilterView2"
                        app:layout_constraintTop_toTopOf="@+id/imageFilterView2"
                        app:layout_constraintBottom_toTopOf="@id/linearLayout5"
                        app:layout_constraintVertical_chainStyle="spread_inside"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="出生日期 :"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.birthday}"
                            android:textColor="#FF000000"
                            android:textSize="12sp"
                            tools:text="2021-01-01" />
                    </LinearLayout>
                    <LinearLayout
                        android:id="@+id/linearLayout5"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        app:layout_constraintStart_toStartOf="@+id/linearLayout4"
                        app:layout_constraintTop_toBottomOf="@+id/linearLayout4"
                        app:layout_constraintBottom_toTopOf="@id/linearLayout6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="去世时间 :"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.deathDay}"
                            android:textColor="#FF000000"
                            android:textSize="12sp"
                            tools:text="2021-01-01" />
                    </LinearLayout>
                    <LinearLayout
                        android:id="@+id/linearLayout6"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        app:layout_constraintStart_toStartOf="@+id/linearLayout4"
                        app:layout_constraintTop_toBottomOf="@+id/linearLayout5"
                        app:layout_constraintBottom_toTopOf="@id/linearLayout7"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="手机号 : "
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.phone}"
                            android:textColor="#FF000000"
                            android:textSize="12sp"
                            tools:text="12345678901" />
                    </LinearLayout>
                    <LinearLayout
                        android:id="@+id/linearLayout7"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        app:layout_constraintStart_toStartOf="@+id/linearLayout4"
                        app:layout_constraintTop_toBottomOf="@+id/linearLayout6"
                        app:layout_constraintBottom_toTopOf="@id/linearLayout8"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="所在单位 : "
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.company}"
                            android:textColor="#FF000000"
                            android:textSize="12sp"
                            tools:text="张氏公司" />
                    </LinearLayout>
                    <LinearLayout
                        android:id="@+id/linearLayout8"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        app:layout_constraintBottom_toBottomOf="@+id/imageFilterView2"
                        app:layout_constraintStart_toStartOf="@+id/linearLayout4"
                        app:layout_constraintTop_toBottomOf="@+id/linearLayout7">
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="配偶 : "
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.spouse}"
                            android:textColor="#FF000000"
                            android:textSize="12sp"
                            tools:text="张三" />
                    </LinearLayout>
                </androidx.constraintlayout.widget.ConstraintLayout>
            </LinearLayout>
        </androidx.cardview.widget.CardView>
    </LinearLayout>
</layout>
app/src/main/res/layout/item_honor_collection.xml
New file
@@ -0,0 +1,236 @@
<?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.HonorCollectionBean" />
    </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="@color/color_card_pink"
            >
            <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="@dimen/dp_40"
                    android:gravity="center_vertical">
                    <TextView
                        android:id="@+id/textView2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="24dp"
                        android:text="@{bean.type}"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_16"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="房产证" />
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerInParent="true"
                        android:gravity="center"
                        android:text="@{bean.owner}"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_16"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintHorizontal_bias="0.45"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="张三" />
                    <TextView
                        android:id="@+id/tv_time"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@{bean.getTime}"
                        android:textColor="@color/black"
                        android:textSize="16sp"
                        android:layout_marginEnd="20dp"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="2019-01-12" />
                </androidx.constraintlayout.widget.ConstraintLayout>
                <LinearLayout
                    android:id="@+id/layout_content"
                    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="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="名称:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.name}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="来源:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.source}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="价值:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.price}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="存放位置:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.location}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="备注:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.remark}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="@dimen/dp_6"
                        android:text="电子文件:"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_12"
                        android:textStyle="bold"
                        />
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_15"
                        >
                        <androidx.recyclerview.widget.RecyclerView
                            android:id="@+id/rv_image"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            tools:listitem="@layout/item_image"
                            tools:itemCount="3"
                            />
                    </LinearLayout>
                </LinearLayout>
            </LinearLayout>
        </androidx.cardview.widget.CardView>
    </LinearLayout>
</layout>
app/src/main/res/layout/item_hundred_wish.xml
New file
@@ -0,0 +1,245 @@
<?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.HundredWishBean" />
    </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="@color/color_card_pink"
            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="@dimen/dp_40"
                    android:gravity="center_vertical">
                    <TextView
                        android:id="@+id/textView2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="24dp"
                        android:text="@{bean.title}"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_16"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="创立张氏公司" />
                    <TextView
                        android:id="@+id/tv_time"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@{bean.createTime}"
                        android:textColor="@color/black"
                        android:textSize="16sp"
                        android:layout_marginEnd="20dp"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="2019-01-12" />
                </androidx.constraintlayout.widget.ConstraintLayout>
                <LinearLayout
                    android:id="@+id/layout_content"
                    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="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="始于何因:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.reason}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="受惠人:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.beneficiary}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="继承人:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.heir}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="实现难度:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.difficulty}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="是否依旧有效:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.isEffective==1?`是`:`否`}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="备注:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.remark}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="@dimen/dp_6"
                        android:text="电子文件:"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_12"
                        android:textStyle="bold"
                        />
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_15"
                        >
                        <androidx.recyclerview.widget.RecyclerView
                            android:id="@+id/rv_image"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            tools:listitem="@layout/item_image"
                            tools:itemCount="3"
                            />
                    </LinearLayout>
                </LinearLayout>
            </LinearLayout>
        </androidx.cardview.widget.CardView>
    </LinearLayout>
</layout>
app/src/main/res/layout/item_image_footer.xml
@@ -1,18 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="@dimen/dp_85"
    android:layout_height="@dimen/dp_85"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:gravity="center"
    android:background="@drawable/shape_73fab4cd_solid"
    android:layout_marginTop="8dp"
    android:layout_marginStart="2dp"
    >
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/ic_import_add"
        />
    <FrameLayout
        android:layout_width="85dp"
        android:layout_height="85dp"
        android:layout_marginTop="7.5dp"
        android:layout_marginBottom="7.5dp"
        android:layout_marginEnd="7.5dp"
        android:background="@drawable/shape_73fab4cd_solid"
        >
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/ic_import_add"
            android:layout_gravity="center"
            />
    </FrameLayout>
</LinearLayout>
app/src/main/res/layout/item_income_and_expenses.xml
New file
@@ -0,0 +1,257 @@
<?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.IncomeAndExpensesBean" />
    </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="@color/color_card_pink"
            >
            <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="@dimen/dp_40"
                    android:gravity="center_vertical">
                    <TextView
                        android:id="@+id/textView2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="24dp"
                        android:text="@{bean.type==0?`基金`:`台账`}"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_16"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="房产证" />
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerInParent="true"
                        android:gravity="center"
                        android:text="@{bean.price}"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_16"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintHorizontal_bias="0.5"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="张三" />
                    <TextView
                        android:id="@+id/tv_time"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@{bean.usePeople}"
                        android:textColor="@color/black"
                        android:textSize="16sp"
                        android:layout_marginEnd="20dp"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="2019-01-12" />
                </androidx.constraintlayout.widget.ConstraintLayout>
                <LinearLayout
                    android:id="@+id/layout_content"
                    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="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="序号:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{String.valueOf(bean.id)}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="时间:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.createTime}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="用途:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.useFor}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="现金/自动划扣:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.kind==0?`现金`:`自动划扣`}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="余额:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.balance}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="备注:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.remark}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            />
                    </LinearLayout>
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="@dimen/dp_6"
                        android:text="电子文件:"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_12"
                        />
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_15"
                        >
                        <androidx.recyclerview.widget.RecyclerView
                            android:id="@+id/rv_image"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            tools:listitem="@layout/item_image"
                            tools:itemCount="3"
                            />
                    </LinearLayout>
                </LinearLayout>
            </LinearLayout>
        </androidx.cardview.widget.CardView>
    </LinearLayout>
</layout>
app/src/main/res/layout/item_little_doctor.xml
New file
@@ -0,0 +1,264 @@
<?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.LittleDoctorBean" />
    </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="@color/color_card_pink"
            >
            <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="@dimen/dp_40"
                    android:gravity="center_vertical">
                    <TextView
                        android:id="@+id/textView2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="24dp"
                        android:text="@{bean.type}"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_16"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="房产证" />
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerInParent="true"
                        android:gravity="center"
                        android:text="@{bean.suitable}"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_16"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintHorizontal_bias="0.45"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="张三" />
                    <TextView
                        android:id="@+id/tv_time"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@{bean.duration}"
                        android:textColor="@color/black"
                        android:textSize="16sp"
                        android:layout_marginEnd="20dp"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="2019-01-12" />
                </androidx.constraintlayout.widget.ConstraintLayout>
                <LinearLayout
                    android:id="@+id/layout_content"
                    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="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="序号:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{String.valueOf(bean.id)}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="类型:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.type}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="vertical"
                        android:layout_marginBottom="@dimen/dp_6"
                        android:layout_marginTop="5dp"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="中医处方:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_marginTop="3dp"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:text="@{bean.cmedical}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="vertical"
                        android:layout_marginBottom="@dimen/dp_6"
                        android:layout_marginTop="5dp"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="西医处方:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_marginTop="3dp"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:text="@{bean.wmedical}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        android:layout_marginTop="5dp"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="功效:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.effect}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="备注:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.remark}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="@dimen/dp_6"
                        android:text="电子文件:"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_12"
                        android:textStyle="bold"
                        />
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_15"
                        >
                        <androidx.recyclerview.widget.RecyclerView
                            android:id="@+id/rv_image"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            tools:listitem="@layout/item_image"
                            tools:itemCount="3"
                            />
                    </LinearLayout>
                </LinearLayout>
            </LinearLayout>
        </androidx.cardview.widget.CardView>
    </LinearLayout>
</layout>
app/src/main/res/layout/item_pet.xml
New file
@@ -0,0 +1,175 @@
<?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.PetBean" />
    </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="wrap_content"
            android:layout_margin="@dimen/dp_2"
            app:cardCornerRadius="@dimen/dp_10"
            app:cardBackgroundColor="@color/color_card_pink"
            >
            <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="@dimen/dp_40"
                    android:gravity="center_vertical">
                    <TextView
                        android:id="@+id/textView2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="40dp"
                        android:text="@{bean.name}"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_16"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="小黄" />
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerInParent="true"
                        android:gravity="center"
                        android:text="@{bean.type}"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_16"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintHorizontal_bias="0.5"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="金毛" />
                    <TextView
                        android:id="@+id/tv_time"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@{bean.sex == 1?`雄性` : `雌性`}"
                        android:textColor="@color/black"
                        android:textSize="16sp"
                        android:layout_marginEnd="40dp"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="雄性" />
                </androidx.constraintlayout.widget.ConstraintLayout>
                <LinearLayout
                    android:id="@+id/layout_content"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    android:paddingHorizontal="@dimen/dp_24"
                    >
                    <View
                        android:layout_width="match_parent"
                        android:layout_height="1dp"
                        android:background="#FFFFFFFF"
                        />
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@{bean.name+`的基本信息`}"
                        android:textColor="@color/black"
                        android:textSize="14sp"
                        tools:text="小黄的基本信息"
                        android:layout_marginTop="8dp"
                        android:layout_marginStart="16dp"
                        />
                    <androidx.constraintlayout.widget.ConstraintLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center_vertical"
                        android:layout_marginTop="8dp"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginStart="16dp"
                            android:text="@{bean.color}"
                            android:textColor="#80000000"
                            android:textSize="10sp"
                            android:textStyle="bold"
                            app:layout_constraintBottom_toBottomOf="parent"
                            app:layout_constraintStart_toStartOf="parent"
                            app:layout_constraintTop_toTopOf="parent"
                            tools:text="金黄色" />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_centerInParent="true"
                            android:gravity="center"
                            android:text="@{bean.birth.substring(0,10)}"
                            android:textColor="#80000000"
                            android:textSize="10sp"
                            android:textStyle="bold"
                            app:layout_constraintBottom_toBottomOf="parent"
                            app:layout_constraintEnd_toEndOf="parent"
                            app:layout_constraintHorizontal_bias="0.5"
                            app:layout_constraintStart_toStartOf="parent"
                            app:layout_constraintTop_toTopOf="parent"
                            tools:text="2010-03-01" />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.dialect}"
                            android:textColor="#80000000"
                            android:textSize="10sp"
                            android:layout_marginEnd="40dp"
                            android:textStyle="bold"
                            app:layout_constraintBottom_toBottomOf="parent"
                            app:layout_constraintEnd_toEndOf="parent"
                            app:layout_constraintTop_toTopOf="parent"
                            tools:text="雄性" />
                    </androidx.constraintlayout.widget.ConstraintLayout>
                    <View
                        android:layout_width="match_parent"
                        android:layout_height="1dp"
                        android:background="#FFFFFFFF"
                        />
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@{bean.name+`的基本信息`}"
                        android:textColor="@color/black"
                        android:textSize="14sp"
                        tools:text="小黄的基本信息"
                        android:layout_marginTop="8dp"
                        android:layout_marginStart="16dp"
                        />
                </LinearLayout>
            </LinearLayout>
        </androidx.cardview.widget.CardView>
    </LinearLayout>
</layout>
app/src/main/res/layout/item_property.xml
New file
@@ -0,0 +1,283 @@
<?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.PropertyBean" />
    </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="@color/color_card_pink"
            >
            <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="@dimen/dp_40"
                    android:gravity="center_vertical">
                    <TextView
                        android:id="@+id/textView2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="24dp"
                        android:text="@{bean.type}"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_16"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="房产证" />
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerInParent="true"
                        android:gravity="center"
                        android:text="@{bean.propertyRight}"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_16"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintHorizontal_bias="0.45"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="张三" />
                    <TextView
                        android:id="@+id/tv_time"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@{bean.price}"
                        android:textColor="@color/black"
                        android:textSize="16sp"
                        android:layout_marginEnd="20dp"
                        android:textStyle="bold"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        tools:text="2019-01-12" />
                </androidx.constraintlayout.widget.ConstraintLayout>
                <LinearLayout
                    android:id="@+id/layout_content"
                    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="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="日期:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.createTime}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="收支名称:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.name}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="期限:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.term}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="变更或注销:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.status}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="存放位置:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.location}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="是否注销:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.status}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_6"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="备注:"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@{bean.remark}"
                            android:textColor="@color/black"
                            android:textSize="@dimen/sp_12"
                            android:textStyle="bold"
                            />
                    </LinearLayout>
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="@dimen/dp_6"
                        android:text="电子文件:"
                        android:textColor="@color/black"
                        android:textSize="@dimen/sp_12"
                        android:textStyle="bold"
                        />
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="@dimen/dp_15"
                        >
                        <androidx.recyclerview.widget.RecyclerView
                            android:id="@+id/rv_image"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            tools:listitem="@layout/item_image"
                            tools:itemCount="3"
                            />
                    </LinearLayout>
                </LinearLayout>
            </LinearLayout>
        </androidx.cardview.widget.CardView>
    </LinearLayout>
</layout>
app/src/main/res/layout/layout_tree_view.xml
New file
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:src="@drawable/bg_home_root_net_detail"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintDimensionRatio="676:505"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <androidx.constraintlayout.utils.widget.ImageFilterView
        android:id="@+id/imageFilterView"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="@color/design_default_color_background"
        app:roundPercent="1"
        app:layout_constraintDimensionRatio="1"
        app:layout_constraintWidth_percent="0.053"
        app:layout_constraintHorizontal_bias="0.37"
        app:layout_constraintVertical_bias="0.334"
        app:layout_constraintEnd_toEndOf="@id/imageView"
        app:layout_constraintStart_toStartOf="@id/imageView"
        app:layout_constraintBottom_toBottomOf="@id/imageView"
        app:layout_constraintTop_toTopOf="@id/imageView"
        />
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout/pop_basic_information.xml
New file
@@ -0,0 +1,1546 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/transparent"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:background="@color/transparent"
        >
        <androidx.cardview.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:cardCornerRadius="6dp"
            app:cardBackgroundColor="#F6FFFFFF"
            app:cardElevation="10dp"
            android:layout_marginHorizontal="10dp"
            android:layout_marginVertical="15dp"
            >
            <androidx.constraintlayout.widget.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginEnd="7dp"
                android:layout_marginStart="10dp"
                android:layout_marginVertical="24dp"
                >
                <androidx.constraintlayout.utils.widget.ImageFilterView
                    android:id="@+id/iv_photo"
                    android:layout_width="105dp"
                    android:layout_height="105dp"
                    android:background="@color/teal_200"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    app:round="10dp" />
                <TextView
                    android:id="@+id/tv_basic_personal_information"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="10dp"
                    android:text="个人基本信息"
                    android:textColor="#99000000"
                    android:textSize="10sp"
                    app:layout_constraintStart_toEndOf="@+id/iv_photo"
                    app:layout_constraintTop_toTopOf="parent"
                    app:layout_constraintBottom_toTopOf="@id/layout_personal_1"
                    app:layout_constraintVertical_chainStyle="spread_inside"
                    />
                <LinearLayout
                    android:id="@+id/layout_personal_1"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    app:layout_constraintHorizontal_chainStyle="spread_inside"
                    app:layout_constraintBottom_toTopOf="@id/layout_personal_2"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="@+id/tv_basic_personal_information"
                    app:layout_constraintTop_toBottomOf="@id/tv_basic_personal_information">
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_fffad1e0_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="姓名"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="姓名"
                                android:textColor="#FF000000"
                                android:textSize="12sp"
                                android:layout_marginStart="12dp"
                                />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFFAD1E0"
                                />
                        </FrameLayout>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:layout_marginStart="10dp"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_fffad1e0_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="性别"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="女"
                                android:textColor="#FF000000"
                                android:layout_marginStart="12dp"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFFAD1E0"
                                />
                        </FrameLayout>
                    </LinearLayout>
                </LinearLayout>
                <LinearLayout
                    android:id="@+id/layout_personal_2"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    app:layout_constraintStart_toStartOf="@+id/tv_basic_personal_information"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintTop_toBottomOf="@+id/layout_personal_1"
                    app:layout_constraintBottom_toTopOf="@id/layout_personal_3"
                    >
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_fffad1e0_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="身份"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="第一代"
                                android:textColor="#FF000000"
                                android:textSize="12sp"
                                android:layout_marginStart="12dp"
                                />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFFAD1E0"
                                />
                        </FrameLayout>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:layout_marginStart="10dp"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_fffad1e0_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="年龄"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="18"
                                android:textColor="#FF000000"
                                android:layout_marginStart="12dp"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFFAD1E0"
                                />
                        </FrameLayout>
                    </LinearLayout>
                </LinearLayout>
                <LinearLayout
                    android:id="@+id/layout_personal_3"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    app:layout_constraintBottom_toBottomOf="@+id/iv_photo"
                    app:layout_constraintStart_toStartOf="@+id/tv_basic_personal_information"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintTop_toBottomOf="@+id/layout_personal_2">
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_fffad1e0_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="曾用名"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="张四"
                                android:textColor="#FF000000"
                                android:textSize="12sp"
                                android:layout_marginStart="12dp"
                                />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFFAD1E0"
                                />
                        </FrameLayout>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:layout_marginStart="10dp"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_fffad1e0_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="民族"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="汉族"
                                android:textColor="#FF000000"
                                android:layout_marginStart="12dp"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFFAD1E0"
                                />
                        </FrameLayout>
                    </LinearLayout>
                </LinearLayout>
                <LinearLayout
                    android:id="@+id/layout_personal_4"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="24dp"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toBottomOf="@+id/iv_photo">
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_fffad1e0_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="婚姻状况"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:layout_marginStart="6dp"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="已婚"
                                android:textColor="#FF000000"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFFAD1E0" />
                        </FrameLayout>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:layout_marginStart="10dp">
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_fffad1e0_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="配偶"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginStart="12dp"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="张四"
                                android:textColor="#FF000000"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFFAD1E0" />
                        </FrameLayout>
                    </LinearLayout>
                </LinearLayout>
                <LinearLayout
                    android:id="@+id/layout_personal_5"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="16dp"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toBottomOf="@+id/layout_personal_4">
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_fffad1e0_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="户籍地址"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:layout_marginStart="6dp"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="广东省广州市"
                                android:textColor="#FF000000"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFFAD1E0" />
                        </FrameLayout>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:layout_marginStart="10dp">
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_fffad1e0_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="联系方式"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginStart="5dp"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="12345678901"
                                android:textColor="#FF000000"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFFAD1E0" />
                        </FrameLayout>
                    </LinearLayout>
                </LinearLayout>
                <LinearLayout
                    android:id="@+id/layout_personal_6"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="16dp"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toBottomOf="@+id/layout_personal_5">
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_fffad1e0_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="常住地址"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginStart="6dp"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="广东省广州市"
                                android:textColor="#FF000000"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFFAD1E0" />
                        </FrameLayout>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:layout_marginStart="10dp">
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_fffad1e0_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="微信号"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginStart="12dp"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="12345678901"
                                android:textColor="#FF000000"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFFAD1E0" />
                        </FrameLayout>
                    </LinearLayout>
                </LinearLayout>
                <LinearLayout
                    android:id="@+id/layout_personal_7"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="16dp"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toBottomOf="@+id/layout_personal_6">
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_fffad1e0_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="政治面貌"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginStart="6dp"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="共产党员"
                                android:textColor="#FF000000"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFFAD1E0" />
                        </FrameLayout>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:layout_marginStart="10dp">
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_fffad1e0_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="QQ号"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginStart="12dp"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="12345678901"
                                android:textColor="#FF000000"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFFAD1E0" />
                        </FrameLayout>
                    </LinearLayout>
                </LinearLayout>
                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="16dp"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toBottomOf="@+id/layout_personal_7">
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_fffad1e0_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="所在单位"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginStart="6dp"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="张氏公司"
                                android:textColor="#FF000000"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFFAD1E0"
                                />
                        </FrameLayout>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:layout_marginStart="10dp">
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_fffad1e0_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="职务"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginStart="12dp"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="经理"
                                android:textColor="#FF000000"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFFAD1E0"
                                />
                        </FrameLayout>
                    </LinearLayout>
                </LinearLayout>
            </androidx.constraintlayout.widget.ConstraintLayout>
        </androidx.cardview.widget.CardView>
        <androidx.cardview.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:cardCornerRadius="6dp"
            app:cardBackgroundColor="#F6FFFFFF"
            app:cardElevation="10dp"
            android:layout_marginHorizontal="10dp"
            android:layout_marginVertical="15dp"
            >
            <androidx.constraintlayout.widget.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginStart="10dp"
                android:layout_marginEnd="7dp"
                android:layout_marginVertical="24dp"
                android:visibility="invisible"
                >
                <androidx.constraintlayout.utils.widget.ImageFilterView
                    android:id="@+id/iv_spouse_photo"
                    android:layout_width="105dp"
                    android:layout_height="105dp"
                    android:background="@color/teal_200"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    android:layout_marginStart="10dp"
                    app:round="10dp" />
                <TextView
                    android:id="@+id/tv_spouse_basic_information"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="配偶基本信息"
                    android:textColor="#99000000"
                    android:textSize="10sp"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    app:layout_constraintBottom_toTopOf="@id/layout_spouse_1"
                    app:layout_constraintVertical_chainStyle="spread_inside"
                    />
                <LinearLayout
                    android:id="@+id/layout_spouse_1"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    app:layout_constraintHorizontal_chainStyle="spread_inside"
                    app:layout_constraintBottom_toTopOf="@id/layout_spouse_2"
                    app:layout_constraintEnd_toStartOf="@id/iv_spouse_photo"
                    app:layout_constraintStart_toStartOf="@+id/tv_spouse_basic_information"
                    app:layout_constraintTop_toBottomOf="@id/tv_spouse_basic_information"
                    >
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_ffd8e6f5_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="姓名"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="姓名"
                                android:textColor="#FF000000"
                                android:textSize="12sp"
                                android:layout_marginStart="12dp"
                                />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFD8E6F5"
                                />
                        </FrameLayout>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:layout_marginStart="10dp"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_ffd8e6f5_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="性别"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="女"
                                android:textColor="#FF000000"
                                android:layout_marginStart="12dp"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFD8E6F5"
                                />
                        </FrameLayout>
                    </LinearLayout>
                </LinearLayout>
                <LinearLayout
                    android:id="@+id/layout_spouse_2"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    app:layout_constraintStart_toStartOf="@+id/tv_spouse_basic_information"
                    app:layout_constraintEnd_toStartOf="@id/iv_spouse_photo"
                    app:layout_constraintTop_toBottomOf="@+id/layout_spouse_1"
                    app:layout_constraintBottom_toTopOf="@id/layout_spouse_3"
                    >
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_ffd8e6f5_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="身份"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="第一代"
                                android:textColor="#FF000000"
                                android:textSize="12sp"
                                android:layout_marginStart="12dp"
                                />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFD8E6F5"
                                />
                        </FrameLayout>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:layout_marginStart="10dp"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_ffd8e6f5_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="年龄"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="18"
                                android:textColor="#FF000000"
                                android:layout_marginStart="12dp"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFD8E6F5"
                                />
                        </FrameLayout>
                    </LinearLayout>
                </LinearLayout>
                <LinearLayout
                    android:id="@+id/layout_spouse_3"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    app:layout_constraintBottom_toBottomOf="@id/iv_spouse_photo"
                    app:layout_constraintStart_toStartOf="@id/tv_spouse_basic_information"
                    app:layout_constraintEnd_toStartOf="@id/iv_spouse_photo"
                    app:layout_constraintTop_toBottomOf="@id/layout_spouse_2">
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_ffd8e6f5_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="曾用名"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="张四"
                                android:textColor="#FF000000"
                                android:textSize="12sp"
                                android:layout_marginStart="12dp"
                                />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFD8E6F5"
                                />
                        </FrameLayout>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:layout_marginStart="10dp"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_ffd8e6f5_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="民族"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="汉族"
                                android:textColor="#FF000000"
                                android:layout_marginStart="12dp"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFD8E6F5"
                                />
                        </FrameLayout>
                    </LinearLayout>
                </LinearLayout>
                <LinearLayout
                    android:id="@+id/layout_spouse_4"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="24dp"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toBottomOf="@+id/iv_spouse_photo">
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_ffd8e6f5_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="婚姻状况"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginStart="6dp"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="已婚"
                                android:textColor="#FF000000"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFD8E6F5" />
                        </FrameLayout>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:layout_marginStart="10dp">
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_ffd8e6f5_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="配偶"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginStart="12dp"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="张四"
                                android:textColor="#FF000000"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFD8E6F5" />
                        </FrameLayout>
                    </LinearLayout>
                </LinearLayout>
                <LinearLayout
                    android:id="@+id/layout_spouse_5"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="16dp"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toBottomOf="@+id/layout_spouse_4">
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_ffd8e6f5_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="户籍地址"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginStart="6dp"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="广东省广州市"
                                android:textColor="#FF000000"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFD8E6F5" />
                        </FrameLayout>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:layout_marginStart="10dp">
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_ffd8e6f5_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="联系方式"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginStart="5dp"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="12345678901"
                                android:textColor="#FF000000"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFD8E6F5" />
                        </FrameLayout>
                    </LinearLayout>
                </LinearLayout>
                <LinearLayout
                    android:id="@+id/layout_spouse_6"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="16dp"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toBottomOf="@+id/layout_spouse_5">
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_ffd8e6f5_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="常住地址"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginStart="6dp"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="广东省广州市"
                                android:textColor="#FF000000"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFD8E6F5" />
                        </FrameLayout>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:layout_marginStart="10dp">
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_ffd8e6f5_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="微信号"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginStart="12dp"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="12345678901"
                                android:textColor="#FF000000"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFD8E6F5" />
                        </FrameLayout>
                    </LinearLayout>
                </LinearLayout>
                <LinearLayout
                    android:id="@+id/layout_spouse_7"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="16dp"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toBottomOf="@+id/layout_spouse_6">
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_ffd8e6f5_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="政治面貌"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginStart="6dp"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="共产党员"
                                android:textColor="#FF000000"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFD8E6F5" />
                        </FrameLayout>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:layout_marginStart="10dp">
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_ffd8e6f5_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="QQ号"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginStart="6dp"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="12345678901"
                                android:textColor="#FF000000"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFD8E6F5" />
                        </FrameLayout>
                    </LinearLayout>
                </LinearLayout>
                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="16dp"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toBottomOf="@+id/layout_spouse_7">
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_ffd8e6f5_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="所在单位"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginStart="12dp"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="张氏公司"
                                android:textColor="#FF000000"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFD8E6F5"
                                />
                        </FrameLayout>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:layout_marginStart="10dp">
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@drawable/shape_ffd8e6f5_10_10_0_10"
                            android:paddingHorizontal="6dp"
                            android:paddingVertical="3dp"
                            android:text="职务"
                            android:textColor="#FF000000"
                            android:textSize="12sp" />
                        <FrameLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginStart="12dp"
                                android:paddingHorizontal="6dp"
                                android:paddingVertical="3dp"
                                android:text="经理"
                                android:textColor="#FF000000"
                                android:textSize="12sp" />
                            <View
                                android:layout_width="match_parent"
                                android:layout_height="1dp"
                                android:layout_gravity="bottom"
                                android:background="#FFD8E6F5"
                                />
                        </FrameLayout>
                    </LinearLayout>
                </LinearLayout>
            </androidx.constraintlayout.widget.ConstraintLayout>
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginStart="10dp"
                android:layout_marginEnd="7dp"
                android:layout_marginVertical="24dp"
                >
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="配偶基本信息"
                    android:textColor="#99000000"
                    android:textSize="10sp"
                    />
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    android:layout_centerInParent="true"
                    >
                    <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_marginStart="4dp"
                        android:text="这里的信息空空如也~"
                        android:textColor="#73000000"
                        android:textSize="14sp"
                        android:layout_gravity="center"
                        android:layout_marginTop="10dp"
                        />
                </LinearLayout>
            </RelativeLayout>
        </androidx.cardview.widget.CardView>
    </LinearLayout>
</ScrollView>
app_base/build.gradle
@@ -56,17 +56,17 @@
    api 'com.github.franmontiel:PersistentCookieJar:v1.0.1'
    // 标题栏框架:https://github.com/getActivity/TitleBar
    api 'com.github.getActivity:TitleBar:10.0'
    api 'com.github.getActivity:TitleBar:10.3'
    // 屏幕适配
    api 'com.github.JessYanCoding:AndroidAutoSize:v1.2.1'
    // 基础依赖包,必须要依赖
    api 'com.geyifeng.immersionbar:immersionbar:3.2.2'
    // kotlin扩展(可选)
//    implementation 'com.geyifeng.immersionbar:immersionbar-ktx:3.2.2'
    // 沉浸式状态栏
    api 'com.geyifeng.immersionbar:immersionbar:3.2.2'    // 基础依赖包,必须要依赖
    //implementation 'com.geyifeng.immersionbar:immersionbar-ktx:3.2.2'    // kotlin扩展(可选)
    //图片相关
    api 'com.github.bumptech.glide:glide:4.12.0'
    api 'com.github.bumptech.glide:glide:4.14.2'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
    //内存泄露工具
    debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9.1'
@@ -85,4 +85,14 @@
    // 动画资源:https://lottiefiles.com、https://icons8.com/animated-icons
    api 'com.airbnb.android:lottie:4.1.0'
    // 上下拉刷新加载
    api  'io.github.scwang90:refresh-layout-kernel:2.0.5'      //核心必须依赖
    api  'io.github.scwang90:refresh-header-classics:2.0.5'    //经典刷新头
    api  'io.github.scwang90:refresh-header-radar:2.0.5'       //雷达刷新头
    api  'io.github.scwang90:refresh-header-falsify:2.0.5'     //虚拟刷新头
    api  'io.github.scwang90:refresh-header-material:2.0.5'    //谷歌刷新头
    api  'io.github.scwang90:refresh-header-two-level:2.0.5'   //二级刷新头
    api  'io.github.scwang90:refresh-footer-ball:2.0.5'        //球脉冲加载
    api  'io.github.scwang90:refresh-footer-classics:2.0.5'    //经典加载
}
app_base/src/main/java/com/android/app_base/base/StateViewEnum.java
@@ -6,7 +6,8 @@
public enum StateViewEnum {
    DIALOG_LOADING,// dialog加载中
    DIALOG_DISMISS,//dialog隐藏
    DATA_LOADING,
    DATA_LOADING,// 数据加载中
    DATA_FINISH,// 数据加载完成
    DATA_ERROR,// 数据错误
    DATA_NULL,// 没有数据
    NET_ERROR,//网络错误
app_base/src/main/java/com/android/app_base/base/adapter/BaseRVAdapter.java
@@ -67,12 +67,12 @@
    @Override
    public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        VDB itemBind = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()),getLayoutId(),parent,false);
        return getViewHolder(itemBind);
        return getViewHolder(itemBind,viewType);
    }
    protected abstract int getLayoutId();
    protected abstract void onBind(VH holder, int position);
    protected abstract VH getViewHolder(VDB itemBind);
    protected abstract VH getViewHolder(VDB itemBind,int viewType);
    @Override
    public void onBindViewHolder(@NonNull VH holder, int position) {
@@ -212,8 +212,10 @@
        if (mDataList == null || mDataList.size() == 0) {
            setData(data);
        } else {
            mDataList.addAll(data);
            notifyDataSetChanged();
            //一个一个的添加
            for (T datum : data) {
                addItem(datum);
            }
        }
    }
    /**
app_base/src/main/java/com/android/app_base/base/view/BaseActivity.java
@@ -57,11 +57,6 @@
        initView();
        //页面事件监听的方法,用于ViewModel层转到View层的事件注册
        initLiveDataObserve();
    }
    @Override
    protected void onResume() {
        super.onResume();
        //页面数据初始化方法
        initData();
    }
@@ -152,6 +147,9 @@
                    case DATA_LOADING:
                        dataLoading();
                        break;
                    case DATA_FINISH:
                        dataFinish();
                        break;
                    case DATA_ERROR:
                        dataError();
                        break;
@@ -176,6 +174,9 @@
            }
        });
    }
    /**
     * 缺省页等状态视图的更新
     * 有需求的,在子类选择重写
@@ -186,6 +187,8 @@
    }
    protected void dataLoading() {
    }
    protected void dataFinish() {
    }
    protected void dataError() {
    }
    protected void dataNull() {
app_base/src/main/java/com/android/app_base/http/OkHttpHelper.java
@@ -6,6 +6,7 @@
import com.android.app_base.BuildConfig;
import com.android.app_base.base.BaseApplication;
import com.android.app_base.http.interceptor.AuthInterceptor;
import com.android.app_base.http.interceptor.CacheInterceptor;
import com.android.app_base.http.interceptor.LogInterceptor;
import com.blankj.utilcode.util.LogUtils;
@@ -71,6 +72,7 @@
            }
        });
        clientBuilder.addInterceptor(new LogInterceptor());//拦截器添加公共参数
        clientBuilder.addInterceptor(new AuthInterceptor());//拦截器token失效处理
        //log日志拦截
        if (BuildConfig.DEBUG) {
            clientBuilder.addInterceptor(new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
app_base/src/main/java/com/android/app_base/http/interceptor/AuthInterceptor.java
New file
@@ -0,0 +1,76 @@
package com.android.app_base.http.interceptor;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
import com.android.app_base.base.BaseConfig;
import com.android.app_base.manager.AppManager;
import com.android.app_base.manager.UserManager;
import com.blankj.utilcode.util.ToastUtils;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;
import okio.Buffer;
import okio.BufferedSource;
/**
 * @author Ljj
 * @date 2023.04.07. 19:53
 * @desc
 */
public class AuthInterceptor implements Interceptor {
    private Context context;
    public AuthInterceptor() {
    }
    public AuthInterceptor(Context context) {
        this.context = context;
    }
    @Override
    public Response intercept(Chain chain) throws IOException {
        Request originalRequest = chain.request();
        // Add Authorization header to the request
        Request.Builder builder = originalRequest.newBuilder();
        //添加头部token
        String token = UserManager.getInstance().getToken();
        if (!TextUtils.isEmpty(token)) {
            builder.addHeader("Authorization", token);
        }
        Request newRequest = builder.build();
        Response response = chain.proceed(newRequest);
        // 处理API返回的数据状态码
        try {
            BufferedSource source = response.body().source();
            source.request(Long.MAX_VALUE); // Buffer the entire body.
            Buffer buffer = source.getBuffer();
            Charset UTF8 = StandardCharsets.UTF_8;
            String string = buffer.clone().readString(UTF8);
            JSONObject responseObject = new JSONObject(string);
            int code = responseObject.getInt("code");
            if (code == BaseConfig.TOKEN_INVALID ) {
                UserManager.getInstance().clearToken();
                AppManager.getAppManager().finishAllActivity();
                AppManager.getAppManager().startActivityForName(BaseConfig.LOGIN_ACTIVITY);
                throw new IOException("登录状态失效,请重新登录");
            }
        } catch (JSONException e) {
            // 处理JSON解析异常
            // ...
        }
        return response;
    }
}
app_base/src/main/java/com/android/app_base/http/interceptor/LogInterceptor.java
@@ -59,35 +59,9 @@
                .build();
        Request.Builder builder = request.newBuilder();
        //添加头部token
        String token = UserManager.getInstance().getToken();
        if (!TextUtils.isEmpty(token)) {
            builder.addHeader("Authorization", token);
        }
        Request newRequest = builder.url(modifiedUrl).build();
        Response response = chain.proceed(newRequest);
        //解决response.body().string();只能打印一次
        ResponseBody responseBody = response.body();
        BufferedSource source = responseBody.source();
        source.request(Long.MAX_VALUE); // Buffer the entire body.
        Buffer buffer = source.getBuffer();
        Charset UTF8 = Charset.forName("UTF-8");
        String string = buffer.clone().readString(UTF8);
        try {
            JSONObject jsonObject = new JSONObject(string);
            int code = jsonObject.getInt("code");
            if (code == BaseConfig.TOKEN_INVALID ) {
                ToastUtils.showShort("登录状态失效,请重新登录");
                UserManager.getInstance().clearToken();
                AppManager.getAppManager().finishAllActivity();
                AppManager.getAppManager().startActivityForName(BaseConfig.LOGIN_ACTIVITY);
            }
        } catch (JSONException e) {
            throw new RuntimeException(e);
        }
        return response;
        return chain.proceed(newRequest);
    }
}
app_base/src/main/java/com/android/app_base/utils/GlideUtil.java
@@ -25,8 +25,13 @@
     * @param imageView ImageView 对象
     */
    public static void loadImage(String imageUrl, ImageView imageView) {
        RequestOptions options = new RequestOptions()
                .placeholder(com.luck.picture.lib.R.drawable.ps_image_placeholder)
                .error(com.luck.picture.lib.R.drawable.ps_image_placeholder)
                .diskCacheStrategy(DiskCacheStrategy.ALL).dontAnimate();
        Glide.with(BaseApplication.getInstance())
                .load(imageUrl)
                .apply(options)
                .into(imageView);
    }
    //圆形
app_base/src/main/java/com/android/app_base/widget/ExtendTitleBar.java
@@ -1,6 +1,7 @@
package com.android.app_base.widget;
import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.view.Gravity;
@@ -33,26 +34,31 @@
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        setTitleGravity(titleGravity);
//        System.out.println("onMeasure");
        reSetTitleGravity(titleGravity);
    }
    @Override
    public TitleBar setTitleGravity(int gravity) {
        titleGravity = gravity;
        return super.setTitleGravity(gravity);
    }
    public void reSetTitleGravity(int gravity) {
        gravity = TitleBarSupport.getAbsoluteGravity(this, gravity);
        LayoutParams params = (LayoutParams) getTitleView().getLayoutParams();
        params.gravity = gravity;
        // 如果标题的重心为左,那么左边就不能有内容
        params.gravity = gravity|Gravity.CENTER_VERTICAL;
        if (gravity == Gravity.LEFT || gravity == Gravity.START){
            params.setMargins(getLeftView().getMeasuredWidth(),0,0,0);
        }
        // 如果标题的重心为右,那么右边就不能有内容
        if (gravity == Gravity.RIGHT && gravity == Gravity.END){
            params.setMargins(0,0,0, getRightView().getMeasuredWidth());
        }
        getTitleView().setLayoutParams(params);
        return this;
    }
    public void setTitle(String title){
        setTitle((CharSequence) title);
    }
}
app_base/src/main/res/anim/pop_drop_hide.xml
New file
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:duration="200"
        android:fromAlpha="1.0"
        android:toAlpha="0.0"/>
    <scale
        android:duration="200"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="0"
        android:toYScale="0"/>
</set>
app_base/src/main/res/anim/pop_drop_show.xml
New file
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:duration="200"
        android:fromAlpha="0.0"
        android:toAlpha="1.0"/>
    <scale
        android:duration="200"
        android:fromXScale="0"
        android:fromYScale="0"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.0"
        android:toYScale="1.0"/>
</set>
app_base/src/main/res/anim/pop_operate_hide.xml
app_base/src/main/res/anim/pop_operate_show.xml
app_base/src/main/res/values/styles.xml
@@ -1,8 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="pop_add">
        <item name="android:windowEnterAnimation">@anim/pop_add_show</item>
        <item name="android:windowExitAnimation">@anim/pop_add_hide</item>
    <style name="pop_operate">
        <item name="android:windowEnterAnimation">@anim/pop_operate_show</item>
        <item name="android:windowExitAnimation">@anim/pop_operate_hide</item>
    </style>
    <style name="pop_info">
        <item name="android:windowEnterAnimation">@anim/pop_drop_show</item>
        <item name="android:windowExitAnimation">@anim/pop_drop_hide</item>
    </style>
    <!-- 对话框默认样式 -->
gradle.properties
@@ -20,6 +20,8 @@
# thereby reducing the size of the R class for that library
android.nonTransitiveRClass=true
android.enableJetifier=true
android.injected.testOnly=false
KEY_PATH=zhangshiapp.keystore