| | |
| | | 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; |
| | | |
| | |
| | | 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.adapter.ElectronicFileAddAdapter; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean; |
| | | import com.application.zhangshi_app_android.bean.PersonalNotepadBean; |
| | | import com.application.zhangshi_app_android.databinding.ActivityPersonalNotepadDetailBinding; |
| | | import com.application.zhangshi_app_android.ui.DLBaseActivity; |
| | | import com.github.gzuliyujiang.wheelpicker.DatePicker; |
| | | import com.github.gzuliyujiang.wheelpicker.OptionPicker; |
| | | import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener; |
| | | import com.github.gzuliyujiang.wheelpicker.contract.OnOptionPickedListener; |
| | | import com.hjq.bar.TitleBar; |
| | | import com.luck.picture.lib.entity.LocalMedia; |
| | | import com.luck.picture.lib.interfaces.OnResultCallbackListener; |
| | | |
| | | import java.io.File; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.Locale; |
| | | import java.util.function.Consumer; |
| | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.05.14. 20:37 |
| | | * @desc |
| | | * @desc 个人记事本详情 |
| | | */ |
| | | public class PersonalNotepadDetailActivity extends DLBaseActivity<ActivityPersonalNotepadDetailBinding,PersonalNotepadDetailActivityViewModel> { |
| | | |
| | | private ImageRvAdapter adapter; |
| | | private ElectronicFileAddAdapter adapter; |
| | | private BaseDialog mWaitDialog; |
| | | private ActivityResultLauncher<Intent> activityResultLauncher; |
| | | private int type;// 0 查看可修改删除 1 新增 2 直接修改 |
| | | private PopupWindow popupWindow; |
| | | @Override |
| | |
| | | |
| | | @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); |
| | | PersonalNotepadBean 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() { |
| | |
| | | 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); |
| | | PersonalNotepadBean 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); |
| | | PersonalNotepadBean 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 onLeftClick(TitleBar titleBar) { |
| | | finish(); |
| | | } |
| | | |
| | | @Override |
| | | protected void dialogLoading() { |
| | | if (mWaitDialog == null) { |
| | | mWaitDialog = new WaitDialog.Builder(this) |
| | | // 消息文本可以不用填写 |
| | | .setMessage("正在上传") |
| | | .create(); |
| | | } |
| | | if (!mWaitDialog.isShowing()) { |
| | | mWaitDialog.show(); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | protected void dialogDismiss() { |
| | | if (mWaitDialog != null && mWaitDialog.isShowing()) { |
| | | mWaitDialog.dismiss(); |
| | | mWaitDialog = null; |
| | | } |
| | | } |
| | | } |