package com.application.zhangshi_app_android.ui.function; import android.graphics.drawable.ColorDrawable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; import android.widget.PopupWindow; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.android.app_base.base.BaseConfig; 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.view.BaseActivity; import com.android.app_base.manager.UserManager; 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.FamilyMemorabiliaBean; import com.application.zhangshi_app_android.bean.LittleDoctorBean; import com.application.zhangshi_app_android.databinding.ActivityFamilyMemorabiliaDetailBinding; import com.application.zhangshi_app_android.ui.DLBaseActivity; import com.github.gzuliyujiang.wheelpicker.DatePicker; import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener; 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.List; import java.util.Locale; import java.util.function.Consumer; /** * @author Gss * @date 2023.03.25. 16:00 * @desc 家大事记 FamilyMemorabiliaDetailActivity */ public class FamilyMemorabiliaDetailActivity extends DLBaseActivity { private int type;// 0 查看可修改删除 1 新增 2 直接修改 private PopupWindow popupWindow; private ImageRvAdapter adapter; @Override public int getLayoutId() { return R.layout.activity_family_memorabilia_detail; } @Override public int getVariableId() { return BR.viewModel; } @Override public void initParam() { type = getIntent().getIntExtra(BaseConfig.EXTRA_TYPE,0); if (type == 0 || type == 2){ FamilyMemorabiliaBean bean = (FamilyMemorabiliaBean) getIntent().getSerializableExtra("bean"); if (bean !=null){ viewModel.getBeanMutableLiveData().setValue(bean); } } } @Override public void initView() { adapter = new ImageRvAdapter(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() { @Override public void onClick(View v) { UserManager.getInstance().selectImage(getSelfActivity(), 9, new OnResultCallbackListener() { @Override public void onResult(ArrayList 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); } } } @Override public void onCancel() { } }); } }); adapter.setOnChildClickListener(R.id.iv_delete, new BaseRVAdapter.OnChildClickListener() { @Override public void onChildClick(RecyclerView recyclerView, View childView, int position) { FamilyMemorabiliaBean bean = viewModel.getBeanMutableLiveData().getValue(); if (bean !=null){ List urlList = Utils.splitString2List(bean.getUrl(),","); urlList.remove(adapter.getItem(position)); bean.setUrl(Utils.appendList2String(urlList,",")); } adapter.removeItem(position); viewModel.getBeanMutableLiveData().setValue(bean); } }); binding.rvImage.setAdapter(adapter); if (type == 1){ viewModel.getTypeLiveData().setValue(true); binding.titleBar.setTitle("新增家大事记"); binding.ivOperate.setOnClickListener(v -> { viewModel.add(); }); }else if (type == 0){ popupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_delete,null)); popupWindow.getContentView().findViewById(R.id.tv_modify).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { viewModel.getTypeLiveData().postValue(true); popupWindow.dismiss(); } }); popupWindow.getContentView().findViewById(R.id.tv_delete).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { popupWindow.dismiss(); new UIDialog.Builder(getSelfActivity()) .setTitle("您确定要删除项目吗") .setContent("项目删除后将无法恢复") .setConfirm("确定") .setCancel("取消") .setListener(new UIDialog.OnListener() { @Override public void onConfirm(BaseDialog dialog) { viewModel.delete(); } }) .show(); } }); viewModel.getTypeLiveData().postValue(false); }else if (type == 2){ viewModel.getTypeLiveData().postValue(true); } binding.etTime.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { DatePicker picker = getDatePicker(); picker.setTitle("选择时间"); picker.setOnDatePickedListener(new OnDatePickedListener() { @Override public void onDatePicked(int year, int month, int day) { String date = String.format(Locale.CHINA, "%d-%02d-%02d", year, month, day); binding.etTime.setText(date); } }); picker.show(); } }); } @Override public void initData() { } @Override public void initLiveDataObserve() { viewModel.getBeanMutableLiveData().observe(this,bean -> { if (bean!=null){ List urlList = Utils.splitString2List(bean.getUrl(),","); adapter.setData(urlList); } }); viewModel.getTypeLiveData().observe(this,operateType -> { if (operateType){ if (type == 1) { binding.ivOperate.setOnClickListener(v -> { viewModel.add(); }); }else { binding.ivOperate.setOnClickListener(v -> { viewModel.update(); }); } binding.rvImage.getFooterViews().forEach(new Consumer() { @Override public void accept(View view) { view.setVisibility(View.VISIBLE); } }); 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() { @Override public void accept(View view) { view.setVisibility(View.GONE); } }); setIsEdited(false); } }); } public void setIsEdited(boolean isEdited){ adapter.setIsEdited(isEdited); } }