From 51e977ecf8b086b5402271486fb87c2f57d641f2 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期四, 02 一月 2025 09:23:24 +0800
Subject: [PATCH] 添加视频上传的部分功能
---
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