From 65a6bde49652558ada5daa15eca03d5061465a00 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期五, 27 十二月 2024 18:00:46 +0800
Subject: [PATCH] 1.图片上传进度相关代码。 2.修复地图定位图标不居中问题。

---
 app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java |   57 +++++++++++++++++++++++++++------------------------------
 1 files changed, 27 insertions(+), 30 deletions(-)

diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java
index 2d796c5..aa18d33 100644
--- a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java
+++ b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java
@@ -53,8 +53,10 @@
 import com.tencent.bugly.crashreport.CrashReport;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import retrofit2.Call;
@@ -77,7 +79,8 @@
     private final List<LocalMedia> mData = new ArrayList<>();
     private ActivityResultLauncher<Intent> launcherResult;
     private ImageEngine imageEngine;
-    List<UplodFileState> uplodFileStates = new ArrayList<>();
+//    List<UplodFileState> uplodFileStates = new ArrayList<>();
+Map<String, UplodFileState> uplodFileStates = new HashMap<>();
     String workOrderId;
     LatLonBean latLonBean;
 
@@ -116,7 +119,7 @@
         }
         mRecyclerView.addItemDecoration(new GridSpacingItemDecoration(4,
                 DensityUtil.dip2px(this, 8), false));
-        mAdapter = new AddPictureAdapter(this, mData);
+        mAdapter = new AddPictureAdapter(this, mData, uplodFileStates);
         mAdapter.setSelectMax(maxSelectNum + maxSelectVideoNum);
         mRecyclerView.setAdapter(mAdapter);
         imageEngine = GlideEngine.createGlideEngine();
@@ -144,7 +147,7 @@
         });
         binding.dealButton.setOnClickListener(v -> {
             boolean isAllPost = true;
-            for (UplodFileState imgData : uplodFileStates) {
+            for (UplodFileState imgData : uplodFileStates.values()) {
                 if (imgData.getState() == 0) {
                     isAllPost = false;
                 }
@@ -227,7 +230,7 @@
     private void analyticalSelectResults(ArrayList<LocalMedia> result) {
         //鑾峰彇褰撳墠uplodFileStates鎵�鏈夌殑鍥剧墖鍦板潃
         Set<String> existingPaths = new HashSet<>();
-        for (UplodFileState uplodData : uplodFileStates) {
+        for (UplodFileState uplodData : uplodFileStates.values()) {
             existingPaths.add(uplodData.getFilePath());
         }
         //鑾峰彇鍦≒ictureSelector鐨勭浉鍐屾椂鍙栨秷閫変腑鐨勫浘鐗�
@@ -265,7 +268,7 @@
             if (!existingPaths.contains(compressPath)) {
                 UplodFileState uplodFileState = new UplodFileState();
                 uplodFileState.setFilePath(compressPath);
-                uplodFileStates.add(uplodFileState);
+                uplodFileStates.put(compressPath, uplodFileState);
                 // 鎵ц涓婁紶鍥剧墖鐨勬搷浣�
                 uplodeImg(uplodFileState);
             }
@@ -275,27 +278,28 @@
         //澶勭悊浠庣浉鍐岃繑鍥炴椂鍙栨秷鐨勫浘鐗囧鐞�
         existingPaths.removeAll(resultPaths);
         if (!existingPaths.isEmpty()) {
+            List<UplodFileState> toRemove = new ArrayList<>();
             for (String path : existingPaths) {
-                for (UplodFileState uplodFileState : uplodFileStates) {
+                for (UplodFileState uplodFileState : uplodFileStates.values()) {
                     if (path.equals(uplodFileState.getFilePath())) {
                         uplodFileState.getThisCall().cancel();
-                        uplodFileStates.remove(uplodFileState);
+                        toRemove.add(uplodFileState);
                     }
                 }
             }
-        }
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                boolean isMaxSize = result.size() == mAdapter.getSelectMax();
-                int oldSize = mAdapter.getData().size();
-                mAdapter.notifyItemRangeRemoved(0, isMaxSize ? oldSize + 1 : oldSize);
-                mAdapter.getData().clear();
-
-                mAdapter.getData().addAll(result);
-                mAdapter.notifyItemRangeInserted(0, result.size());
-
+            for (UplodFileState removeFile : toRemove) {
+                uplodFileStates.remove(removeFile.getFilePath());
             }
+        }
+        runOnUiThread(() -> {
+            boolean isMaxSize = result.size() == mAdapter.getSelectMax();
+            int oldSize = mAdapter.getData().size();
+            mAdapter.notifyItemRangeRemoved(0, isMaxSize ? oldSize + 1 : oldSize);
+            mAdapter.getData().clear();
+
+            mAdapter.getData().addAll(result);
+            mAdapter.notifyItemRangeInserted(0, result.size());
+
         });
     }
 
@@ -305,17 +309,10 @@
         ApiManager.getInstance().uploadFile(this, uplodFileState, new UploadFileListener() {
             @Override
             public void onBack(UplodFileState state) {
-                for (UplodFileState uplodFile : uplodFileStates) {
-                    if (uplodFile.getFilePath().equals(state.getFilePath())) {
-                        int index = uplodFileStates.indexOf(uplodFile);
-                        if (index != -1) {
-                            uplodFileStates.set(index, uplodFile); // 鏇存柊瀵瑰簲鐨勯」
-                        }
-                    }
-
-                }
+                uplodFileStates.replace(state.getFilePath(), state);
+                mAdapter.updateProgress(uplodFileState);
             }
-        });
+        }, mAdapter);
     }
 
     /**
@@ -356,7 +353,7 @@
      * 寮�濮嬪畾浣嶇浉鍏抽�昏緫
      */
     private void startLocation() {
-        ServiceUtils.startLocationService(this,true);
+        ServiceUtils.startLocationService(this, true);
         //鑾峰彇瀹氫綅鏈嶅姟浼犺繃鏉ョ殑鍧愭爣鐐�
         LiveEventBus.get(CommonKeyName.locationData).observeForever(locationObserver);
     }

--
Gitblit v1.8.0