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