.idea/deploymentTargetDropDown.xml
@@ -2,62 +2,11 @@ <project version="4"> <component name="deploymentTargetDropDown"> <value> <entry key="AnnualHealthStatusActivity"> <entry key="MeetingapproveActivity"> <State /> </entry> <entry key="BaseActivity"> <State /> </entry> <entry key="FamilyMemorabiliaActivity"> <State /> </entry> <entry key="MeetingActivity"> <State> <targetSelectedWithDropDown> <Target> <type value="QUICK_BOOT_TARGET" /> <deviceKey> <Key> <type value="VIRTUAL_DEVICE_PATH" /> <value value="C:\Users\home\.android\avd\Pixel_7_Pro_API_30.avd" /> </Key> </deviceKey> </Target> </targetSelectedWithDropDown> <timeTargetWasSelectedWithDropDown value="2024-04-30T04:26:21.217761800Z" /> </State> </entry> <entry key="TextActivity"> <State> <targetSelectedWithDropDown> <Target> <type value="QUICK_BOOT_TARGET" /> <deviceKey> <Key> <type value="VIRTUAL_DEVICE_PATH" /> <value value="C:\Users\home\.android\avd\Pixel_7_Pro_API_30.avd" /> </Key> </deviceKey> </Target> </targetSelectedWithDropDown> <timeTargetWasSelectedWithDropDown value="2024-04-01T07:28:32.980539900Z" /> </State> </entry> <entry key="app"> <State> <targetSelectedWithDropDown> <Target> <type value="QUICK_BOOT_TARGET" /> <deviceKey> <Key> <type value="VIRTUAL_DEVICE_PATH" /> <value value="D:\andro\.android\avd\Resizable_Experimental_API_34.avd" /> </Key> </deviceKey> </Target> </targetSelectedWithDropDown> <timeTargetWasSelectedWithDropDown value="2024-07-01T07:42:38.368337600Z" /> </State> <State /> </entry> </value> </component> app/src/main/java/com/application/zhangshi_app_android/bean/MeetingBean.java
@@ -150,22 +150,11 @@ this.connPerson = connPerson; } public String getStatu() { // if(statu == "0"){ // statu = "拒绝"; // }else if (statu == "1"){ // statu = "同意"; // }else{ // statu = "待审批"; // } return statu; } public void setStatu(String statu) { this.statu = statu; } // public MeetingBean(Integer statu) { // this.statu = statu; // } public String getCreateTime() { return createTime; } @@ -185,7 +174,19 @@ private String connPerson; private String connPhone; private String statu; private String createTime; public String getStatu() { return statu; } public String setStatu(String statu) { this.statu = statu; return statu; } private String createTime; private String conn_Phone; private List<String> urlList; app/src/main/java/com/application/zhangshi_app_android/bean/MeetingapproveBean.java
@@ -10,6 +10,7 @@ private List<String> urlList; private String url; public long getId() { return id; } @@ -18,13 +19,7 @@ this.id = id; } public String getStatu() { return statu; } public void setStatu(String statu) { this.statu = statu; } public List<String> getUrlList() { return urlList; app/src/main/java/com/application/zhangshi_app_android/data/DataRepository.java
@@ -143,6 +143,32 @@ return mHttpDataSource.getMeetingSta(paramsMap); } /** * 增加家大事记 */ @Override public Observable<ResultData<String>> addMeetingSta(MeetingStaBean meetingStaBean) { return mHttpDataSource.addMeetingSta(meetingStaBean); } /** * 删除家大事记 */ @Override public Observable<ResultData<String>> deleteMeetingSta(String ids) { return mHttpDataSource.deleteMeetingSta(ids); } /** *更新家大事记 */ @Override public Observable<ResultData<String>> updateMeetingSta(MeetingStaBean meetingStaBean) { return mHttpDataSource.updateMeetingSta(meetingStaBean); } @Override public Observable<ResultData<PageResponseBean<MeetingBean>>> getMeeting(Map<String,Object> paramsMap) { return mHttpDataSource.getMeeting(paramsMap); @@ -173,8 +199,8 @@ @Override public Observable<ResultData<String>> approveMeeting(Integer id,Integer statu) { return mHttpDataSource.approveMeeting(id,statu); public Observable<ResultData<String>> approveMeeting(Integer statu) { return mHttpDataSource.approveMeeting(statu); } app/src/main/java/com/application/zhangshi_app_android/data/source/HttpDataSource.java
@@ -93,7 +93,7 @@ Observable<ResultData<String>> updateMeeting(MeetingBean meetingBean); Observable<ResultData<String>> approveMeeting(Integer id, Integer statu); Observable<ResultData<String>> approveMeeting(Integer statu); /** * 删除家大事记 @@ -484,6 +484,11 @@ */ Observable<ResultData<String>> addExaminationInfo(ExaminationInfoBean examinationInfoBean); Observable<ResultData<String>> updateMeetingSta(MeetingStaBean meetingStaBean); Observable<ResultData<String>> deleteMeetingSta(String ids); Observable<ResultData<String>> addMeetingSta(MeetingStaBean meetingStaBean); } app/src/main/java/com/application/zhangshi_app_android/data/source/http/ApiService.java
@@ -127,10 +127,30 @@ Observable<ResultData<String>> updateMeeting(@Body MeetingBean meetingBean); @PUT("/zMeetingRatify") Observable<ResultData<String>> approveMeeting(@Body Integer id,Integer statu); Observable<ResultData<String>> approveMeeting(@Body Integer statu); @GET("/zMeetingStatistic/all") Observable<ResultData<PageResponseBean<MeetingStaBean>>> getMeetingSta(@QueryMap Map<String,Object> paramsMap); /** * 增加家大事记 */ @POST("/zMeetingStatistic") Observable<ResultData<String>> addMeetingSta(@Body MeetingStaBean meetingStaBean); /** * 删除家大事记 */ @DELETE("/zMeetingStatistic/{ids}") Observable<ResultData<String>> deleteMeetingSta(@Path("ids") String ids); /** * 修改家大事记 */ @PUT("/zMeetingStatistic") Observable<ResultData<String>> updateMeetingSta(@Body MeetingStaBean meetingStaBean); //直播申请 @POST("/zLiveStreaming") @@ -635,4 +655,5 @@ @POST("/physcial") Observable<ResultData<String>> addExaminationInfo(@Body ExaminationInfoBean examinationInfoBean); } app/src/main/java/com/application/zhangshi_app_android/data/source/http/HttpDataSourceImpl.java
@@ -131,6 +131,29 @@ public Observable<ResultData<PageResponseBean<MeetingStaBean>>> getMeetingSta(Map<String,Object> paramsMap) { return apiService.getMeetingSta(paramsMap); } public Observable<ResultData<String >> addMeetingSta(MeetingStaBean meetingStaBean){ return apiService.addMeetingSta(meetingStaBean); } /** * 删除家大事记 */ @Override public Observable<ResultData<String>> deleteMeetingSta(String ids) { return apiService.deleteMeetingSta(ids); } /** * 修改家大事记 */ @Override public Observable<ResultData<String>> updateMeetingSta(MeetingStaBean meetingStaBean) { return apiService.updateMeetingSta(meetingStaBean); } /** * 获取家大事记 */ @@ -165,8 +188,8 @@ @Override public Observable<ResultData<String>> approveMeeting(Integer id, Integer statu) { return apiService.approveMeeting(id,statu); public Observable<ResultData<String>> approveMeeting(Integer statu) { return apiService.approveMeeting(statu); } app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaActivity.java
@@ -1,10 +1,15 @@ package com.application.zhangshi_app_android.ui.function; import android.content.Intent; import android.view.View; import android.widget.PopupWindow; import androidx.lifecycle.Observer; import com.android.app_base.base.BaseConfig; import com.android.app_base.base.dialog.BaseDialog; import com.android.app_base.base.dialog.UIDialog; import com.android.app_base.manager.AppManager; import com.android.app_base.utils.ScreenSizeUtils; import com.android.app_base.utils.rxbus.RxBus; import com.android.app_base.widget.LinearItemDecoration; @@ -66,12 +71,10 @@ binding.recyclerView.addItemDecoration(itemDecoration); binding.recyclerView.setAdapter(adapter); //右上角操作弹窗 mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate,null)); mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_sta,null)); setOnClickListener( // mOperatePopupWindow.getContentView().findViewById(R.id.tv_add), // mOperatePopupWindow.getContentView().findViewById(R.id.tv_select), mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old), mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new), mOperatePopupWindow.getContentView().findViewById(R.id.tv_add), mOperatePopupWindow.getContentView().findViewById(R.id.tv_select), mOperatePopupWindow.getContentView().findViewById(R.id.tv_own_top) ); // //点击放大镜按钮显示出搜索框 @@ -102,14 +105,14 @@ // binding.tvTitle.setText("搜索结果"); // hideSoftKeyboard(); // }); //点击添加按钮跳转到创建家大事记页面 // 点击添加按钮跳转到创建家大事记页面 // binding.fabAdd.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View v) { // AppManager.getAppManager().startActivity(new Intent(getSelfActivity(), MeetingStaDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1)); // } // }); // // binding.etStartTime.addTextChangedListener(new TextWatcher() { // @Override // public void beforeTextChanged(CharSequence s, int start, int count, int after) { @@ -291,23 +294,23 @@ }); adapter.setCheckable(true); } // else if (integer == 2){ // binding.ivOperate.setBackgroundResource(R.drawable.ic_delete_white); // binding.ivOperate.setOnClickListener(v -> { // new UIDialog.Builder(this) // .setTitle("您确定要删除选中的项目吗") // .setContent("项目删除后将无法恢复") // .setConfirm("确定") // .setCancel("取消") // .setListener(new UIDialog.OnListener() { // @Override // public void onConfirm(BaseDialog dialog) { // viewModel.deleteCheckList(); // } // }) // .show(); // }); // } else if (integer == 2){ binding.ivOperate.setBackgroundResource(R.drawable.ic_delete_white); binding.ivOperate.setOnClickListener(v -> { new UIDialog.Builder(this) .setTitle("您确定要删除选中的项目吗") .setContent("项目删除后将无法恢复") .setConfirm("确定") .setCancel("取消") .setListener(new UIDialog.OnListener() { @Override public void onConfirm(BaseDialog dialog) { viewModel.deleteCheckList(); } }) .show(); }); } }); viewModel.getFinishDeleteListLiveData().observe(this, beans -> { for (MeetingStaBean bean : beans) { @@ -344,25 +347,28 @@ binding.refreshLayout.finishLoadMore(); } // @Override // public void onClick(View v) { // int id = v.getId(); // if (id == R.id.tv_add){ // AppManager.getAppManager().startActivity(new Intent(this, MeetingDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1)); // }else if (id == R.id.tv_select){ // viewModel.getOperateTypeLiveData().postValue(1); // mOperatePopupWindow.dismiss(); // } else if (id == R.id.tv_from_new_to_old) { @Override public void onClick(View v) { int id = v.getId(); if (id == R.id.tv_add){ AppManager.getAppManager().startActivity(new Intent(this, MeetingStaDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1)); }else if (id == R.id.tv_select){ viewModel.getOperateTypeLiveData().postValue(1); mOperatePopupWindow.dismiss(); } // else if (id == R.id.tv_from_new_to_old) { // viewModel.changeOrder(true); // mOperatePopupWindow.dismiss(); // } else if (id == R.id.tv_from_old_to_new) { // } // else if (id == R.id.tv_from_old_to_new) { // viewModel.changeOrder(false); // mOperatePopupWindow.dismiss(); // } else if (id == R.id.tv_own_top) { // viewModel.ownTop(); // mOperatePopupWindow.dismiss(); // } // } else if (id == R.id.tv_own_top) { viewModel.ownTop(); mOperatePopupWindow.dismiss(); } } @Override protected void onDestroy() { app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaActivityViewModel.java
@@ -171,79 +171,79 @@ /** * 删除家大事记 */ // public void deleteCheckList() { // List<MeetingBean> deleteList = getCheckListLiveData().getValue(); // if (deleteList == null){ // return; // } // StringBuffer sb = new StringBuffer(); // deleteList.forEach(MeetingBean -> sb.append(MeetingBean.getId()).append(",")); // sb.deleteCharAt(sb.length()-1); // model.deleteMeeting(sb.toString()) // .compose(RxUtils.schedulersTransformer()) // .subscribe(new Observer<ResultData<String>>() { // @Override // public void onSubscribe(Disposable d) { // addSubscribe(d); // } // // @Override // public void onNext(ResultData<String> stringResultData) { // if (stringResultData.getCode() == CODE_SUCCESS){ // messageLiveData.postValue("删除成功"); // finishDeleteListLiveData.postValue(checkListLiveData.getValue()); // getCheckListLiveData().postValue(new ArrayList<>()); // }else { // messageLiveData.postValue(stringResultData.getMsg()); // } // } // // @Override // public void onError(Throwable e) { // messageLiveData.postValue(e.getMessage()); // } // // @Override // public void onComplete() { // // } // }); // } public void deleteCheckList() { List<MeetingStaBean> deleteList = getCheckListLiveData().getValue(); if (deleteList == null){ return; } StringBuffer sb = new StringBuffer(); deleteList.forEach(MeetingStaBean -> sb.append(MeetingStaBean.getId()).append(",")); sb.deleteCharAt(sb.length()-1); model.deleteMeetingSta(sb.toString()) .compose(RxUtils.schedulersTransformer()) .subscribe(new Observer<ResultData<String>>() { @Override public void onSubscribe(Disposable d) { addSubscribe(d); } @Override public void onNext(ResultData<String> stringResultData) { if (stringResultData.getCode() == CODE_SUCCESS){ messageLiveData.postValue("删除成功"); finishDeleteListLiveData.postValue(checkListLiveData.getValue()); getCheckListLiveData().postValue(new ArrayList<>()); }else { messageLiveData.postValue(stringResultData.getMsg()); } } @Override public void onError(Throwable e) { messageLiveData.postValue(e.getMessage()); } @Override public void onComplete() { } }); } /** * 删除单个数据 */ // public void deleteItem(MeetingBean bean) { // model.deleteMeeting(String.valueOf(bean.getId())) // .compose(RxUtils.schedulersTransformer()) // .subscribe(new Observer<ResultData<String>>() { // @Override // public void onSubscribe(Disposable d) { // addSubscribe(d); // } // // @Override // public void onNext(ResultData<String> stringResultData) { // if (stringResultData.getCode() == CODE_SUCCESS){ // List<MeetingStaBean> list = new ArrayList<>(); // list.add(bean); // finishDeleteListLiveData.postValue(list); // messageLiveData.postValue("删除成功"); // }else { // messageLiveData.postValue(stringResultData.getMsg()); // } // } // // @Override // public void onError(Throwable e) { // messageLiveData.postValue(e.getMessage()); // } // // @Override // public void onComplete() { // // } // }); // } public void deleteItem(MeetingStaBean bean) { model.deleteMeetingSta(String.valueOf(bean.getId())) .compose(RxUtils.schedulersTransformer()) .subscribe(new Observer<ResultData<String>>() { @Override public void onSubscribe(Disposable d) { addSubscribe(d); } @Override public void onNext(ResultData<String> stringResultData) { if (stringResultData.getCode() == CODE_SUCCESS){ List<MeetingStaBean> list = new ArrayList<>(); list.add(bean); finishDeleteListLiveData.postValue(list); messageLiveData.postValue("删除成功"); }else { messageLiveData.postValue(stringResultData.getMsg()); } } @Override public void onError(Throwable e) { messageLiveData.postValue(e.getMessage()); } @Override public void onComplete() { } }); } public MutableLiveData<List<MeetingStaBean>> getCheckListLiveData() { if (checkListLiveData==null){ app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaDetailActivity.java
@@ -1,24 +1,48 @@ package com.application.zhangshi_app_android.ui.function; import android.app.Activity; import android.content.ClipData; import android.content.Intent; import android.net.Uri; import android.view.View; import android.widget.PopupWindow; import androidx.activity.result.ActivityResult; import androidx.activity.result.ActivityResultCallback; import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import androidx.lifecycle.MutableLiveData; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.android.app_base.base.BaseConfig; import com.android.app_base.base.adapter.BaseRVAdapter; import com.android.app_base.base.dialog.BaseDialog; import com.android.app_base.base.dialog.WaitDialog; import com.android.app_base.manager.UserManager; import com.android.app_base.utils.GetFilePathFromUri; import com.android.app_base.utils.ScreenSizeUtils; import com.android.app_base.utils.Utils; import com.application.zhangshi_app_android.BR; import com.application.zhangshi_app_android.R; import com.application.zhangshi_app_android.adapter.ElectronicFileAddAdapter; import com.application.zhangshi_app_android.bean.MeetingStaBean; import com.application.zhangshi_app_android.databinding.ActivityMeetingDetailBinding; import com.application.zhangshi_app_android.databinding.ActivityMeetingStaDetailBinding; import com.application.zhangshi_app_android.ui.DLBaseActivity; import com.github.gzuliyujiang.wheelpicker.DatePicker; import com.github.gzuliyujiang.wheelpicker.OptionPicker; import com.github.gzuliyujiang.wheelpicker.TimePicker; import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener; import com.github.gzuliyujiang.wheelpicker.contract.OnOptionPickedListener; import com.github.gzuliyujiang.wheelpicker.contract.OnTimePickedListener; import com.luck.picture.lib.entity.LocalMedia; import com.luck.picture.lib.interfaces.OnResultCallbackListener; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Locale; /** @@ -60,112 +84,178 @@ public void initView() { adapter = new ElectronicFileAddAdapter(this); GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3); // binding.rvImage.setLayoutManager(gridLayoutManager); // binding.rvImage.setNestedScrollingEnabled(false); // adapter.setOnChildClickListener(R.id.iv_delete, new BaseRVAdapter.OnChildClickListener() { // adapter.setItemAndAddClickListener(new ElectronicFileAddAdapter.OnItemAndAddClickListener() { // @Override // public void onChildClick(RecyclerView recyclerView, View childView, int position) { // MeetingStaBean bean = viewModel.getBeanLiveData().getValue(); // if (bean !=null){ // List<String> urlList = Utils.splitString2List(bean.getUrl(),","); // urlList.remove(adapter.getItem(position)); // bean.setUrl(Utils.appendList2String(urlList,",")); // } // adapter.removeItem(position); // viewModel.getBeanLiveData().setValue(bean); // } // }); // binding.rvImage.setAdapter(adapter); // if (type == 1){ // viewModel.getTypeLiveData().setValue(true); // binding.titleBar.setTitle("新增家大事记"); // binding.ivOperate.setOnClickListener(v -> { // viewModel.add(); // }); // }else if (type == 0){ // popupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_delete,null)); // popupWindow.getContentView().findViewById(R.id.tv_modify).setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View v) { // viewModel.getTypeLiveData().postValue(true); // popupWindow.dismiss(); // } // }); // viewModel.getTypeLiveData().postValue(false); // }else if (type == 2){ // viewModel.getTypeLiveData().postValue(true); // public void onItemClick(View v, int position) { // // } // // @Override //// public void onAddClick() { //// OptionPicker picker = getOptionPicker(Arrays.asList("图片视频","其他文件")); //// picker.setTitle("选择文件类型"); //// picker.setOnOptionPickedListener(new OnOptionPickedListener() { //// @Override //// public void onOptionPicked(int position, Object item) { //// if (item.equals("图片视频")) { //// UserManager.getInstance().selectImage(getSelfActivity(), 0,9, new OnResultCallbackListener<LocalMedia>() { //// @Override //// public void onResult(ArrayList<LocalMedia> result) { //// if (result.size() == 0) return; //// for (LocalMedia media : result) { //// String path = media.getRealPath(); //// if (path!=null){ //// viewModel.addUploadFile(path); //// MeetingStaBean bean = viewModel.getBeanLiveData().getValue(); //// if (bean !=null){ //// List<String> urlList = Utils.splitString2List(bean.getUrl(),","); //// urlList.add(path); //// bean.setUrl(Utils.appendList2String(urlList,",")); //// } //// viewModel.getBeanLiveData().setValue(bean); //// } //// } //// } //// @Override //// public void onCancel() { //// //// } //// }); //// }else { //// Intent intent = new Intent(Intent.ACTION_GET_CONTENT); ////// Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); //// intent.setType("*/*"); // 限制文件类型 //// intent.addCategory(Intent.CATEGORY_OPENABLE); // 添加 CATEGORY_OPENABLE 分类,告诉系统要选择的内容可以被打开,这样系统会过滤掉不能被应用打开的文件,以提供更好的用户体验。 //// intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); // 允许多选 //// activityResultLauncher.launch(intent); //// } //// } //// }); //// picker.show(); //// //// } // }); adapter.setOnChildClickListener(R.id.iv_delete, new BaseRVAdapter.OnChildClickListener() { @Override public void onChildClick(RecyclerView recyclerView, View childView, int position) { MeetingStaBean bean = viewModel.getBeanLiveData().getValue(); if (bean !=null){ List<String> urlList = Utils.splitString2List(bean.getUrl(),","); urlList.remove(adapter.getItem(position)); bean.setUrl(Utils.appendList2String(urlList,",")); } adapter.removeItem(position); viewModel.getBeanLiveData().setValue(bean); } }); // binding.rvImage.setAdapter(adapter); if (type == 1){ viewModel.getTypeLiveData().setValue(true); binding.titleBar.setTitle("新增家大事记"); binding.ivOperate.setOnClickListener(v -> { viewModel.add(); }); }else if (type == 0){ popupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_delete,null)); popupWindow.getContentView().findViewById(R.id.tv_modify).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { viewModel.getTypeLiveData().postValue(true); popupWindow.dismiss(); } }); viewModel.getTypeLiveData().postValue(false); }else if (type == 2){ viewModel.getTypeLiveData().postValue(true); } // 显示日期选择器和时间选择器的方法 // public void showDateTimePicker() { // DatePickerDialog pickerDialog = new DatePickerDialog(this, (view, year, monthOfYear, dayOfMonth) -> { // TimePickerDialog timePickerDialog = new TimePickerDialog(this, (view1, hourOfDay, minute) -> { // String date = String.format(Locale.CHINA, "%d-%02d-%02d", year, monthOfYear + 1, dayOfMonth); // String time = String.format(Locale.CHINA, "%02d:%02d", hourOfDay, minute); // String starttime = date + " " + time; // binding.etStartTime.setText(starttime); // }, 0, 0, true); // timePickerDialog.setTitle("选择时间"); // timePickerDialog.show(); // }, Calendar.getInstance().get(Calendar.YEAR), Calendar.getInstance().get(Calendar.MONTH), Calendar.getInstance().get(Calendar.DAY_OF_MONTH)); // pickerDialog.setTitle("选择日期"); // pickerDialog.show(); // } // binding.etDate1.setOnClickListener(new View.OnClickListener() { // binding.etStartTime.setOnClickListener(new View.OnClickListener() { // private String datee; // private String timee; // // @Override // public void onClick(View v) { // DatePicker picker = getDatePicker(); // picker.setTitle("选择时间"); // TimePicker picker2 = getTimePicker(); // picker.setTitle("选择日期"); // picker2.setTitle("选择时间"); // picker.setOnDatePickedListener(new OnDatePickedListener() { // @Override // public void onDatePicked(int year, int month, int day) { // String date = String.format(Locale.CHINA, "%d-%02d-%02d", year, month, day); // binding.etDate1.setText(date); // datee = date; // // // 在日期选择后显示时间选择器 // picker2.show(); // } // }); // picker.show(); // picker2.setOnTimePickedListener(new OnTimePickedListener() { // @Override // public void onTimePicked(int hour, int minute, int second) { // String time = String.format(Locale.CHINA, "%d:%02d:%02d", hour, minute, second); // timee = time; // // // 合并日期和时间并设置到编辑框 // String starttime = datee + " " + timee; // binding.etStartTime.setText(starttime); // } // }); // } // }); // binding.etDate2.setOnClickListener(new View.OnClickListener() { // binding.etEndTime.setOnClickListener(new View.OnClickListener() { // private String datee; // private String timee; // // @Override // public void onClick(View v) { // DatePicker picker = getDatePicker(); // picker.setTitle("选择时间"); // TimePicker picker2 = getTimePicker(); // picker.setTitle("选择日期"); // picker2.setTitle("选择时间"); // picker.setOnDatePickedListener(new OnDatePickedListener() { // @Override // public void onDatePicked(int year, int month, int day) { // String date = String.format(Locale.CHINA, "%d-%02d-%02d", year, month, day); // binding.etDate2.setText(date); // } // }); // picker.show(); // } // }); // binding.etTime1.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View v) { // TimePicker picker = getTimePicker(); // picker.setTitle("选择时间"); // picker.setOnTimePickedListener(new OnTimePickedListener() { // datee = date; // // // 在日期选择后显示时间选择器 // picker2.show(); // } // }); // picker.show(); // picker2.setOnTimePickedListener(new OnTimePickedListener() { // @Override // public void onTimePicked(int hour, int minute, int second) { // String time = String.format(Locale.CHINA, "%d:%02d:%02d", hour, minute, second); // timee = time; // // public void onTimePicked(int hour, int Minute,int second) { //// second = '0'; // String date = String.format(Locale.CHINA, "%d:%02d:%02d",hour,Minute,second); // binding.etTime1.setText(date); // // 合并日期和时间并设置到编辑框 // String endtime = datee + " " + timee; // binding.etEndTime.setText(endtime); // } // }); // picker.show(); // } // }); // binding.etTime2.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View v) { // TimePicker picker = getTimePicker(); // picker.setTitle("选择时间"); // picker.setOnTimePickedListener(new OnTimePickedListener() { // @Override // public void onTimePicked(int hour, int Minute, int second) { // String date = String.format(Locale.CHINA, "%d:%02d:%02d",hour,Minute,second ); // binding.etTime2.setText(date); // } // }); // picker.show(); // } // }); @@ -173,51 +263,50 @@ // activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() { // @Override // public void onActivityResult(ActivityResult result) { // if (result.getResultCode() == Activity.RESULT_OK) { // if (result.getData() == null){ // return; // } // // 获取选中的多个文件的 URI // ClipData clipData = result.getData().getClipData(); // if (clipData != null) { // int itemCount = clipData.getItemCount(); // for (int i = 0; i < itemCount; i++) { // Uri uri = clipData.getItemAt(i).getUri(); // // 使用选中的文件 URI 进行后续操作,比如读取文件内容等 // String path = GetFilePathFromUri.getFileAbsolutePath(getSelfActivity(),uri); // if (path!=null){ // viewModel.addUploadFile(path); // MeetingStaBean bean = viewModel.getBeanLiveData().getValue(); // if (bean !=null){ // List<String> urlList = Utils.splitString2List(bean.getUrl(),","); // urlList.add(path); // bean.setUrl(Utils.appendList2String(urlList,",")); // } // viewModel.getBeanLiveData().setValue(bean); // } // } // }else { // // 获取选中的单个文件的 URI // Uri selectedFileUri = result.getData().getData(); // String path = GetFilePathFromUri.getFileAbsolutePath(getSelfActivity(),selectedFileUri); // if (path!=null){ // viewModel.addUploadFile(path); // MeetingStaBean bean = viewModel.getBeanLiveData().getValue(); // if (bean !=null){ // List<String> urlList = Utils.splitString2List(bean.getUrl(),","); // urlList.add(path); // bean.setUrl(Utils.appendList2String(urlList,",")); // } // viewModel.getBeanLiveData().setValue(bean); // } // } // } // } // }); activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() { @Override public void onActivityResult(ActivityResult result) { if (result.getResultCode() == Activity.RESULT_OK) { if (result.getData() == null){ return; } // 获取选中的多个文件的 URI ClipData clipData = result.getData().getClipData(); if (clipData != null) { int itemCount = clipData.getItemCount(); for (int i = 0; i < itemCount; i++) { Uri uri = clipData.getItemAt(i).getUri(); // 使用选中的文件 URI 进行后续操作,比如读取文件内容等 String path = GetFilePathFromUri.getFileAbsolutePath(getSelfActivity(),uri); if (path!=null){ viewModel.addUploadFile(path); MeetingStaBean bean = viewModel.getBeanLiveData().getValue(); if (bean !=null){ List<String> urlList = Utils.splitString2List(bean.getUrl(),","); urlList.add(path); bean.setUrl(Utils.appendList2String(urlList,",")); } viewModel.getBeanLiveData().setValue(bean); } } }else { // 获取选中的单个文件的 URI Uri selectedFileUri = result.getData().getData(); String path = GetFilePathFromUri.getFileAbsolutePath(getSelfActivity(),selectedFileUri); if (path!=null){ viewModel.addUploadFile(path); MeetingStaBean bean = viewModel.getBeanLiveData().getValue(); if (bean !=null){ List<String> urlList = Utils.splitString2List(bean.getUrl(),","); urlList.add(path); bean.setUrl(Utils.appendList2String(urlList,",")); } viewModel.getBeanLiveData().setValue(bean); } } } } }); } @@ -236,25 +325,25 @@ adapter.setData(urlList); } }); // viewModel.getTypeLiveData().observe(this,operateType -> { // if (operateType){ // if (type == 1) { // binding.ivOperate.setOnClickListener(v -> { // viewModel.add(); // }); // }else { // binding.ivOperate.setOnClickListener(v -> { // viewModel.update(); // }); // } // setIsEdited(true); // }else { // binding.ivOperate.setOnClickListener(v -> { // popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); // }); // setIsEdited(false); // } // }); viewModel.getTypeLiveData().observe(this,operateType -> { if (operateType){ if (type == 1) { binding.ivOperate.setOnClickListener(v -> { viewModel.add(); }); }else { binding.ivOperate.setOnClickListener(v -> { viewModel.update(); }); } setIsEdited(true); }else { binding.ivOperate.setOnClickListener(v -> { popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); }); setIsEdited(false); } }); } public void setIsEdited(boolean isEdited){ app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaDetailActivityViewModel.java
@@ -1,26 +1,43 @@ package com.application.zhangshi_app_android.ui.function; import static com.android.app_base.base.BaseConfig.CODE_SUCCESS; import android.app.Application; import androidx.annotation.NonNull; import androidx.lifecycle.MutableLiveData; import com.android.app_base.base.StateViewEnum; import com.android.app_base.base.viewmodel.BaseViewModel; import com.android.app_base.http.ResultData; import com.android.app_base.manager.AppManager; import com.android.app_base.utils.RxUtils; import com.android.app_base.utils.rxbus.RxBus; import com.application.zhangshi_app_android.bean.MeetingStaBean; import com.application.zhangshi_app_android.bean.MeetingStaBean; import com.application.zhangshi_app_android.bean.UploadFileResponseBean; import com.application.zhangshi_app_android.data.DataRepository; import java.io.File; import java.util.ArrayList; import java.util.List; /** * @author Ljj * @date 2023.04.21. 21:16 * @desc */ import io.reactivex.Observable; import io.reactivex.ObservableSource; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; import io.reactivex.functions.Action; import io.reactivex.functions.Consumer; import io.reactivex.functions.Function; import okhttp3.MediaType; import okhttp3.MultipartBody; import okhttp3.RequestBody; public class MeetingStaDetailActivityViewModel extends BaseViewModel<DataRepository> { private MutableLiveData<MeetingStaBean> beanLiveData; private MutableLiveData<List<MeetingStaBean>> meetingStaListLiveData; private MutableLiveData<Boolean> typeLiveData;//true 编辑状态 false 展示状态 private final List<String> uploadFileList = new ArrayList<>();//需要上传的文件列表 public MeetingStaDetailActivityViewModel(@NonNull Application application) { super(application); } @@ -31,44 +48,125 @@ } /** * 获取备忘录 * 增加家大事记 */ // public void getMeetingSta() { // if (beanLiveData.getValue() == null) { // return; // } // // model.getMeetingSta(getBeanLiveData().getValue().toMap()) // .compose(RxUtils.schedulersTransformer()) // .subscribe(new Observer<ResultData<List<MeetingStaBean>>>() { // @Override // public void onSubscribe(Disposable d) { // addSubscribe(d); // } // // @Override // public void onNext(ResultData<List<MeetingStaBean>> data) { // if (data.getCode() == CODE_SUCCESS){ // meetingStaListLiveData.postValue(data.getData()); // }else { // messageLiveData.postValue(data.getMsg()); // } // } // // @Override // public void onError(Throwable e) { // messageLiveData.postValue(e.getMessage()); // } // // @Override // public void onComplete() { // // } // }); // } public void add() { model.addMeetingSta(beanLiveData.getValue()) .compose(RxUtils.schedulersTransformer()) .subscribe(new Observer<ResultData<String>>() { @Override public void onSubscribe(Disposable d) { addSubscribe(d); } @Override public void onNext(ResultData<String> stringResultData) { if (stringResultData.getCode() == CODE_SUCCESS) { AppManager.getAppManager().finishCurrentActivity(); RxBus.getInstance().post(beanLiveData.getValue()); messageLiveData.postValue("添加成功"); } else { messageLiveData.postValue(stringResultData.getMsg()); } } @Override public void onError(Throwable e) { messageLiveData.postValue(e.getMessage()); } @Override public void onComplete() { } }); } /** * 删除家大事记 */ public void delete() { model.deleteMeetingSta(String.valueOf(beanLiveData.getValue().getId())) .compose(RxUtils.schedulersTransformer()) .subscribe(new Observer<ResultData<String>>() { @Override public void onSubscribe(Disposable d) { addSubscribe(d); } @Override public void onNext(ResultData<String> stringResultData) { if (stringResultData.getCode() == CODE_SUCCESS){ AppManager.getAppManager().finishCurrentActivity(); RxBus.getInstance().post(beanLiveData.getValue()); messageLiveData.postValue("删除成功"); }else { messageLiveData.postValue(stringResultData.getMsg()); } } @Override public void onError(Throwable e) { messageLiveData.postValue(e.getMessage()); } @Override public void onComplete() { } }); } /** * 编辑家大事记 */ public void update() { model.updateMeetingSta(beanLiveData.getValue()) .compose(RxUtils.schedulersTransformer()) .subscribe(new Observer<ResultData<String>>() { @Override public void onSubscribe(Disposable d) { addSubscribe(d); } @Override public void onNext(ResultData<String> stringResultData) { if (stringResultData.getCode() == CODE_SUCCESS){ AppManager.getAppManager().finishCurrentActivity(); RxBus.getInstance().post(beanLiveData.getValue()); messageLiveData.postValue("修改成功"); }else { messageLiveData.postValue(stringResultData.getMsg()); } } @Override public void onError(Throwable e) { messageLiveData.postValue(e.getMessage()); } @Override public void onComplete() { } }); } public MutableLiveData<MeetingStaBean> getBeanLiveData() { if (beanLiveData == null) { if (beanLiveData == null){ beanLiveData = new MutableLiveData<>(); } if (beanLiveData.getValue() == null){ beanLiveData.setValue(new MeetingStaBean()); } return beanLiveData; } @@ -77,14 +175,24 @@ this.beanLiveData = beanLiveData; } public MutableLiveData<List<MeetingStaBean>> getMeetingStaListLiveData() { if (meetingStaListLiveData == null){ meetingStaListLiveData = new MutableLiveData<>(); public MutableLiveData<Boolean> getTypeLiveData() { if (typeLiveData == null){ typeLiveData = new MutableLiveData<>(); } return meetingStaListLiveData; return typeLiveData; } public void setMeetingStaListLiveData(MutableLiveData<List<MeetingStaBean>> meetingStaListLiveData) { this.meetingStaListLiveData = meetingStaListLiveData; public void setTypeLiveData(MutableLiveData<Boolean> typeLiveData) { this.typeLiveData = typeLiveData; } public List<String> getUploadFileList() { return uploadFileList; } public void addUploadFile(String url) { uploadFileList.add(url); } } app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveActivity.java
@@ -32,7 +32,7 @@ /** * @author Ljj * @date 2023.03.18. 10:00 * @desc 家大事记 Activity * @desc 会议审批 Activity */ public class MeetingapproveActivity extends DLBaseActivity<ActivityMeetingApproveBinding,MeetingapproveActivityViewModel>{ @@ -80,8 +80,6 @@ //右上角操作弹窗 mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_read,null)); setOnClickListener( mOperatePopupWindow.getContentView().findViewById(R.id.tv_add), mOperatePopupWindow.getContentView().findViewById(R.id.tv_select), mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old), mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new), mOperatePopupWindow.getContentView().findViewById(R.id.tv_own_top) @@ -114,7 +112,7 @@ binding.tvTitle.setText("搜索结果"); hideSoftKeyboard(); }); //点击添加按钮跳转到创建家大事记页面 //点击添加按钮跳转到创建会议审批页面 binding.fabAdd.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -325,7 +323,7 @@ adapter.removeItem(bean); } }); //观察家大事记数据的变化,有变化包括添加、修改、删除都会发送消息,接收到消息后重新获取数据 //观察会议审批数据的变化,有变化包括添加、修改、删除都会发送消息,接收到消息后重新获取数据 RxBus.getInstance().toObservable(this, MeetingBean.class) .subscribe(bean -> { viewModel.getMeeting(); @@ -358,12 +356,7 @@ @Override public void onClick(View v) { int id = v.getId(); if (id == R.id.tv_add){ AppManager.getAppManager().startActivity(new Intent(this, MeetingapproveDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1)); }else if (id == R.id.tv_select){ viewModel.getOperateTypeLiveData().postValue(1); mOperatePopupWindow.dismiss(); } else if (id == R.id.tv_from_new_to_old) { if (id == R.id.tv_from_new_to_old) { viewModel.changeOrder(true); mOperatePopupWindow.dismiss(); } else if (id == R.id.tv_from_old_to_new) { app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveDetailActivity.java
@@ -69,7 +69,7 @@ @Override public void initParam() { type = getIntent().getIntExtra(BaseConfig.EXTRA_TYPE,0); if (type == 0 || type == 2){ if (type == 0 ){ MeetingBean bean = (MeetingBean) getIntent().getSerializableExtra("bean"); if (bean !=null){ viewModel.getBeanLiveData().setValue(bean); @@ -151,6 +151,7 @@ }); binding.rvImage.setAdapter(adapter); popupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_approve,null)); if (type == 1){ viewModel.getTypeLiveData().setValue(true); binding.titleBar.setTitle("新增家大事记"); @@ -158,7 +159,7 @@ viewModel.add(); }); }else if (type == 0){ popupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_approve,null)); popupWindow.getContentView().findViewById(R.id.tv_disagree).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -167,8 +168,10 @@ viewModel.getTypeLiveData().postValue(true); } }); viewModel.getTypeLiveData().postValue(true); viewModel.getTypeLiveData().postValue(false); } else if (type == 2){ popupWindow.getContentView().findViewById(R.id.tv_agreed).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -180,8 +183,6 @@ }); viewModel.getTypeLiveData().postValue(false); }else if (type == 2){ viewModel.getTypeLiveData().postValue(true); } @@ -366,17 +367,24 @@ }); viewModel.getTypeLiveData().observe(this,operateType -> { if (operateType){ if (type == 1) { // if (type == 1) { // binding.ivOperate.setOnClickListener(v -> { // viewModel.add(); // }); // } if(type==0) { binding.ivOperate.setOnClickListener(v -> { viewModel.add(); viewModel.agree(); }); }else { }else if(type==2) { binding.ivOperate.setOnClickListener(v -> { viewModel.update(); viewModel.disagree(); }); } setIsEdited(true); }else { setIsEdited(false); } else { binding.ivOperate.setOnClickListener(v -> { popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); }); app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveDetailActivityViewModel.java
@@ -5,6 +5,7 @@ import android.app.Application; import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import com.android.app_base.base.StateViewEnum; @@ -35,6 +36,7 @@ public class MeetingapproveDetailActivityViewModel extends BaseViewModel<DataRepository> { private MutableLiveData<MeetingBean> beanLiveData; private int numb = 1; private MutableLiveData<Boolean> typeLiveData;//true 编辑状态 false 展示状态 private final List<String> uploadFileList = new ArrayList<>();//需要上传的文件列表 public MeetingapproveDetailActivityViewModel(@NonNull Application application) { @@ -166,7 +168,7 @@ * 审批 */ public void agree() { model.approveMeeting(Integer.valueOf((int) beanLiveData.getValue().getId()),1) model.approveMeeting(Integer.valueOf(beanLiveData.getValue().setStatu("1"))) .compose(RxUtils.schedulersTransformer()) .subscribe(new Observer<ResultData<String>>() { @Override @@ -200,7 +202,7 @@ public void disagree() { model.approveMeeting(Integer.valueOf((int) beanLiveData.getValue().getId()),0) model.approveMeeting(Integer.valueOf(beanLiveData.getValue().setStatu("0"))) .compose(RxUtils.schedulersTransformer()) .subscribe(new Observer<ResultData<String>>() { @Override app/src/main/res/layout/activity_meeting_approve_detail.xml
@@ -20,7 +20,7 @@ android:id="@+id/titleBar" android:layout_width="match_parent" android:layout_height="wrap_content" app:title="@{viewModel.beanLiveData.id==0?`会议申请详情`:viewModel.beanLiveData.title}" app:title="@{viewModel.beanLiveData.id==0?`会议审批详情`:viewModel.beanLiveData.title}" app:titleGravity="left" > @@ -38,8 +38,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:background="@{viewModel.typeLiveData?@drawable/ic_operate_finish:@drawable/ic_operate}" /> android:background="@{viewModel.typeLiveData?@drawable/ic_operate_finish:@drawable/ic_operate}" /> </FrameLayout> </com.android.app_base.widget.ExtendTitleBar> app/src/main/res/layout/activity_meeting_detail.xml
@@ -4,6 +4,7 @@ xmlns:tools="http://schemas.android.com/tools"> <data> <import type="com.android.app_base.utils.StringStatus"/> <variable name="viewModel" type="com.application.zhangshi_app_android.ui.function.MeetingDetailActivityViewModel" /> @@ -309,7 +310,7 @@ android:textColorHint="#6b000000" android:textColor="#DE000000" android:textSize="16sp" android:text="@={viewModel.beanLiveData.statu}" android:text="@={StringStatus.statusToText(viewModel.beanLiveData.statu)}" android:enabled="@{viewModel.typeLiveData}" android:clickable="false" android:focusable="false" app/src/main/res/layout/activity_meeting_sta_detail.xml
@@ -6,7 +6,7 @@ <data> <variable name="viewModel" type="com.application.zhangshi_app_android.ui.function.MeetingDetailActivityViewModel" /> type="com.application.zhangshi_app_android.ui.function.MeetingStaDetailActivityViewModel" /> </data> <LinearLayout @@ -67,13 +67,15 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="text" android:hint="@{viewModel.typeLiveData?`请输入标题`:``}" android:text="@={viewModel.beanLiveData.title}" android:hint="@{viewModel.typeLiveData?`请输入家庭号`:``}" android:text="@={viewModel.beanLiveData.familyId}" android:enabled="@{viewModel.typeLiveData}" android:textColorHint="#6b000000" android:textColor="#DE000000" android:textSize="16sp" /> <TextView android:layout_width="wrap_content" android:layout_marginTop="@dimen/dp_10" @@ -89,8 +91,8 @@ android:textColorHint="#6b000000" android:textColor="#DE000000" android:textSize="16sp" android:hint="@{viewModel.typeLiveData?`请输入地点`:``}" android:text="@={viewModel.beanLiveData.place}" android:hint="@{viewModel.typeLiveData?`请输入使用时间`:``}" android:text="@={viewModel.beanLiveData.useTime}" android:enabled="@{viewModel.typeLiveData}" /> <TextView @@ -109,8 +111,8 @@ android:textColorHint="#6b000000" android:textColor="#DE000000" android:textSize="16sp" android:hint="@{viewModel.typeLiveData?`请输入可容纳人数`:``}" android:text="@={viewModel.beanLiveData.conPeople}" android:hint="@{viewModel.typeLiveData?`请输入会议室名称`:``}" android:text="@={viewModel.beanLiveData.conferenceRoom}" android:enabled="@{viewModel.typeLiveData}" /> <TextView @@ -125,11 +127,11 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="text" android:hint="@{viewModel.typeLiveData ? `请输入参与人数` : ``}" android:hint="@{viewModel.typeLiveData ? `请输入标题` : ``}" android:textColorHint="#6b000000" android:textColor="#DE000000" android:textSize="16sp" android:text="@={viewModel.beanLiveData.partPeople}" android:text="@={viewModel.beanLiveData.title}" android:enabled="@{viewModel.typeLiveData}" /> <TextView @@ -163,11 +165,11 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="text" android:hint="@{viewModel.typeLiveData?`请输入申请部门或家庭`:``}" android:hint="@{viewModel.typeLiveData?`请输入申请人`:``}" android:textColorHint="#6b000000" android:textColor="#DE000000" android:textSize="16sp" android:text="@={viewModel.beanLiveData.applyApart}" android:text="@={viewModel.beanLiveData.applyPerson}" android:enabled="@{viewModel.typeLiveData}" /> @@ -190,7 +192,7 @@ android:textColorHint="#6b000000" android:textColor="#DE000000" android:textSize="16sp" android:text="@={viewModel.beanLiveData.statu}" android:text="@={viewModel.beanLiveData.status}" android:enabled="@{viewModel.typeLiveData}" android:clickable="false" android:focusable="false" app/src/main/res/layout/item_meeting.xml
@@ -4,6 +4,7 @@ xmlns:tools="http://schemas.android.com/tools"> <data> <import type="com.android.app_base.utils.StringStatus"/> <variable name="bean" type="com.application.zhangshi_app_android.bean.MeetingBean" /> @@ -360,7 +361,7 @@ <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@={bean.statu}" android:text="@={StringStatus.statusToText(bean.statu)}" android:textColor="@color/black" android:textSize="12sp" app/src/main/res/layout/item_meeting_sta.xml
@@ -199,12 +199,14 @@ /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginBottom="6dp" > android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" @@ -213,6 +215,7 @@ android:textSize="12sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" @@ -222,8 +225,6 @@ /> </LinearLayout> <LinearLayout android:layout_width="match_parent" app/src/main/res/layout/pop_operate_delete.xml
@@ -25,8 +25,7 @@ android:text="编辑" android:textColor="#FF333333" android:textSize="12sp" app:drawableStartCompat="@drawable/ic_modify" /> app:drawableStartCompat="@drawable/ic_modify" /> <View android:layout_width="match_parent" app/src/main/res/layout/pop_operate_sta.xml
New file @@ -0,0 +1,95 @@ <?xml version="1.0" encoding="utf-8"?> <androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" app:cardBackgroundColor="?attr/popupWindowBackgroundColor" app:cardCornerRadius="10dp" app:cardElevation="0dp" > <LinearLayout android:layout_width="85dp" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center_horizontal" > <LinearLayout android:id="@+id/layout_add" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center_horizontal" > <TextView android:id="@+id/tv_add" android:layout_width="wrap_content" android:layout_height="32dp" android:gravity="center" android:text="新建" android:textColor="#FF333333" android:textSize="12sp" app:drawableStartCompat="@drawable/ic_operate_add" android:drawablePadding="5dp" /> <View android:layout_width="match_parent" android:layout_height="0.3dp" android:background="#FF939393" /> </LinearLayout> <LinearLayout android:id="@+id/layout_select" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center_horizontal" > <TextView android:id="@+id/tv_select" android:layout_width="wrap_content" android:layout_height="32dp" android:text="选择" android:gravity="center" android:textColor="#FF333333" android:textSize="12sp" app:drawableStartCompat="@drawable/ic_operate_select" android:drawablePadding="5dp" /> <View android:id="@+id/view_select_underline" android:layout_width="match_parent" android:layout_height="0.3dp" android:background="#FF939393" /> </LinearLayout> <LinearLayout android:id="@+id/layout_own_top" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center_horizontal" > <View android:layout_width="match_parent" android:layout_height="0.3dp" android:background="#FF939393" /> <TextView android:id="@+id/tv_own_top" android:layout_width="wrap_content" android:layout_height="32dp" android:text="本家置顶" android:gravity="center" android:textColor="#FF333333" android:textSize="12sp" app:drawableStartCompat="@drawable/ic_operate_order" android:drawablePadding="3dp" /> </LinearLayout> </LinearLayout> </androidx.cardview.widget.CardView>