From ab9e0ae52d360fbe512bfbd3205206fcf4221be9 Mon Sep 17 00:00:00 2001
From: Guo_shaoshan <2055829622@qq.com>
Date: 星期日, 09 四月 2023 10:41:46 +0800
Subject: [PATCH] 成长经历添加数据

---
 app/src/main/java/com/application/zhangshi_app_android/ui/function/CreateFamilyProjectActivity.java |  197 ++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 170 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..40ecd10 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,148 @@
 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);
+        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);
+        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_add);
+            // 璁剧疆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 +154,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