package com.application.zhangshi_app_android.ui.function;
|
|
import android.content.Intent;
|
import android.text.Editable;
|
import android.text.TextUtils;
|
import android.text.TextWatcher;
|
import android.view.MotionEvent;
|
import android.view.View;
|
import android.widget.PopupWindow;
|
|
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.Utils;
|
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.PersonalNotepadRvAdapter;
|
import com.application.zhangshi_app_android.bean.PersonalNotepadBean;
|
import com.application.zhangshi_app_android.databinding.ActivityPersonalNotepadBinding;
|
import com.application.zhangshi_app_android.ui.DLBaseActivity;
|
import com.github.gzuliyujiang.wheelpicker.DatePicker;
|
import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener;
|
import com.hjq.bar.TitleBar;
|
|
/**
|
* @author Ljj
|
* @date 2023.05.14. 18:51
|
* @desc
|
*/
|
public class PersonalNotepadActivity extends DLBaseActivity<ActivityPersonalNotepadBinding,PersonalNotepadActivityViewModel> {
|
private PersonalNotepadRvAdapter adapter;
|
private boolean isSearchLayoutVisible;
|
private PopupWindow mOperatePopupWindow;
|
@Override
|
public int getLayoutId() {
|
return R.layout.activity_personal_notepad;
|
}
|
|
@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.getMorePersonalNotepads();
|
});
|
//recyclerView适配器
|
adapter = new PersonalNotepadRvAdapter(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));
|
itemDecoration.setFirstTop((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_personal_notepad,null));
|
setOnClickListener(
|
mOperatePopupWindow.getContentView().findViewById(R.id.tv_add),
|
mOperatePopupWindow.getContentView().findViewById(R.id.tv_select),
|
mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old),
|
mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new),
|
mOperatePopupWindow.getContentView().findViewById(R.id.layout_growth_experience)
|
);
|
//点击放大镜按钮显示出搜索框
|
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.dropExpand(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.getPersonalNotepads();
|
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(), PersonalNotepadDetailActivity.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(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(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(v -> {
|
binding.etStartTime.setText("");
|
binding.etEndTime.setText("");
|
});
|
}
|
|
@Override
|
public void initData() {
|
viewModel.getPersonalNotepads();
|
}
|
|
@Override
|
public void initLiveDataObserve() {
|
viewModel.getDataListLiveData().observe(this, dataList -> {
|
adapter.setData(dataList);
|
});
|
viewModel.getCheckListLiveData().observe(this, checkList -> {
|
if (0 == viewModel.getOperateTypeLiveData().getValue()){
|
return;
|
}
|
if (checkList.isEmpty()){
|
viewModel.getOperateTypeLiveData().setValue(1);
|
}else{
|
viewModel.getOperateTypeLiveData().setValue(2);
|
}
|
});
|
viewModel.getMoreListLiveData().observe(this, moreList -> {
|
adapter.addData(moreList);
|
});
|
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 (PersonalNotepadBean bean : beans) {
|
adapter.removeItem(bean);
|
}
|
});
|
|
//观察数据的变化,有变化包括添加、修改、删除都会发送消息,接收到消息后重新获取数据进行刷新
|
RxBus.getInstance().toObservable(this, PersonalNotepadBean.class)
|
.subscribe(bean -> {
|
viewModel.getPersonalNotepads();
|
});
|
}
|
@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, PersonalNotepadDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1));
|
mOperatePopupWindow.dismiss();
|
}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.layout_growth_experience) {
|
AppManager.getAppManager().startActivity(GrowthExperienceActivity.class);
|
mOperatePopupWindow.dismiss();
|
}
|
}
|
|
@Override
|
protected void onDestroy() {
|
super.onDestroy();
|
if (mOperatePopupWindow != null){
|
mOperatePopupWindow.dismiss();
|
}
|
}
|
|
@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);
|
}
|
}
|