From 43c0a28db7e43959561036dbde0eb5cb37a7e324 Mon Sep 17 00:00:00 2001
From: mac <user@users-MacBook-Pro.local>
Date: 星期五, 10 五月 2024 18:25:40 +0800
Subject: [PATCH] 2024年05月10日18:25:29
---
app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java | 738 +++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 672 insertions(+), 66 deletions(-)
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java b/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java
index b0e9e75..64e341f 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java
@@ -1,48 +1,82 @@
package com.hdl.photovoltaic.ui.powerstation;
-import android.Manifest;
-import android.content.Context;
+import android.content.Intent;
import android.content.pm.PackageManager;
-import android.hardware.camera2.CameraManager;
import android.os.Bundle;
-import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
+import com.google.gson.Gson;
+import com.hdl.linkpm.sdk.core.exception.HDLException;
import com.hdl.photovoltaic.R;
+import com.hdl.photovoltaic.bean.PageNumberObject;
+import com.hdl.photovoltaic.config.ConstantManage;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.databinding.FragmentHouseListBinding;
import com.hdl.photovoltaic.base.CustomBaseFragment;
+import com.hdl.photovoltaic.enums.HomepageTitleTabSwitch;
+import com.hdl.photovoltaic.enums.ShowErrorMode;
+import com.hdl.photovoltaic.enums.SortType;
+import com.hdl.photovoltaic.enums.SortValue;
+import com.hdl.photovoltaic.listener.CloudCallBeak;
+import com.hdl.photovoltaic.listener.LinkCallBack;
+import com.hdl.photovoltaic.other.HdlCommonLogic;
+import com.hdl.photovoltaic.other.HdlDeviceLogic;
import com.hdl.photovoltaic.other.HdlLogLogic;
import com.hdl.photovoltaic.other.HdlResidenceLogic;
import com.hdl.photovoltaic.other.HdlThreadLogic;
import com.hdl.photovoltaic.other.HdlUniLogic;
+import com.hdl.photovoltaic.ui.adapter.DeviceInfoAdapter;
import com.hdl.photovoltaic.ui.adapter.HouseInfoAdapter;
+import com.hdl.photovoltaic.ui.bean.DeviceBean;
import com.hdl.photovoltaic.ui.bean.HouseIdBean;
import com.hdl.photovoltaic.uni.HDLUniMP;
import com.hdl.photovoltaic.utils.PermissionUtils;
+import com.hdl.photovoltaic.widget.DefaultFilteringDialog;
+import com.hdl.photovoltaic.widget.DelayedConfirmationCancelDialog;
+import com.hdl.sdk.link.common.exception.HDLLinkException;
+import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus;
+import com.hdl.sdk.link.core.bean.gateway.GatewayBean;
+import com.hdl.sdk.link.core.utils.mqtt.MqttRecvClient;
import java.util.ArrayList;
import java.util.List;
+/**
+ * 鐢电珯鍜岃澶�-鐣岄潰
+ */
public class HouseListFragment extends CustomBaseFragment {
-
- public static final String SORT_TYPE_1 = "powerSort";//鍙戠數鍔熺巼鎺掑簭
- public static final String SORT_TYPE_2 = "todayElectricitySort";//浠婃棩鍙戠數閲忔帓搴�
- public static final String SORT_TYPE_3 = "createTimeSort";//鍒涘缓鏃堕棿鎺掑簭
- public static final String DESCENDING = "descending";//闄嶅簭
- public static final String ASCENDING = "ascending";//鍗囧簭
- public static final String SELECTED_SORT_TYPE = SORT_TYPE_1;
- public static final String SELECTED_SORT = DESCENDING;
-
private FragmentHouseListBinding viewBinding;
private HouseInfoAdapter houseInfoAdapter;
- private CameraManager manager;
- private List<HouseIdBean> houseListBeanIDList = null;
+ private DeviceInfoAdapter deviceInfoAdapter;
+
+ private List<HouseIdBean> houseListBeanIDList;
+ private List<DeviceBean> deviceInfoList;
+
+
+ private int currentHouseListPage = 0; // 褰撳墠鐢电珯鍒楄〃椤电爜
+ private int currentHouseListTotal = 0; // 鐢电珯鍒楄〃鎬婚〉鐮�
+ private boolean isHouseLoadingMore = false; // 鏍囪鐢电珯鍒楄〃姝e湪鍔犺浇鏇村鏁版嵁
+
+ private int currentDeviceListPage = 0; // 褰撳墠璁惧鍒楄〃椤电爜
+ private int currentDeviceListTotal = 0; // 璁惧鍒楄〃鎬婚〉鐮�
+ private boolean isDeviceLoadingMore = false; // 鏍囪璁惧鍒楄〃姝e湪鍔犺浇鏇村鏁版嵁
+
+ private boolean isClickPowerStationLabel = true;//(鐢电珯鏍囩=true锛岃澶囨爣绛�=false)
+
+ private String key = SortValue.all;
+ private String value = SortValue.all;//descending:闄嶅簭,ascending:鍗囧簭
+ private String installedCapacityMinValue = "";//鏈�灏忕粍涓插閲�(瑁呮満瀹归噺)
+ private String installedCapacityMaxValue = "";//鏈�澶х粍涓插閲�(瑁呮満瀹归噺)
+ private String gridTypeValue = "";//骞剁綉鐘舵��(鍏ㄩ儴 涓嶄紶璇ヨ繃婊ゅ弬鏁�,FULL_GRID:骞剁綉,OFFLINE:绂荤綉)
+ private String powerStationStatusValue = "";//鐢电珯鐘舵��(鍏ㄩ儴 涓嶄紶璇ヨ繃婊ゅ弬鏁�,1:姝e父(杩愯),2:绂荤嚎,3:寰呮帴鍏�,4:鏁呴殰)
+
+ private final long pageSize = 20;//椤垫暟
@Override
@@ -53,104 +87,670 @@
@Override
public void onBindView(Bundle savedInstanceState) {
- manager = (CameraManager) _mActivity.getSystemService(Context.CAMERA_SERVICE);
-
initData();
//鍒濆鍖�
initView();
//鍒濆鍖栫晫闈㈢洃鍚櫒
initEvent();
-
-
}
private void initEvent() {
- viewBinding.toolbarTopFragmentHouseListRl.topMoreIv.setOnClickListener(new View.OnClickListener() {
+ //鐢电珯鏍囩
+ viewBinding.powerStationLabel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
+ if (isClickPowerStationLabel) {
+ return;
+ }
+ isClickPowerStationLabel = true;
+ viewBinding.powerStationLabel.setTextAppearance(R.style.Text20Style);
+ viewBinding.deviceLabel.setTextAppearance(R.style.Text16Style);
+ viewBinding.powerStationLabelParent.setVisibility(View.VISIBLE);//鐢电珯鏍囩銆愮埗瀹瑰櫒銆戞樉绀�
+ viewBinding.deviceLabelParent.setVisibility(View.GONE);//璁惧鏍囩銆愮埗瀹瑰櫒銆戦殣钘�
+ loadNextPageHouseList(true, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true);
+ }
+ });
+ //璁惧鏍囩
+ viewBinding.deviceLabel.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (!isClickPowerStationLabel) {
+ return;
+ }
+ isClickPowerStationLabel = false;
+ viewBinding.deviceLabel.setTextAppearance(R.style.Text20Style);
+ viewBinding.powerStationLabel.setTextAppearance(R.style.Text16Style);
+ viewBinding.editIv.setVisibility(View.GONE);//缂栬緫鍥炬爣闅愯棌
+ viewBinding.addIv.setVisibility(View.GONE);//娣诲姞鍥炬爣闅愯棌
+ viewBinding.powerStationLabelParent.setVisibility(View.GONE);//鐢电珯鏍囩銆愮埗瀹瑰櫒銆戦殣钘�
+ viewBinding.deviceLabelParent.setVisibility(View.VISIBLE);//璁惧鏍囩銆愮埗瀹瑰櫒銆戞樉绀�
+ loadNextPageDeviceList(true, 1, true);
+ }
+ });
- // 鎵撳紑灏忕▼搴忛〉闈�
-// HdlUniLogic.getInstance().openUniMP(HDLUniMP.UNI_EVENT_OPEN_HOME_CREATION, null);
- requestPermissions(new PermissionsResultCallback() {
+ //鐢电珯娣诲姞
+ viewBinding.addIv.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ HdlUniLogic.getInstance().openUniMP(HDLUniMP.UNI_EVENT_OPEN_HOME_CREATION, null);
+
+ }
+ });
+ //鐢电珯鎼滅储
+ viewBinding.powerStationSearchClickCl.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent();
+ intent.setClass(_mActivity, HouseSearchActivity.class);
+ startActivity(intent);
+ }
+ });
+ //榛樿閫夋嫨鍙傛暟鍥炬爣
+ viewBinding.powerStationDefaultConditionIv.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ DefaultFilteringDialog defaultFilteringDialog = new DefaultFilteringDialog(_mActivity);
+ defaultFilteringDialog.show();
+ defaultFilteringDialog.initState(installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue);
+ defaultFilteringDialog.setOnClickListener(new DefaultFilteringDialog.OnClickListener() {
@Override
- public void succeed() {
- // 鎵撳紑灏忕▼搴忛〉闈�
- HdlUniLogic.getInstance().openUniMP(HDLUniMP.UNI_EVENT_OPEN_HOME_CREATION, null);
+ public void confirm(String min, String max, String state) {
+ installedCapacityMinValue = min;//鏈�灏忕粍涓插閲�(瑁呮満瀹归噺)
+ installedCapacityMaxValue = max;//鏈�澶х粍涓插閲�(瑁呮満瀹归噺)
+ gridTypeValue = state;//骞剁綉鐘舵��(鍏ㄩ儴 涓嶄紶璇ヨ繃婊ゅ弬鏁�,FULL_GRID:骞剁綉,OFFLINE:绂荤綉)
+ loadNextPageHouseList(true, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true);
+ }
+ });
+ }
+ });
+
+ //鐢电珯璁剧疆涓嬫媺绠ご棰滆壊
+ viewBinding.fragmentHouseSrl.setColorSchemeResources(R.color.text_FF245EC3);
+ //鐢电珯涓嬫媺璇诲彇
+ viewBinding.fragmentHouseSrl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ viewBinding.fragmentHouseSrl.setRefreshing(false);
+ loadNextPageHouseList(true, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true);
+ }
+ });
+ //鐢电珯涓婃媺璇诲彇
+ viewBinding.fragmentHouseSrlListRc.addOnScrollListener(new RecyclerView.OnScrollListener() {
+ @Override
+ public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
+// super.onScrolled(recyclerView, dx, dy);
+
+ LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
+ if (layoutManager == null) {
+ return;
+ }
+ int visibleItemCount = layoutManager.getChildCount();
+ int totalItemCount = layoutManager.getItemCount();
+ int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition();
+ if (visibleItemCount > 0 && visibleItemCount + firstVisibleItemPosition == totalItemCount) {
+ if (!isHouseLoadingMore) {
+ // 婊戝姩鍒颁簡搴曢儴锛屾墽琛岀浉搴旂殑鎿嶄綔
+ HdlLogLogic.print("--->婊戝姩鍒颁簡搴曢儴");
+ loadNextPageHouseList(false, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, ++currentHouseListPage, false);
+ }
+ }
+ }
+ });
+ //鐢电珯璇︽儏杩涘叆,鍒犻櫎鐢电珯,绉诲姩鐢电珯浣嶇疆
+ houseInfoAdapter.setNoOnclickListener(new HouseInfoAdapter.OnclickListener() {
+ @Override
+ public void onClick(int position, HouseIdBean houseIdBean) {
+ //鐐瑰嚮浣忓畢璇︽儏
+ HdlLogLogic.print("鐐瑰嚮浣忓畢璇︽儏--->" + new Gson().toJson(houseIdBean), false);
+ HdlResidenceLogic.getInstance().switchHouse(houseIdBean);
+ String path = HDLUniMP.UNI_EVENT_OPEN_HOME_DETAILS + "?homeId=" + houseIdBean.getHomeId() + "&homeName=" + houseIdBean.getHomeName() + "&powerStationStatus=" + houseIdBean.getPowerStationStatus();
+ HdlUniLogic.getInstance().openUniMP(path, null);
+
+ }
+
+ @Override
+ public void onMoveClick(int position, HouseIdBean houseIdBean) {
+ if (position == 0) {
+ HdlThreadLogic.toast(_mActivity, getString(R.string.already_the_first_one));
+ return;
+ }
+ String frontHomeId = "";
+ if (position > 1) {
+ frontHomeId = houseListBeanIDList.get(position - 2).getHomeId();
+ }
+ HdlResidenceLogic.getInstance().moveResidence(houseIdBean.getHomeId(), frontHomeId, new CloudCallBeak<Boolean>() {
+ @Override
+ public void onSuccess(Boolean obj) {
+ //绉诲姩鐢电珯浣嶇疆
+ HdlResidenceLogic.getInstance().moveHouseId(houseIdBean.getHomeId());
+ initData();//鍒濆鍖栫紦瀛樻暟鎹�
+ houseInfoAdapter.setList(houseListBeanIDList);//閲嶆柊鍒锋柊鍒楄〃
+ nullDataUpdateUi();//妫�娴嬫暟鎹槸鍚︿负绌�
}
@Override
- public void failing() {
+ public void onFailure(HDLException e) {
+ HdlThreadLogic.toast(_mActivity, e);
+ }
+ });
+
+
+ }
+
+ @Override
+ public void onDelClick(int position, HouseIdBean houseIdBean) {
+
+ DelayedConfirmationCancelDialog delayedConfirmationCancelDialog = new DelayedConfirmationCancelDialog(_mActivity);
+ delayedConfirmationCancelDialog.setTitleContent(getString(R.string.loading_title_tip));
+ String homeName = "\"" + houseIdBean.getHomeName() + "\"";
+ delayedConfirmationCancelDialog.setContent(getString(R.string.delete_power_station).replace("%s", homeName));
+ delayedConfirmationCancelDialog.show();
+ delayedConfirmationCancelDialog.startCountdown(4);
+ delayedConfirmationCancelDialog.setYesOnclickListener(new DelayedConfirmationCancelDialog.onYesOnclickListener() {
+ @Override
+ public void Confirm() {
+ delayedConfirmationCancelDialog.dismiss();
+ showLoading(getString(R.string.deleting_please_wait));
+ HdlDeviceLogic.getInstance().getCurrentHomeLocalAndCloudGatewayList(houseIdBean.getHomeId(), new CloudCallBeak<List<GatewayBean>>() {
+ @Override
+ public void onSuccess(List<GatewayBean> list) {
+ //鍙戣捣鍒犻櫎鐢电珯鎸囦护
+ deleteResidence(houseIdBean.getHomeId(), list);
+
+ }
+
+ @Override
+ public void onFailure(HDLException e) {
+ //鍙戣捣鍒犻櫎鐢电珯鎸囦护
+ deleteResidence(houseIdBean.getHomeId(), null);
+ }
+ });
+
+// //鍒犻櫎浣忓畢
+// HdlResidenceLogic.getInstance().delResidence(houseIdBean.getHomeId(), new CloudCallBeak<Boolean>() {
+// @Override
+// public void onSuccess(Boolean obj) {
+// HdlResidenceLogic.getInstance().delHouseId(houseIdBean.getHomeId());
+// initData();//鍒濆鍖栫紦瀛樻暟鎹�
+// houseInfoAdapter.setList(houseListBeanIDList);//閲嶆柊鍒锋柊鍒楄〃
+// nullDataUpdateUi(houseListBeanIDList);//妫�娴嬫暟鎹槸鍚︿负绌�
+// }
+//
+// @Override
+// public void onFailure(HDLException e) {
+// HdlThreadLogic.toast(_mActivity, e);
+// }
+// });
+ }
+ });
+ delayedConfirmationCancelDialog.setNoOnclickListener(new DelayedConfirmationCancelDialog.onNoOnclickListener() {
+ @Override
+ public void Cancel() {
+ delayedConfirmationCancelDialog.dismiss();
}
});
}
});
- //璁剧疆涓嬫媺绠ご棰滆壊
- viewBinding.fragmentHouseSrl.setColorSchemeResources(R.color.text_FF245EC3);
- viewBinding.fragmentHouseSrl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+ //鐢电珯缂栬緫鎸夐挳
+ viewBinding.editIv.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ startActivity(HouseListEditActivity.class);
+ }
+ });
+ //鐢电珯鍚嶇О绛涢��
+ viewBinding.stationNameRl.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ boolean isSelected = !v.isSelected();
+ viewBinding.stationNameRl.setSelected(isSelected);
+ viewBinding.stationNameIv.setSelected(isSelected);
+ key = SortType.homeNameSort;
+ value = isSelected ? SortValue.ascending : SortValue.descending;
+ }
+ });
+ //鐢电珯鍙戠數鍔熺巼绛涢��
+ viewBinding.stationPowerRl.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ boolean isSelected = !v.isSelected();
+ viewBinding.stationPowerRl.setSelected(isSelected);
+ viewBinding.stationPowerIv.setSelected(isSelected);
+ key = SortType.powerSort;
+ value = isSelected ? SortValue.ascending : SortValue.descending;
+ }
+ });
+ //鐢电珯褰撴棩鍙戠數閲忕瓫閫�
+ viewBinding.stationDayRl.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ boolean isSelected = !v.isSelected();
+ viewBinding.stationDayRl.setSelected(isSelected);
+ viewBinding.stationDayIv.setSelected(isSelected);
+ key = SortType.todayElectricitySort;
+ value = isSelected ? SortValue.ascending : SortValue.descending;
+ }
+ });
+ //鐢电珯褰撴湀鍙戠數閲忕瓫閫�
+ viewBinding.stationMonthRl.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ boolean isSelected = !v.isSelected();
+ viewBinding.stationMonthRl.setSelected(isSelected);
+ viewBinding.stationMonthIv.setSelected(isSelected);
+ key = SortType.monthElectricitySort;
+ value = isSelected ? SortValue.ascending : SortValue.descending;
+ }
+ });
+ //璁惧鐐瑰嚮
+ deviceInfoAdapter.setOnclickListener(new DeviceInfoAdapter.OnClickListener() {
+ @Override
+ public void onClick(int position, DeviceBean deviceBean) {
+
+ }
+ });
+ //璁惧璁剧疆涓嬫媺绠ご棰滆壊
+ viewBinding.fragmentDeviceSrl.setColorSchemeResources(R.color.text_FF245EC3);
+ //璁惧涓嬫媺璇诲彇
+ viewBinding.fragmentDeviceSrl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
-
- viewBinding.fragmentHouseSrl.setRefreshing(false);
- Log.d("HouseListFragment", "涓嬫媺鍒锋柊");
+ viewBinding.fragmentDeviceSrl.setRefreshing(false);
+ loadNextPageDeviceList(false, 1, true);
}
});
- houseInfoAdapter.setNoOnclickListener(new HouseInfoAdapter.OnclickListener() {
+ //璁惧涓婃媺璇诲彇
+ viewBinding.fragmentDeviceSrlListRc.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
- public void onClick(int position, HouseIdBean houseIdBean) {
- //鐐瑰嚮浣忓畢璇︽儏
- HdlLogLogic.print("====鐐瑰嚮浣忓畢璇︽儏" + position);
- HdlResidenceLogic.getInstance().switchHouse(houseIdBean.getHomeId());
- String path = HDLUniMP.UNI_EVENT_OPEN_HOME_DETAILS + "?homeId=" + houseIdBean.getHomeId();
- HdlUniLogic.getInstance().openUniMP(path, null);
+ public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
+// super.onScrolled(recyclerView, dx, dy);
+
+ LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
+ if (layoutManager == null) {
+ return;
+ }
+ int visibleItemCount = layoutManager.getChildCount();
+ int totalItemCount = layoutManager.getItemCount();
+ int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition();
+ if (visibleItemCount > 0 && visibleItemCount + firstVisibleItemPosition == totalItemCount) {
+ if (!isDeviceLoadingMore) {
+ // 婊戝姩鍒颁簡搴曢儴锛屾墽琛岀浉搴旂殑鎿嶄綔
+ HdlLogLogic.print("--->婊戝姩鍒颁簡搴曢儴");
+ loadNextPageDeviceList(false, ++currentDeviceListPage, false);
+ }
+ }
}
});
+ //璁惧娣绘悳绱�
+ viewBinding.deviceSearchCl.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent();
+ intent.setClass(_mActivity, DeviceSearchActivity.class);
+ startActivity(intent);
+ }
+ });
+
}
private void initView() {
- viewBinding.toolbarTopFragmentHouseListRl.topTitleTv.setText(R.string.my_power_station_鎴戠殑鐢电珯);
- viewBinding.toolbarTopFragmentHouseListRl.topMoreIv.setVisibility(View.VISIBLE);
- viewBinding.toolbarTopFragmentHouseListRl.topMoreIv.setImageResource(R.drawable.add);
- LinearLayoutManager linearLayout = new LinearLayoutManager(_mActivity);
- houseInfoAdapter = new HouseInfoAdapter(this.houseListBeanIDList);
- viewBinding.fragmentHouseSrlListRc.setLayoutManager(linearLayout);
+ viewBinding.powerStationLabelParent.setVisibility(View.VISIBLE);
+ viewBinding.deviceLabelParent.setVisibility(View.GONE);
+ //鐢电珯鏍囩
+ houseInfoAdapter = new HouseInfoAdapter(_mActivity);
+ viewBinding.fragmentHouseSrlListRc.setLayoutManager(new LinearLayoutManager(_mActivity));
viewBinding.fragmentHouseSrlListRc.setAdapter(houseInfoAdapter);
+ houseInfoAdapter.setList(this.houseListBeanIDList);
+
+ //璁惧鏍囩
+ deviceInfoAdapter = new DeviceInfoAdapter(_mActivity);
+ viewBinding.fragmentDeviceSrlListRc.setLayoutManager(new LinearLayoutManager(_mActivity));
+ viewBinding.fragmentDeviceSrlListRc.setAdapter(deviceInfoAdapter);
+ this.nullDataUpdateUi();
}
private void initData() {
- this.houseListBeanIDList = new ArrayList<>();
-// for (int i = 0; i < 11; i++) {
-// HouseListBean houseListBean = new HouseListBean();
-// houseListBean.setHomeName("鐢电珯" + i);
-// this.houseListBeanList.add(houseListBean);
-// }
- this.houseListBeanIDList.addAll(HdlResidenceLogic.getInstance().getHouseIdList());
+ if (isClickPowerStationLabel) {
+ this.houseListBeanIDList = new ArrayList<>();
+ this.houseListBeanIDList.addAll(HdlResidenceLogic.getInstance().getHouseIdList());
+ } else {
+ this.deviceInfoList = new ArrayList<>();
+ this.deviceInfoList.add(new DeviceBean());
+// this.deviceInfoList.addAll(HdlDeviceLogic.getInstance().getListDevice());
+ }
+ }
+
+ /**
+ * 鏀跺埌EventBUs閫氱煡
+ *
+ * @param eventBus 鏁版嵁
+ */
+ @Override
+ public void onEventMessage(BaseEventBus eventBus) {
+ super.onEventMessage(eventBus);
+ if (HDLUniMP.UNI_EVENT_REPLY_HOME_MODEL.equals(eventBus.getTopic())) {
+ if (HDLUniMP.UNI_EVENT_REPLY_HOME_CREATION.equals(eventBus.getType())) {
+ //uin鍒涘缓鐢电珯鎴愬姛鍚庨�氱煡
+ loadNextPageHouseList(false, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true);
+ if (eventBus.getData() != null) {
+ Gson gson = new Gson();
+ String json = eventBus.getData().toString();
+ HouseIdBean houseIdBean = gson.fromJson(json, HouseIdBean.class);
+ HdlResidenceLogic.getInstance().switchHouse(houseIdBean);
+
+ }
+ } else if (HDLUniMP.UNI_EVENT_REPLY_HOME_EDIT.equals(eventBus.getType())) {
+ //todo 鐜板湪榛樿鍒锋柊鍏ㄩ儴
+ //uin缂栬緫浣忓畢閫氱煡
+// String homeId = HdlUniLogic.getInstance().getKeyValue("homeId", eventBus.getData());
+// String home_name = HdlUniLogic.getInstance().getKeyValue("powerStationName", eventBus.getData());
+// if (TextUtils.isEmpty(homeId) || TextUtils.isEmpty(home_name)) {
+// return;
+// }
+// int index = -1;
+// for (int i = 0; i < houseListBeanIDList.size(); i++) {
+// HouseIdBean houseIdBean = houseListBeanIDList.get(i);
+// if (houseIdBean.getHomeId().equals(homeId)) {
+// index = i;
+// houseIdBean.setHomeName(home_name);
+// break;
+// }
+// }
+// if (index > -1) {
+// if (houseInfoAdapter != null) {
+// //鏇存柊鍗曚釜鏁版嵁
+// houseInfoAdapter.notifyItemChanged(index);
+// }
+// }
+ }
+ } else if (HDLUniMP.UNI_EVENT_REPLY_HOME_CLOSE_HOME_DETAILS_PAGE.equals(eventBus.getType())) {
+ //uin鍏抽棴浣忓畢璇︽儏鐣岄潰閫氱煡
+ if (MqttRecvClient.getInstance() != null) {
+ MqttRecvClient.getInstance().removeAllTopic();
+ }
+ loadNextPageHouseList(false, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true);
+
+ } else if (HDLUniMP.UNI_EVENT_REPLY_DEVICE_LIST.equals(eventBus.getType())) {
+ //杩涘幓浣忓畢璇︽儏uni璇诲彇閫嗗彉鍣ㄥ垪琛ㄦ垚鍔熷悗閫氱煡
+ for (int i = 0; i < HdlDeviceLogic.getInstance().getCurrentHomeGatewayList(UserConfigManage.getInstance().getHomeId()).size(); i++) {
+ String gatewayId = HdlDeviceLogic.getInstance().getCurrentHomeGatewayList(UserConfigManage.getInstance().getHomeId()).get(i).getGatewayId();
+ //瀛楃涓叉槸鑷繁鎸夎鍒欐嫾鎺ョ殑,閲岄潰娉ㄥ唽涓婚鏃朵細瑙f瀽瀛楃涓�,鍙嬁getGatewayId()鍊�;
+ String topic = "/user/" + gatewayId + "/#";
+ //杩涘幓浣忓畢璇︽儏寮�濮嬭闃呬富棰�
+ MqttRecvClient.getInstance().checkAndsubscribeAllTopics(topic);
+ }
+ } else if (eventBus.getTopic().equals(ConstantManage.homepage_title_tab_switch)) {
+ //鎺ユ敹澶栭儴鐐瑰嚮浜嬩欢
+ if (eventBus.getType().equals(HomepageTitleTabSwitch.powerstation.toString())) {
+ HdlLogLogic.print("姝e湪鐐瑰嚮銆愮數绔欍��");
+ loadNextPageHouseList(true, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true);
+ }
+ }
}
/**
- * 鐢宠鏉冮檺
+ * 鍒锋柊UI锛堢數绔欙級
+ *
+ * @param isRefreshing 琛ㄧず鏄笅鎷夊埛鏂扮殑
+ * @param key 鍙戠數鍔熺巼鎺掑簭(powerSort);
+ * 浠婃棩鍙戠數閲忔帓搴�(todayElectricitySort);
+ * 鍒涘缓鏃堕棿鎺掑簭(createTimeSort);
+ * @param keyValue (descending:闄嶅簭
+ * ascending:鍗囧簭),
+ * @param installedCapacityMin 鏈�灏忕粍涓插閲�(瑁呮満瀹归噺)
+ * @param installedCapacityMax 鏈�澶х粍涓插閲�(瑁呮満瀹归噺)
+ * @param gridType 骞剁綉鐘舵�� (鍏ㄩ儴 锛�"";FULL_GRID 锛� 骞剁綉;OFFLINE 锛氱缃�)
+ * @param powerStationStatus 鐢电珯鐘舵�� (鍏ㄩ儴 锛�"";1 锛� 姝e父;2 锛� 绂荤嚎; 3 锛� 寰呮帴鍏�;4 锛� 鏁呴殰)
+ * @param pageNo 椤电爜
+ * @param isClear 鏄惁娓呴櫎鏁版嵁
*/
- private void requestPermissions(PermissionsResultCallback permissionsResultCallback) {
- mPermissionsResultCallback = permissionsResultCallback;
- //Manifest.permission.CAMERA,
- String[] s = new String[]{
- Manifest.permission.ACCESS_FINE_LOCATION
- };
- String[] ary = PermissionUtils.checkPermission(_mActivity, s);
- if (ary.length > 0) {
- requestPermissions(ary, PermissionUtils.STATUS_SUCCESS);
- } else {
- if (mPermissionsResultCallback != null) {
- mPermissionsResultCallback.succeed();
+ private void loadNextPageHouseList(boolean isRefreshing,
+ String key,
+ String keyValue,
+ String installedCapacityMin,
+ String installedCapacityMax,
+ String gridType,
+ String powerStationStatus,
+ long pageNo,
+ boolean isClear) {
+ if (isClear) {
+ clearData();
+ }
+ //绗竴椤佃鍙栨暟鎹己鍒惰鍙�
+ if (pageNo > 1 && currentHouseListPage > currentHouseListTotal) {
+ --currentHouseListPage;
+ //褰撳墠椤典笉鑳藉ぇ浜庢�婚〉鏁�
+ return;
+ }
+ isHouseLoadingMore = true;//鏍囪璇诲彇鐘舵��
+ if (isRefreshing) {
+ showLoading();
+ }
+
+ //鑾峰彇浣忓畢(鐢电珯)ID鍒楄〃
+ HdlResidenceLogic.getInstance().getResidenceIdList(
+ key,
+ keyValue,
+ installedCapacityMin,
+ installedCapacityMax,
+ gridType,
+ powerStationStatus,
+ pageNo, pageSize, new CloudCallBeak<HdlResidenceLogic.HouseBeanClass>() {
+ @Override
+ public void onSuccess(HdlResidenceLogic.HouseBeanClass houseBeanClass) {
+ HdlThreadLogic.runMainThread(new Runnable() {
+ @Override
+ public void run() {
+ if (isRefreshing) {
+ hideLoading();
+ }
+ isHouseLoadingMore = false;
+ if (houseBeanClass != null) {
+ currentHouseListTotal = (int) houseBeanClass.getTotalPage();
+ currentHouseListPage = (int) houseBeanClass.getPageNo();
+ //鏇存柊缂撳瓨
+ HdlResidenceLogic.getInstance().setHouseIdList(houseBeanClass.getList());
+ if (houseInfoAdapter != null) {
+ initData();
+ //鏇存柊UI
+ houseInfoAdapter.setList(houseListBeanIDList);
+ }
+ }
+ nullDataUpdateUi();
+ }
+ }, _mActivity, ShowErrorMode.YES);
+
+ }
+
+ @Override
+ public void onFailure(HDLException e) {
+ HdlThreadLogic.runMainThread(new Runnable() {
+ @Override
+ public void run() {
+ if (currentHouseListPage > 1) {
+ --currentHouseListPage;
+ }
+ isHouseLoadingMore = false;
+ if (isRefreshing) {
+ hideLoading();
+ }
+
+ }
+ }, _mActivity, ShowErrorMode.YES);
+ }
+ });
+ }
+
+ /**
+ * 鍒锋柊UI锛堣澶囷級
+ *
+ * @param isRefreshing 琛ㄧず鏄笅鎷夊埛鏂扮殑
+ * @param pageNo 椤电爜
+ * @param isClear true琛ㄧず娓呯┖缂撳瓨
+ */
+ private void loadNextPageDeviceList(boolean isRefreshing, long pageNo, boolean isClear) {
+ if (isClear) {
+ clearData();
+ }
+ //绗竴椤佃鍙栨暟鎹己鍒惰鍙�
+ if (pageNo > 1 && currentDeviceListPage > currentDeviceListTotal) {
+ --currentDeviceListPage;
+ //褰撳墠椤典笉鑳藉ぇ浜庢�婚〉鏁�
+ return;
+ }
+ isDeviceLoadingMore = true;//鏍囪璇诲彇鐘舵��
+ if (isRefreshing) {
+ showLoading();
+ }
+ //鑾峰彇浣忓畢(鐢电珯)ID鍒楄〃
+ HdlDeviceLogic.getInstance().getPowerStationDeviceList("", pageNo, pageSize, new CloudCallBeak<PageNumberObject<DeviceBean>>() {
+ @Override
+ public void onSuccess(PageNumberObject<DeviceBean> pageNumberObject) {
+ HdlThreadLogic.runMainThread(new Runnable() {
+ @Override
+ public void run() {
+ if (isRefreshing) {
+ hideLoading();
+ }
+ isDeviceLoadingMore = false;
+ if (pageNumberObject != null) {
+ currentDeviceListTotal = (int) pageNumberObject.getTotalPage();
+ currentDeviceListPage = (int) pageNumberObject.getPageNo();
+ //鏇存柊缂撳瓨
+ HdlDeviceLogic.getInstance().setListDevice(pageNumberObject.getList());
+ //鏇存柊缂撳瓨
+ if (deviceInfoAdapter != null) {
+ initData();
+ //鏇存柊UI
+ deviceInfoAdapter.setList(deviceInfoList);
+ }
+ }
+ nullDataUpdateUi();
+ }
+ }, _mActivity, ShowErrorMode.YES);
+
}
+
+ @Override
+ public void onFailure(HDLException e) {
+ HdlThreadLogic.runMainThread(new Runnable() {
+ @Override
+ public void run() {
+ if (currentDeviceListPage > 1) {
+ --currentDeviceListPage;
+ }
+ isDeviceLoadingMore = false;
+ if (isRefreshing) {
+ hideLoading();
+ }
+ }
+ }, _mActivity, ShowErrorMode.YES);
+ }
+ });
+ }
+
+
+ /**
+ * 娓呯┖缂撳瓨鏁版嵁
+ */
+ private void clearData() {
+ if (isClickPowerStationLabel) {
+ currentHouseListPage = 0;// 閲嶇疆褰撳墠鐢电珯鍒楄〃椤电爜
+ currentHouseListTotal = 0;// 閲嶇疆褰撳墠鐢电珯鍒楄〃鎬婚〉鐮�
+ if (houseListBeanIDList != null) {
+ houseListBeanIDList.clear(); //娓呯┖涓存椂缂撳瓨鍒楄〃
+ }
+ HdlResidenceLogic.getInstance().clearHouseList(); //琛ㄧず寮哄埗娓呯┖鎵�鏈夌紦瀛樹俊鎭�
+ } else {
+ currentDeviceListPage = 0; // 閲嶇疆褰撳墠璁惧鍒楄〃椤电爜
+ currentDeviceListTotal = 0; // 閲嶇疆璁惧鍒楄〃鎬婚〉鐮�
+ if (deviceInfoList != null) {
+ deviceInfoList.clear();//娓呯┖涓存椂缂撳瓨鍒楄〃
+ }
+ HdlDeviceLogic.getInstance().clearDeviceList(); //琛ㄧず寮哄埗娓呯┖鎵�鏈夌紦瀛樹俊鎭�
}
}
+
+
+ /**
+ * 娌℃湁鐢电珯鍒楄〃鐨勬牱寮�
+ */
+ private void nullDataUpdateUi() {
+ boolean is_data;
+ String tipText = "";
+ if (isClickPowerStationLabel) {
+ is_data = houseListBeanIDList != null && houseListBeanIDList.size() > 0;
+ tipText = getString(R.string.my_power_station_data_null);
+ } else {
+ is_data = deviceInfoList != null && deviceInfoList.size() > 0;
+ tipText = getString(R.string.no_equipment);
+ }
+ HdlCommonLogic.getInstance().nullDataUpdateUi(_mActivity, viewBinding.nullDataIc.getRoot(), viewBinding.nullDataIc.nullDataGifAnimationIv, viewBinding.nullDataIc.nullDataTv, tipText, is_data);
+ }
+
+ /**
+ * 鍒犻櫎鐢电珯,閫嗗彉鍣�
+ * (寮�濮嬪垹闄ょ數绔欙紝鍚屾椂锛屽悜閫嗗彉鍣ㄥ彂閫佸垵濮嬪寲閫嗗彉鍣ㄦ寚浠�,鏃犻』澶勭悊缁撴灉)
+ *
+ * @param list 璁惧鍒楄〃
+ */
+ private void initializeInverter(List<GatewayBean> list) {
+ if (list == null || list.size() == 0) {
+ return;
+ }
+ for (int i = 0; i < list.size(); i++) {
+ GatewayBean gatewayBean = list.get(i);
+ HdlDeviceLogic.getInstance().initializeGateway(gatewayBean.getDevice_mac(), new LinkCallBack<Boolean>() {
+ @Override
+ public void onSuccess(Boolean obj) {
+// HdlLogLogic.print("鍒濆鍖栭�嗗彉鍣ㄦ垚鍔�-->mac:" + cloudInverterDeviceBean.getOsn(),true);
+ }
+
+ @Override
+ public void onError(HDLLinkException e) {
+// HdlLogLogic.print("鍒濆鍖栭�嗗彉鍣ㄥけ璐�-->mac:" + cloudInverterDeviceBean.getOsn(),true);
+ }
+ });
+ }
+ }
+
+ /**
+ * 鍒犻櫎鐢电珯
+ *
+ * @param homeId 鐢电珯id
+ * @param list 閫嗗彉鍣ㄥ垪琛�
+ */
+ private void deleteResidence(String homeId, List<GatewayBean> list) {
+
+ //鍒犻櫎浣忓畢
+ HdlResidenceLogic.getInstance().delResidence(homeId, new CloudCallBeak<Boolean>() {
+ @Override
+ public void onSuccess(Boolean obj) {
+ hideLoading();
+ //鍙戣捣鍒濆鍖栨寚浠ょ粰閫嗗彉鍣�;
+ initializeInverter(list);
+ HdlResidenceLogic.getInstance().delHouseId(homeId);
+ initData();//鍒濆鍖栫紦瀛樻暟鎹�
+ houseInfoAdapter.setList(houseListBeanIDList);//閲嶆柊鍒锋柊鍒楄〃
+ nullDataUpdateUi();//妫�娴嬫暟鎹槸鍚︿负绌�
+ }
+
+ @Override
+ public void onFailure(HDLException e) {
+ hideLoading();
+
+ HdlThreadLogic.toast(_mActivity, e);
+ }
+ });
+ }
+
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
@@ -161,12 +761,17 @@
if (mPermissionsResultCallback != null) {
mPermissionsResultCallback.succeed();
}
+ } else {
+ if (mPermissionsResultCallback != null) {
+ mPermissionsResultCallback.failing();
+ }
}
}
}
}
+
private PermissionsResultCallback mPermissionsResultCallback;
@@ -178,4 +783,5 @@
}
+
}
--
Gitblit v1.8.0