From 1df231fd6aafa221aef3532d069c7e27d4331be7 Mon Sep 17 00:00:00 2001
From: Linjiajia <319408893@qq.com>
Date: 星期日, 27 八月 2023 19:21:01 +0800
Subject: [PATCH] 功能全部完成

---
 app/src/main/java/com/application/zhangshi_app_android/ui/function/TourismExperienceDetailActivity.java |  172 ++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 133 insertions(+), 39 deletions(-)

diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/TourismExperienceDetailActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/TourismExperienceDetailActivity.java
index c735e7f..dd26841 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/TourismExperienceDetailActivity.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/TourismExperienceDetailActivity.java
@@ -1,10 +1,16 @@
 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.view.ViewGroup;
-import android.widget.EditText;
 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.recyclerview.widget.GridLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
@@ -12,17 +18,17 @@
 import com.android.app_base.base.adapter.BaseRVAdapter;
 import com.android.app_base.base.dialog.BaseDialog;
 import com.android.app_base.base.dialog.UIDialog;
+import com.android.app_base.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.ImageRvAdapter;
-import com.application.zhangshi_app_android.bean.IncomeAndExpensesBean;
-import com.application.zhangshi_app_android.bean.PropertyBean;
+import com.application.zhangshi_app_android.adapter.ElectronicFileAddAdapter;
+import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
 import com.application.zhangshi_app_android.bean.TourismExperienceBean;
 import com.application.zhangshi_app_android.databinding.AcitivityTourismExperienceDetailBinding;
-import com.application.zhangshi_app_android.databinding.ActivityPropertyDetailBinding;
 import com.application.zhangshi_app_android.ui.DLBaseActivity;
 import com.github.gzuliyujiang.wheelpicker.DatePicker;
 import com.github.gzuliyujiang.wheelpicker.OptionPicker;
@@ -46,7 +52,9 @@
 public class TourismExperienceDetailActivity extends DLBaseActivity<AcitivityTourismExperienceDetailBinding,TourismExperienceDetailActivityViewModel> {
     private int type;// 0 鏌ョ湅鍙慨鏀瑰垹闄� 1 鏂板 2 鐩存帴淇敼
     private PopupWindow popupWindow;
-    private ImageRvAdapter adapter;
+    private ElectronicFileAddAdapter adapter;
+    private BaseDialog mWaitDialog;
+    private ActivityResultLauncher<Intent> activityResultLauncher;
 
     @Override
     public int getLayoutId() {
@@ -74,34 +82,59 @@
 
     @Override
     public void initView() {
-        adapter = new ImageRvAdapter(this);
+        adapter = new ElectronicFileAddAdapter(this);
         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() {
+        adapter.setItemAndAddClickListener(new ElectronicFileAddAdapter.OnItemAndAddClickListener() {
             @Override
-            public void onClick(View v) {
-                UserManager.getInstance().selectImage(getSelfActivity(), 9, new OnResultCallbackListener<LocalMedia>() {
+            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 onResult(ArrayList<LocalMedia> result) {
-                        if (result.size() == 0) return;
-                        for (LocalMedia media : result) {
-                            String path = media.getRealPath();
-                            File file = new File(path);
-                            if (file.exists()) {
-                                viewModel.uploadFile(file);
-                            }
+                    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);
+                                            TourismExperienceBean 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);
                         }
                     }
-
-                    @Override
-                    public void onCancel() {
-
-                    }
                 });
+                picker.show();
+
             }
         });
         adapter.setOnChildClickListener(R.id.iv_delete, new BaseRVAdapter.OnChildClickListener() {
@@ -188,6 +221,50 @@
                 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);
+                                TourismExperienceBean 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);
+                            TourismExperienceBean 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
@@ -213,22 +290,12 @@
                         viewModel.update();
                     });
                 }
-                binding.rvImage.getFooterViews().forEach(new Consumer<View>() {
-                    @Override
-                    public void accept(View view) {
-                        view.setVisibility(View.VISIBLE);
-                    }
-                });
+                adapter.setIsEdited(true);
             }else {
                 binding.ivOperate.setOnClickListener(v -> {
                     popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0);
                 });
-                binding.rvImage.getFooterViews().forEach(new Consumer<View>() {
-                    @Override
-                    public void accept(View view) {
-                        view.setVisibility(View.GONE);
-                    }
-                });
+                setIsEdited(false);
             }
         });
     }
@@ -237,4 +304,31 @@
     public void onLeftClick(TitleBar titleBar) {
         finish();
     }
+
+    public void setIsEdited(boolean isEdited){
+        adapter.setIsEdited(isEdited);
+    }
+
+    @Override
+    protected void dialogLoading() {
+        if (mWaitDialog == null) {
+            mWaitDialog = new WaitDialog.Builder(this)
+                    // 娑堟伅鏂囨湰鍙互涓嶇敤濉啓
+                    .setMessage("姝e湪涓婁紶")
+                    .create();
+        }
+        if (!mWaitDialog.isShowing()) {
+            mWaitDialog.show();
+        }
+    }
+
+    @Override
+    protected void dialogDismiss() {
+        if (mWaitDialog != null && mWaitDialog.isShowing()) {
+            mWaitDialog.dismiss();
+            mWaitDialog = null;
+        }
+    }
+
+
 }

--
Gitblit v1.9.1