From 82e57df230ecb744af6c8865f80870ba03c86d89 Mon Sep 17 00:00:00 2001 From: Linjiajia <319408893@qq.com> Date: 星期二, 25 七月 2023 22:18:27 +0800 Subject: [PATCH] 基本功能完成 --- app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivity.java | 222 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 188 insertions(+), 34 deletions(-) diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivity.java index a78bb0c..cdc18b6 100644 --- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivity.java +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivity.java @@ -3,20 +3,40 @@ 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.manager.UserManager; +import com.android.app_base.utils.ScreenSizeUtils; +import com.android.app_base.utils.Utils; +import com.android.app_base.widget.LinearItemDecoration; 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.MemoRvAdapter; import com.application.zhangshi_app_android.bean.FamilyAssetsBean; import com.application.zhangshi_app_android.bean.HomeDevicesBean; +import com.application.zhangshi_app_android.bean.LittleDoctorBean; +import com.application.zhangshi_app_android.bean.MemoBean; import com.application.zhangshi_app_android.databinding.ActivityHomeDevicesDetailBinding; 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.Arrays; import java.util.List; +import java.util.Locale; +import java.util.function.Consumer; /** * @author Ljj @@ -25,7 +45,10 @@ */ public class HomeDevicesDetailActivity extends DLBaseActivity<ActivityHomeDevicesDetailBinding,HomeDevicesDetailActivityViewModel> { + private int type;// 0 鏌ョ湅鍙慨鏀瑰垹闄� 1 鏂板 2 鐩存帴淇敼 + private PopupWindow popupWindow; private ImageRvAdapter adapter; + private MemoRvAdapter memoRvAdapter; @Override public int getLayoutId() { @@ -39,8 +62,12 @@ @Override public void initParam() { - if (getIntent().hasExtra("bean")){ - viewModel.getBeanLiveData().setValue((HomeDevicesBean) getIntent().getSerializableExtra("bean")); + type = getIntent().getIntExtra(BaseConfig.EXTRA_TYPE,0); + if (type == 0 || type == 2){ + HomeDevicesBean bean = (HomeDevicesBean) getIntent().getSerializableExtra("bean"); + if (bean !=null){ + viewModel.getBeanLiveData().setValue(bean); + } } } @@ -50,54 +77,181 @@ GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3); binding.rvImage.setLayoutManager(gridLayoutManager); binding.rvImage.setNestedScrollingEnabled(false); - setIsEdited(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); + } + } + } + + @Override + public void onCancel() { + + } + }); + } + }); + adapter.setOnChildClickListener(R.id.iv_delete, new BaseRVAdapter.OnChildClickListener() { + @Override + public void onChildClick(RecyclerView recyclerView, View childView, int position) { + HomeDevicesBean bean = viewModel.getBeanLiveData().getValue(); + if (bean !=null){ + List<String> urlList = Utils.splitString2List(bean.getUrl(),","); + urlList.remove(adapter.getItem(position)); + bean.setUrl(Utils.appendList2String(urlList,",")); + } + adapter.removeItem(position); + viewModel.getBeanLiveData().setValue(bean); + } + }); + binding.rvImage.setAdapter(adapter); + + memoRvAdapter = new MemoRvAdapter(this); + LinearItemDecoration itemDecoration = new LinearItemDecoration(); + itemDecoration.setBottomSpace(ScreenSizeUtils.dip2px(this, 15)); + binding.rvMemo.addItemDecoration(itemDecoration); + binding.rvMemo.setAdapter(memoRvAdapter); + + if (type == 1){ + viewModel.getTypeLiveData().postValue(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(); + } + }); + + binding.ivAddMemo.setOnClickListener(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); + MemoBean bean = new MemoBean(); + bean.setFid(BaseConfig.MEMO_FID_HOME_DEVICES); + bean.setCid(viewModel.getBeanLiveData().getValue().getId()); + bean.setHappenTime(date); + memoRvAdapter.addItem(0,bean); + memoRvAdapter.setFold(true,0); + } + }); + picker.show(); + }); + } @Override public void initData() { - + viewModel.getMemos(); } @Override public void initLiveDataObserve() { viewModel.getBeanLiveData().observe(this,bean -> { if (bean!=null){ - if (getTitleBar() != null){ - getTitleBar().setTitle(bean.getName()); - } - String url = bean.getUrl(); - if (url == null||url.isEmpty()){ - return; - } - List<String> list; - if (url.contains(",")){ - String[] split = url.split(","); - list = new ArrayList<>(Arrays.asList(split)); + adapter.setData(Utils.splitString2List(bean.getUrl(),",")); + } + }); + viewModel.getMemoListLiveData().observe(this, memoBeans -> { + if (memoBeans!=null){ + memoRvAdapter.setData(memoBeans); + } + }); + viewModel.getTypeLiveData().observe(this,operateType -> { + if (operateType){ + if (type == 1) { + binding.ivOperate.setOnClickListener(v -> { + viewModel.add(); + viewModel.addMemo(memoRvAdapter.getAddList()); + }); }else { - list = new ArrayList<>(); - list.add(url); + binding.ivOperate.setOnClickListener(v -> { + viewModel.addMemo(memoRvAdapter.getAddList()); + viewModel.deleteMemo(memoRvAdapter.getDeleteList()); + viewModel.updateMemo(memoRvAdapter.getUpdateList()); + viewModel.update(); + }); } - adapter.setData(list); + 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(); - } - } - } + memoRvAdapter.setEdited(isEdited); } } -- Gitblit v1.9.1