package com.application.zhangshi_app_android.ui.home;
|
|
import android.content.DialogInterface;
|
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.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.HomeMemberAdapter;
|
import com.application.zhangshi_app_android.databinding.ActivityGenealogyBinding;
|
import com.application.zhangshi_app_android.ui.DLBaseActivity;
|
import com.github.gzuliyujiang.wheelpicker.DatePicker;
|
import com.github.gzuliyujiang.wheelpicker.OptionPicker;
|
import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener;
|
import com.github.gzuliyujiang.wheelpicker.contract.OnOptionPickedListener;
|
import com.hjq.bar.TitleBar;
|
|
import java.lang.reflect.Array;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.List;
|
import java.util.Locale;
|
|
/**
|
* @author Ljj
|
* @date 2023.06.12. 16:01
|
* @desc 家谱 Activity
|
*/
|
public class GenealogyActivity extends DLBaseActivity<ActivityGenealogyBinding, GenealogyActivityViewModel> {
|
private HomeMemberAdapter adapter;
|
private boolean isSearchLayoutVisible;
|
|
@Override
|
public int getLayoutId() {
|
return R.layout.activity_genealogy;
|
}
|
|
@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.getMoreHomeMembers();
|
});
|
//recyclerView适配器
|
adapter = new HomeMemberAdapter(this);
|
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);
|
//点击放大镜按钮显示出搜索框
|
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.getHomeMembers();
|
binding.layoutSearch.setVisibility(View.GONE);
|
binding.layoutDefault.setVisibility(View.VISIBLE);
|
binding.tvTitle.setText("搜索结果");
|
hideSoftKeyboard();
|
});
|
binding.etSex.setOnClickListener(v -> {
|
List<String> list = Arrays.asList("女","男");
|
OptionPicker picker = getOptionPicker(list);
|
picker.setTitle("性别");
|
picker.setOnOptionPickedListener(new OnOptionPickedListener() {
|
@Override
|
public void onOptionPicked(int position, Object item) {
|
viewModel.getRequestBeanLiveData().getValue().setSex(position);
|
binding.etSex.setText(item.toString());
|
}
|
});
|
picker.show();
|
});
|
binding.etBirthday.setOnClickListener(v -> {
|
DatePicker picker = getDatePicker();
|
picker.setTitle("生日");
|
picker.setOnDatePickedListener(new OnDatePickedListener() {
|
@Override
|
public void onDatePicked(int year, int month, int day) {
|
binding.etBirthday.setText(String.format(Locale.CHINA,"%d-%02d-%02d", year, month, day));
|
}
|
});
|
picker.show();
|
});
|
binding.etIdentity.setOnClickListener(v -> {
|
List<String> list = Arrays.asList("1","2","3","4");
|
OptionPicker picker = getOptionPicker(list);
|
picker.setTitle("身份代数");
|
picker.setOnOptionPickedListener(new OnOptionPickedListener() {
|
@Override
|
public void onOptionPicked(int position, Object item) {
|
viewModel.getRequestBeanLiveData().getValue().setIdentity(position+1);
|
binding.etIdentity.setText("第 " + item + " 代");
|
}
|
});
|
picker.show();
|
});
|
|
}
|
@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 initData() {
|
viewModel.getHomeMembers();
|
}
|
|
@Override
|
public void initLiveDataObserve() {
|
viewModel.getDataListLiveData().observe(this, list -> {
|
adapter.setData(list);
|
});
|
viewModel.getMoreListLiveData().observe(this, list -> {
|
adapter.addData(list);
|
});
|
}
|
@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 onLeftClick(TitleBar titleBar) {
|
finish();
|
}
|
}
|