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