231 lines
7.6 KiB
Java
231 lines
7.6 KiB
Java
package com.ckkj.water.plan;
|
|
|
|
import static android.view.View.INVISIBLE;
|
|
|
|
import android.content.Context;
|
|
import android.os.Bundle;
|
|
import android.view.View;
|
|
import android.view.inputmethod.EditorInfo;
|
|
import android.view.inputmethod.InputMethodManager;
|
|
|
|
import com.chad.library.adapter.base.BaseQuickAdapter;
|
|
import com.ckkj.water.R;
|
|
import com.ckkj.water.base.BaseFragment;
|
|
import com.ckkj.water.custom.view.CustomRefreshHeader;
|
|
import com.ckkj.water.databinding.WaterPlanFragmentBinding;
|
|
import com.ckkj.water.index.entity.WaterDeviceEntity;
|
|
import com.ckkj.water.network.BaseBean;
|
|
//import com.ckkj.water.plan.adapter.WaterPlanListAdapter;
|
|
import com.ckkj.water.plan.adapter.WaterPlanListAdapter;
|
|
import com.ckkj.water.plan.entity.WaterPlanWeekEntity;
|
|
import com.ckkj.water.plan.mvp.WaterPlanContract;
|
|
import com.ckkj.water.plan.mvp.WaterPlanImpl;
|
|
import com.ckkj.water.plan.mvp.WaterPlanPresenter;
|
|
import com.ckkj.water.utils.manager.ThemeManager;
|
|
import com.ckkj.water.utils.show.ToastUtil;
|
|
import com.google.gson.Gson;
|
|
import com.gyf.immersionbar.ImmersionBar;
|
|
import com.scwang.smart.refresh.footer.ClassicsFooter;
|
|
import com.scwang.smart.refresh.layout.api.RefreshHeader;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
public class WaterPlanFragment extends BaseFragment<WaterPlanFragmentBinding, WaterPlanPresenter>
|
|
implements WaterPlanContract.WaterPlanView {
|
|
private List<WaterPlanWeekEntity> mPlanList = new ArrayList<>();
|
|
private WaterPlanListAdapter mAdapter;
|
|
private int mCurrentPage = 1;
|
|
private String mSearchOption = "";
|
|
@Override
|
|
public void initData(Bundle state) {
|
|
|
|
String jsonContent = getString(R.string.plan_water_entity_json);
|
|
WaterPlanWeekEntity entity = new Gson().fromJson(jsonContent, WaterPlanWeekEntity.class);
|
|
// mDevList = entity.getDeviceList();
|
|
|
|
ImmersionBar.with(mContext)
|
|
.statusBarColor(R.color.mainBackgroundColor)
|
|
.statusBarDarkFont(ThemeManager.isAppThemeLight(mContext))
|
|
.titleBar(viewBinding.rlTitle)
|
|
.init();
|
|
viewBinding.includedTitle.imgBack.setVisibility(INVISIBLE);
|
|
viewBinding.includedTitle.tvTitle.setText(getString(R.string.plan_title));
|
|
initListener();
|
|
mAdapter = new WaterPlanListAdapter(mContext,R.layout.water_plan_list_item,mPlanList);
|
|
viewBinding.rvPlans.setAdapter(mAdapter);
|
|
mAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
|
|
@Override
|
|
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
|
|
Bundle bundle = new Bundle();
|
|
bundle.putSerializable("plan_entity",mPlanList.get(position));
|
|
goTo(mContext, PlanDetailActivity.class,bundle);
|
|
}
|
|
});
|
|
|
|
RefreshHeader header = new CustomRefreshHeader(mContext);
|
|
viewBinding.refresh.setRefreshHeader(header);
|
|
viewBinding.refresh.setRefreshFooter(new ClassicsFooter(mContext));
|
|
viewBinding.refresh.setOnRefreshListener(layout -> {
|
|
mSearchOption = "";
|
|
mCurrentPage = 1;
|
|
viewBinding.refresh.setNoMoreData(false);
|
|
mPresenter.getWaterPlanList(mCurrentPage,mSearchOption);
|
|
viewBinding.etInputPlanName.setText("");
|
|
});
|
|
viewBinding.refresh.setOnLoadMoreListener(layout -> {
|
|
mCurrentPage++;
|
|
mPresenter.getWaterPlanList(mCurrentPage,mSearchOption);
|
|
});
|
|
//文本输入搜索排程
|
|
viewBinding.etInputPlanName.setOnEditorActionListener((v, actionId, event) -> {
|
|
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
|
|
// 隐藏键盘
|
|
InputMethodManager imm = (InputMethodManager) v.getContext()
|
|
.getSystemService(Context.INPUT_METHOD_SERVICE);
|
|
|
|
if (imm != null) {
|
|
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
|
|
}
|
|
|
|
// 清除焦点(可选,避免键盘再次弹出)
|
|
v.clearFocus();
|
|
mSearchOption = v.getText().toString().trim();
|
|
mCurrentPage = 1;
|
|
// 执行搜索
|
|
mPresenter.getWaterPlanList(mCurrentPage,mSearchOption);
|
|
return true;
|
|
}
|
|
return false;
|
|
});
|
|
}
|
|
|
|
@Override
|
|
protected void onResumeInitData() {
|
|
super.onResumeInitData();
|
|
showLoadingDialog();
|
|
mPresenter.getWaterPlanList(mCurrentPage,mSearchOption);
|
|
}
|
|
|
|
private void initListener() {
|
|
setClick(viewBinding.tvAdd);
|
|
setClick(viewBinding.includedNoresult.btnRefresh);
|
|
}
|
|
|
|
private void setClick(View view) {
|
|
view.setOnClickListener(this::onClick);
|
|
}
|
|
|
|
public void onClick(View v){
|
|
switch (v.getId()){
|
|
case R.id.tv_add:
|
|
goTo(mContext, AddWaterPlanActivity.class,null);
|
|
break;
|
|
|
|
case R.id.btn_refresh:
|
|
mCurrentPage = 1;
|
|
mPresenter.getWaterPlanList(mCurrentPage,mSearchOption);
|
|
break;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void getWaterConfigListSuccess(List<WaterPlanWeekEntity> list,int total) {
|
|
|
|
hideDialogLoading();
|
|
List<WaterPlanWeekEntity> pageList = list == null ? new ArrayList<>() : list;
|
|
if (mCurrentPage == 1) {
|
|
viewBinding.refresh.finishRefresh(300);
|
|
mPlanList.clear(); // 只在刷新时清除
|
|
mPlanList = pageList;
|
|
} else {
|
|
viewBinding.refresh.finishLoadMore(300);
|
|
mPlanList.addAll(pageList);
|
|
}
|
|
mAdapter.setNewData(mPlanList);
|
|
|
|
// 4. 判断是否还有更多数据
|
|
if (mAdapter.getItemCount() >= total || pageList.size() == 0) {
|
|
// 使用 post 延迟调用,避免内部状态冲突导致的循环调用
|
|
viewBinding.refresh.postDelayed(() -> viewBinding.refresh.setNoMoreData(true), 300);
|
|
viewBinding.relNoMore.setVisibility(View.VISIBLE); // 自定义底部提示"暂无更多数据"
|
|
} else {
|
|
viewBinding.refresh.setNoMoreData(false);
|
|
viewBinding.relNoMore.setVisibility(View.GONE);
|
|
}
|
|
|
|
// 5. 控制空布局和内容显示
|
|
if (mAdapter.getItemCount() != 0) {
|
|
viewBinding.refresh.setVisibility(View.VISIBLE);
|
|
viewBinding.relNoresult.setVisibility(View.GONE);
|
|
} else {
|
|
viewBinding.refresh.setVisibility(View.GONE);
|
|
viewBinding.relNoresult.setVisibility(View.VISIBLE);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
public WaterPlanPresenter createPresenter() {
|
|
return new WaterPlanPresenter(new WaterPlanImpl());
|
|
}
|
|
|
|
@Override
|
|
public void onNetChange(int netModel) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void showError(String message) {
|
|
hideDialogLoading();
|
|
ToastUtil.showShort(mContext,message);
|
|
}
|
|
|
|
@Override
|
|
public void logOut(BaseBean bean) {
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
public void saveConfigSuccess(WaterPlanWeekEntity entity) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void updateConfigSuccess(WaterPlanWeekEntity entity) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void updatePlanStatusSuccess(BaseBean bean, String status) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void getPlanDetailInfo(WaterPlanWeekEntity entity) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void getPlanBindDeviceList(WaterDeviceEntity bean) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void planBindDeviceSuccess(BaseBean bean) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void deletePlanSuccess(BaseBean bean) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void planUnbindDeviceSuccess(BaseBean bean, int position) {
|
|
|
|
}
|
|
}
|