package com.application.zhangshi_app_android.ui.function; import android.content.Intent; import android.view.View; import android.widget.PopupWindow; import androidx.lifecycle.Observer; 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.manager.AppManager; import com.android.app_base.utils.ScreenSizeUtils; import com.android.app_base.utils.rxbus.RxBus; 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.MeetingStaRvAdapter; import com.application.zhangshi_app_android.bean.MeetingStaBean; import com.application.zhangshi_app_android.databinding.ActivityMeetingStaBinding; import com.application.zhangshi_app_android.ui.DLBaseActivity; import java.util.List; /** * @author Ljj * @date 2023.03.18. 10:00 * @desc 家大事记 Activity */ public class MeetingStaActivity extends DLBaseActivity{ MeetingStaRvAdapter adapter; private PopupWindow mOperatePopupWindow; private boolean isSearchLayoutVisible; private int dateType; //0:开始时间 1:结束时间 @Override public int getLayoutId() { return R.layout.activity_meeting_sta; } @Override public int getVariableId() { return BR.viewModel; } @Override public void initParam() { } @Override public void initView() { //下拉刷新布局 binding.refreshLayout.setEnableRefresh(false); binding.refreshLayout.setEnableLoadMore(true); binding.refreshLayout.setEnableOverScrollDrag(true); binding.refreshLayout.setOnLoadMoreListener(refreshLayout -> { viewModel.getMoreMeeting(); }); //recyclerView适配器 adapter = new MeetingStaRvAdapter(this,viewModel); 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)); binding.recyclerView.addItemDecoration(itemDecoration); binding.recyclerView.setAdapter(adapter); //右上角操作弹窗 mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_sta,null)); setOnClickListener( mOperatePopupWindow.getContentView().findViewById(R.id.tv_add), mOperatePopupWindow.getContentView().findViewById(R.id.tv_select), mOperatePopupWindow.getContentView().findViewById(R.id.tv_own_top) ); // //点击放大镜按钮显示出搜索框 // binding.ivSearchDefault.setOnClickListener(v -> { // binding.layoutSearch.setVisibility(View.VISIBLE); // binding.layoutDefault.setVisibility(View.GONE); // }); // //点击搜索框菜单下拉出 搜索参数 // binding.ivSearchType.setOnClickListener(v -> { // if (!isSearchLayoutVisible){ // binding.layoutSearchParameter.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); // int targetHeight = binding.layoutSearchParameter.getMeasuredHeight(); // Utils.pullCollapse(binding.containerSearchParameter,0,targetHeight); // isSearchLayoutVisible = true; // } // }); // //搜索参数layout添加空点击事件,防止点击它内部view时它后面的recycler还能响应点击事件 // binding.layoutSearchParameter.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View v) { // } // }); // //点击搜索按钮进行搜索 // binding.ivSearch.setOnClickListener(v -> { // viewModel.getMeeting(); // binding.layoutSearch.setVisibility(View.GONE); // binding.layoutDefault.setVisibility(View.VISIBLE); // binding.tvTitle.setText("搜索结果"); // hideSoftKeyboard(); // }); // 点击添加按钮跳转到创建家大事记页面 // binding.fabAdd.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View v) { // AppManager.getAppManager().startActivity(new Intent(getSelfActivity(), MeetingStaDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1)); // } // }); // // binding.etStartTime.addTextChangedListener(new TextWatcher() { // @Override // public void beforeTextChanged(CharSequence s, int start, int count, int after) { // } // // @Override // public void onTextChanged(CharSequence s, int start, int before, int count) { // if (!TextUtils.isEmpty(s)) { // binding.ivTimeClear.setVisibility(View.VISIBLE); // } else { // if (TextUtils.isEmpty(binding.etEndTime.getText().toString())) { // binding.ivTimeClear.setVisibility(View.INVISIBLE); // } // } // } // // @Override // public void afterTextChanged(Editable s) { // // } // }); // binding.etEndTime.addTextChangedListener(new TextWatcher() { // @Override // public void beforeTextChanged(CharSequence s, int start, int count, int after) { // } // // @Override // public void onTextChanged(CharSequence s, int start, int before, int count) { // if (!TextUtils.isEmpty(s)) { // binding.ivTimeClear.setVisibility(View.VISIBLE); // } else { // if (TextUtils.isEmpty(binding.etStartTime.getText().toString())) { // binding.ivTimeClear.setVisibility(View.INVISIBLE); // } // } } // // @Override // public void afterTextChanged(Editable s) { // // } // }); // binding.etStartTime.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View v) { // hideSoftKeyboard(); // DatePicker datePicker = getDatePicker(); // datePicker.setTitle("请选择开始时间"); // datePicker.setOnDatePickedListener(new OnDatePickedListener() { // @Override // public void onDatePicked(int year, int month, int day) { // //以yyyy-MM-dd的格式显示,月日小于10时前面补0 // binding.etStartTime.setText(String.format("%d-%02d-%02d", year, month, day)); // if (binding.etEndTime.getText().toString().isEmpty()){ // binding.etEndTime.setText(String.format("%d-%02d-%02d", year, month, day)); // }else { // //比较开始时间和结束时间的大小 // String startTime = binding.etStartTime.getText().toString(); // String endTime = binding.etEndTime.getText().toString(); // if (Utils.compareDate(startTime,endTime) > 0){ // //交换 // binding.etStartTime.setText(endTime); // binding.etEndTime.setText(startTime); // } // } // } // }); // datePicker.show(); // // } // }); // binding.etEndTime.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View v) { // hideSoftKeyboard(); // DatePicker datePicker = getDatePicker(); // datePicker.setTitle("请选择结束时间"); // datePicker.setOnDatePickedListener(new OnDatePickedListener() { // @Override // public void onDatePicked(int year, int month, int day) { // binding.etEndTime.setText(String.format("%d-%02d-%02d", year, month, day)); // if (binding.etStartTime.getText().toString().isEmpty()){ // binding.etStartTime.setText(String.format("%d-%02d-%02d", year, month, day)); // }else { // //比较开始时间和结束时间的大小 // String startTime = binding.etStartTime.getText().toString(); // String endTime = binding.etEndTime.getText().toString(); // if (Utils.compareDate(startTime,endTime) > 0){ // //交换 // binding.etStartTime.setText(endTime); // binding.etEndTime.setText(startTime); // } // } // } // }); // datePicker.show(); // } // }); // binding.ivTimeClear.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View v) { // binding.etStartTime.setText(""); // binding.etEndTime.setText(""); // } // }); } @Override public void initData() { viewModel.getMeetingSta(); } // @Override // public boolean dispatchTouchEvent(MotionEvent event) { // float x = event.getX(); // float y = event.getY(); // if (isSearchLayoutVisible){ // if (!Utils.isPointInsideView(x, y, binding.layoutSearchParameter)) { // Utils.pullCollapse(binding.containerSearchParameter, binding.layoutSearchParameter.getMeasuredHeight(),0); // isSearchLayoutVisible = false; // return true; // // } // // } // return super.dispatchTouchEvent(event); // // // } @Override public void initLiveDataObserve() { viewModel.getDataListLiveData().observe(this, new Observer>() { @Override public void onChanged(List meetingstaBeans) { adapter.setData(meetingstaBeans); } }); viewModel.getCheckListLiveData().observe(this, new Observer>() { @Override public void onChanged(List meetingStaBeans) { if (viewModel.getOperateTypeLiveData().getValue() == 0){ return; } if (meetingStaBeans.isEmpty()){ viewModel.getOperateTypeLiveData().setValue(1); }else{ viewModel.getOperateTypeLiveData().setValue(2); } } }); viewModel.getMoreListLiveData().observe(this, new Observer>() { @Override public void onChanged(List meetingStaBeans) { adapter.addData(meetingStaBeans); } }); viewModel.getOperateTypeLiveData().observe(this, integer -> { if (integer == 0){ binding.ivOperate.setBackgroundResource(R.drawable.ic_operate); binding.ivOperate.setOnClickListener(v -> { mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); }); adapter.setCheckable(false); }else if (integer == 1){ binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish); binding.ivOperate.setOnClickListener(v -> { viewModel.getOperateTypeLiveData().postValue(0); }); adapter.setCheckable(true); } else if (integer == 2){ binding.ivOperate.setBackgroundResource(R.drawable.ic_delete_white); binding.ivOperate.setOnClickListener(v -> { new UIDialog.Builder(this) .setTitle("您确定要删除选中的项目吗") .setContent("项目删除后将无法恢复") .setConfirm("确定") .setCancel("取消") .setListener(new UIDialog.OnListener() { @Override public void onConfirm(BaseDialog dialog) { viewModel.deleteCheckList(); } }) .show(); }); } }); viewModel.getFinishDeleteListLiveData().observe(this, beans -> { for (MeetingStaBean bean : beans) { adapter.removeItem(bean); } }); //观察家大事记数据的变化,有变化包括添加、修改、删除都会发送消息,接收到消息后重新获取数据 RxBus.getInstance().toObservable(this, MeetingStaBean.class) .subscribe(bean -> { viewModel.getMeetingSta(); }); } @Override protected void dataNull() { super.dataNull(); binding.layoutDataNull.setVisibility(View.VISIBLE); binding.refreshLayout.setVisibility(View.GONE); } @Override protected void dataFinish() { super.dataFinish(); binding.refreshLayout.finishLoadMore(); } @Override protected void hide() { super.hide(); binding.layoutDataNull.setVisibility(View.GONE); binding.refreshLayout.setVisibility(View.VISIBLE); binding.refreshLayout.finishLoadMore(); } @Override public void onClick(View v) { int id = v.getId(); if (id == R.id.tv_add){ AppManager.getAppManager().startActivity(new Intent(this, MeetingStaDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1)); }else if (id == R.id.tv_select){ viewModel.getOperateTypeLiveData().postValue(1); mOperatePopupWindow.dismiss(); } // else if (id == R.id.tv_from_new_to_old) { // viewModel.changeOrder(true); // mOperatePopupWindow.dismiss(); // } // else if (id == R.id.tv_from_old_to_new) { // viewModel.changeOrder(false); // mOperatePopupWindow.dismiss(); // } else if (id == R.id.tv_own_top) { viewModel.ownTop(); mOperatePopupWindow.dismiss(); } } @Override protected void onDestroy() { super.onDestroy(); if (mOperatePopupWindow != null){ mOperatePopupWindow.dismiss(); } } }