From a0dc6be52293a64ebfe38b8c2391dc7d2ffe63ae Mon Sep 17 00:00:00 2001 From: Linjiajia <319408893@qq.com> Date: 星期一, 15 五月 2023 20:05:27 +0800 Subject: [PATCH] 提交代码 --- app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivity.java | 198 ++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 171 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivity.java index 3e07dd7..b56c433 100644 --- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivity.java +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivity.java @@ -1,59 +1,149 @@ package com.application.zhangshi_app_android.ui.function; -import android.os.Bundle; +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.annotation.Nullable; -import androidx.databinding.DataBindingUtil; +import androidx.recyclerview.widget.GridLayoutManager; +import com.android.app_base.base.BaseConfig; +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.widget.LinearItemDecoration; +import com.android.app_base.manager.UserManager; +import com.android.app_base.utils.ScreenSizeUtils; 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.databinding.ItemFamilyCreateBinding; +import com.application.zhangshi_app_android.databinding.ActivityFamilyMemorabiliaCreateBinding; +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.function.Consumer; + /** * @author Gss * @date 2023.03.25. 16:00 * @desc 瀹跺ぇ浜嬭 CreateFamilyProjectActivity */ -public class CreateFamilyProjectActivity extends BaseActivity<ItemFamilyCreateBinding,CreateFamilyProjectActivityViewModel> { - ItemFamilyCreateBinding binding; +public class CreateFamilyProjectActivity extends BaseActivity<ActivityFamilyMemorabiliaCreateBinding,CreateFamilyProjectActivityViewModel> { + private int type; + private PopupWindow popupWindow; + private FamilyMemorabiliaBean bean; + private ImageRvAdapter adapter; - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - binding=DataBindingUtil.setContentView(this,R.layout.item_family_create); - - - } -public class Myclick{public void onClick(View view){ - - } - } @Override public int getLayoutId() { - return R.layout.item_family_create; + return R.layout.activity_family_memorabilia_create; } @Override public int getVariableId() { - return BR.CreateFamilyActivityViewModel; + return BR.viewModel; } @Override public void initParam() { - + type = getIntent().getIntExtra(BaseConfig.EXTRA_TYPE,0); + if (type == 0){ + bean = (FamilyMemorabiliaBean) getIntent().getSerializableExtra("bean"); + if (bean!=null){ + viewModel.getBeanMutableLiveData().postValue(bean); + } + } } @Override public void initView() { + adapter = new ImageRvAdapter(this,viewModel); + 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<LocalMedia>() { + @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); + } + } + } - LinearItemDecoration itemDecoration = new LinearItemDecoration(); - itemDecoration.setBottomSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_12)); - itemDecoration.setHorizontalSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20)); - itemDecoration.setFirstTop((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20)); + @Override + public void onCancel() { + + } + }); + } + }); + binding.rvImage.setAdapter(adapter); + + if (type == 1){ + viewModel.getTypeLiveData().postValue(true); + binding.ivOperate.setOnClickListener(v -> { + viewModel.add(); + }); + }else { + popupWindow = new PopupWindow(this); + // 璁剧疆甯冨眬鏂囦欢 + popupWindow.setContentView(LayoutInflater.from(this).inflate(R.layout.pop_operate_delete, null)); + // 涓轰簡閬垮厤閮ㄥ垎鏈哄瀷涓嶆樉绀猴紝闇�瑕侀噸鏂拌缃竴涓嬪楂� + popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT); + popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); + // 璁剧疆pop閫忔槑鏁堟灉 + popupWindow.setBackgroundDrawable(new ColorDrawable(0x0000)); + // 璁剧疆pop鍑哄叆鍔ㄧ敾 + popupWindow.setAnimationStyle(com.android.app_base.R.style.pop_operate); + // 璁剧疆pop鑾峰彇鐒︾偣锛屽鏋滀负false鐐瑰嚮杩斿洖鎸夐挳浼氶��鍑哄綋鍓岮ctivity锛屽鏋減op涓湁Editor鐨勮瘽锛宖ocusable蹇呴』瑕佷负true + popupWindow.setFocusable(true); + // 璁剧疆pop鍙偣鍑伙紝涓篺alse鐐瑰嚮浜嬩欢鏃犳晥锛岄粯璁や负true + popupWindow.setTouchable(true); + // 璁剧疆鐐瑰嚮pop澶栦晶娑堝け锛岄粯璁や负false锛涘湪focusable涓簍rue鏃剁偣鍑诲渚у缁堟秷澶� + popupWindow.setOutsideTouchable(true); + + 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); + } } @@ -65,8 +155,62 @@ @Override public void initLiveDataObserve() { - + viewModel.getBeanMutableLiveData().observe(this,bean -> { + if (bean!=null){ + bean.setUrl(bean.getUrl()); + adapter.setData(bean.getUrlList()); + } + }); + 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<View>() { + @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<View>() { + @Override + public void accept(View view) { + view.setVisibility(View.GONE); + } + }); + setIsEdited(false); + } + }); } - + public void setIsEdited(boolean isEdited){ + disableAllEditText(getContentView(),isEdited); + adapter.setIsEdited(isEdited); + } + public void disableAllEditText(ViewGroup viewGroup,boolean isEdited) { + for (int i = 0; i < viewGroup.getChildCount(); i++) { + View child = viewGroup.getChildAt(i); + if (child instanceof ViewGroup) { + disableAllEditText((ViewGroup) child,isEdited); + } else if (child instanceof EditText) { + child.setEnabled(isEdited); + child.setFocusable(isEdited); + child.setFocusableInTouchMode(isEdited); + if (!isEdited){ + child.clearFocus(); + } + } + } + } } -- Gitblit v1.9.1