| | |
| | | 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; |
| | | |
| | | |
| | | /** |
| | |
| | | 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(); |
| | | // } |
| | | // }); |
| | | |
| | |
| | | |
| | | |
| | | |
| | | |
| | | // 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); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | |
| | | 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){ |