gs
2024-07-08 42ea59771a54d2591df0a6dd3936dda669be99ae
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){