| | |
| | | import androidx.recyclerview.widget.RecyclerView; |
| | | import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; |
| | | |
| | | import android.content.Context; |
| | | import android.os.Bundle; |
| | | import android.text.Editable; |
| | | import android.text.TextUtils; |
| | | import android.text.TextWatcher; |
| | | import android.view.View; |
| | | import android.view.inputmethod.InputMethodManager; |
| | | |
| | | import com.google.gson.Gson; |
| | | import com.google.gson.reflect.TypeToken; |
| | |
| | | import com.hdl.photovoltaic.R; |
| | | import com.hdl.photovoltaic.base.CustomBaseActivity; |
| | | import com.hdl.photovoltaic.bean.PageNumberObject; |
| | | import com.hdl.photovoltaic.config.UserConfigManage; |
| | | import com.hdl.photovoltaic.databinding.ActivityDeviceSearchBinding; |
| | | import com.hdl.photovoltaic.enums.ShowErrorMode; |
| | | import com.hdl.photovoltaic.listener.CloudCallBeak; |
| | | import com.hdl.photovoltaic.other.HdlCommonLogic; |
| | | import com.hdl.photovoltaic.other.HdlDeviceLogic; |
| | | import com.hdl.photovoltaic.other.HdlFileLogic; |
| | | import com.hdl.photovoltaic.other.HdlLogLogic; |
| | | 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.SearchDeviceAdapter; |
| | | import com.hdl.photovoltaic.ui.adapter.SearchHistoryAdapter; |
| | | import com.hdl.photovoltaic.ui.bean.DeviceBean; |
| | | import com.hdl.photovoltaic.ui.bean.CloudInverterDeviceBean; |
| | | import com.hdl.photovoltaic.uni.HDLUniMP; |
| | | import com.hdl.photovoltaic.utils.KeyboardStateObserverUtils; |
| | | import com.hdl.photovoltaic.utils.URLEncodingUtils; |
| | | import com.hdl.sdk.link.core.bean.gateway.GatewayBean; |
| | | import com.hdl.sdk.link.core.config.HDLLinkConfig; |
| | | import com.hdl.sdk.link.gateway.HDLLinkLocalGateway; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Collections; |
| | |
| | | SearchDeviceAdapter searchDeviceAdapter;//设备适配器 |
| | | SearchHistoryAdapter searchHistoryAdapter;//历史记录适配器 |
| | | |
| | | private List<DeviceBean> deviceList = new ArrayList<>(); |
| | | private List<CloudInverterDeviceBean> deviceList = new ArrayList<>(); |
| | | |
| | | private int currentHouseListPage = 0; // 当前电站列表页码 |
| | | private int currentHouseListTotal = 0; // 电站列表总页码 |
| | |
| | | @Override |
| | | public void onBindView(Bundle savedInstanceState) { |
| | | setStatusBarTranslucent(); |
| | | getWindow().setNavigationBarColor(getColor(R.color.text_FF000000)); |
| | | //历史记录文件夹创建 |
| | | HdlFileLogic.getInstance().createFileDir(HdlFileLogic.getInstance().getCurrentUserRootPath()); |
| | | //初始化数据 |
| | |
| | | HdlThreadLogic.toast(_mActivity, R.string.search_content_null); |
| | | return; |
| | | } |
| | | viewBinding.powerStationSearchEt.clearFocus(); |
| | | hideSoftInputFromWindow(); |
| | | viewBinding.historyListParent.setVisibility(View.GONE); |
| | | viewBinding.listParent.setVisibility(View.VISIBLE); |
| | | addSearchTextToList(); |
| | |
| | | viewBinding.powerStationSearchEt.setText(""); |
| | | viewBinding.historyListParent.setVisibility(View.VISIBLE); |
| | | viewBinding.listParent.setVisibility(View.GONE); |
| | | viewBinding.deviceNullDataIc.getRoot().setVisibility(View.GONE); |
| | | searchHistoryAdapter.setList(searchHistoryTitleList); |
| | | clearData(); |
| | | viewBinding.powerStationSearchEt.requestFocus(); |
| | | showSoftInput(); |
| | | } |
| | | }); |
| | | //删除 |
| | | viewBinding.powerStationDelIv.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | viewBinding.powerStationSearchEt.clearFocus(); |
| | | hideSoftInputFromWindow(); |
| | | searchHistoryTitleList = new ArrayList<>(); |
| | | searchHistoryAdapter.setList(searchHistoryTitleList); |
| | | viewBinding.deviceNullDataIc.getRoot().setVisibility(View.GONE); |
| | | HdlFileLogic.getInstance().deleteFile(getHistoryFileNamePath()); |
| | | |
| | | } |
| | | }); |
| | | //历史记录点击事件 |
| | |
| | | @Override |
| | | public void onClick(int position, String title) { |
| | | viewBinding.powerStationSearchEt.setText(title); |
| | | //搜索关键字 |
| | | currSearchText = viewBinding.powerStationSearchEt.getText().toString().replace(" ", ""); |
| | | if (TextUtils.isEmpty(currSearchText)) { |
| | | HdlThreadLogic.toast(_mActivity, R.string.search_content_null); |
| | | return; |
| | | } |
| | | viewBinding.powerStationSearchEt.clearFocus(); |
| | | hideSoftInputFromWindow(); |
| | | viewBinding.historyListParent.setVisibility(View.GONE); |
| | | viewBinding.listParent.setVisibility(View.VISIBLE); |
| | | addSearchTextToList(); |
| | | loadNextPageHouseList(true, 1, true); |
| | | } |
| | | }); |
| | | //电站点击是事件 |
| | | //设备点击是事件 |
| | | searchDeviceAdapter.setOnclickListener(new DeviceInfoAdapter.OnClickListener() { |
| | | @Override |
| | | public void onClick(int position, DeviceBean deviceBean) { |
| | | public void onClick(int position, CloudInverterDeviceBean deviceBean) { |
| | | if (deviceBean.getDeviceStatus() == 4) { |
| | | HdlThreadLogic.toast(_mActivity, R.string.device_off); |
| | | return; |
| | | } |
| | | //配置本地通信的信息 |
| | | HDLLinkConfig.getInstance().setHomeId(deviceBean.getHomeId()); |
| | | HDLLinkConfig.getInstance().setLocalSecret(deviceBean.getLocalSecret()); |
| | | List<CloudInverterDeviceBean> newList = new ArrayList<>(); |
| | | newList.add(deviceBean); |
| | | //目的是为了获取拿到网关ID,mqtt通讯秘钥等信息,拿到后缓存到本地逆变器列表里面,发送数据数据时自动去缓存列表里面去查找; |
| | | HdlDeviceLogic.getInstance().setDeviceRemoteInfo(newList, deviceBean.getHomeId(), new CloudCallBeak<List<GatewayBean>>() { |
| | | @Override |
| | | public void onSuccess(List<GatewayBean> obj) { |
| | | GatewayBean newGatewayBean = HDLLinkLocalGateway.getInstance().getLocalGateway(deviceBean.getOsn()); |
| | | String jsonEncryption = URLEncodingUtils.encodeURIComponent(new Gson().toJson(newGatewayBean)); |
| | | String path = HDLUniMP.UNI_EVENT_OPEN_DEVICE_DETAILS + "?inverterInfo=" + jsonEncryption; |
| | | HdlUniLogic.getInstance().openUniMP(path, null); |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | |
| | | private void initView() { |
| | | viewBinding.historyListParent.setVisibility(View.VISIBLE); |
| | |
| | | searchDeviceAdapter = new SearchDeviceAdapter(_mActivity); |
| | | viewBinding.listRcv.setLayoutManager(new LinearLayoutManager(_mActivity)); |
| | | viewBinding.listRcv.setAdapter(searchDeviceAdapter); |
| | | viewBinding.powerStationSearchEt.post(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | viewBinding.powerStationSearchEt.requestFocus(); |
| | | } |
| | | }); |
| | | |
| | | //在界面中使用 |
| | | KeyboardStateObserverUtils.getKeyboardStateObserver(_mActivity).setKeyboardVisibilityListener(new KeyboardStateObserverUtils.OnKeyboardVisibilityListener() { |
| | | @Override |
| | | public void onKeyboardShow(int h) { |
| | | //Toast.makeText(MainActivity.this,"键盘弹出",Toast.LENGTH_SHORT).show(); |
| | | // viewBinding.powerStationSearchEt.requestFocus(); |
| | | |
| | | } |
| | | |
| | | @Override |
| | | |
| | | public void onKeyboardHide(int h) { |
| | | viewBinding.powerStationSearchEt.clearFocus(); |
| | | } |
| | | |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 显示软键盘 |
| | | */ |
| | | public void showSoftInput() { |
| | | InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); |
| | | inputMethodManager.showSoftInput(viewBinding.powerStationSearchEt, 0); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 隐藏软键盘 |
| | | */ |
| | | public void hideSoftInputFromWindow() { |
| | | InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); |
| | | inputMethodManager.hideSoftInputFromWindow(viewBinding.getRoot().getWindowToken(), 0); |
| | | } |
| | | |
| | | /** |
| | | * 输入电站名称进行过滤 |
| | |
| | | } |
| | | |
| | | //获取云端上设备列表 |
| | | HdlDeviceLogic.getInstance().getPowerStationDeviceList(currSearchText, pageNo, 20, new CloudCallBeak<PageNumberObject<DeviceBean>>() { |
| | | HdlDeviceLogic.getInstance().getPowerStationDeviceList(currSearchText, pageNo, 20, new CloudCallBeak<PageNumberObject<CloudInverterDeviceBean>>() { |
| | | @Override |
| | | public void onSuccess(PageNumberObject<DeviceBean> deviceClass) { |
| | | public void onSuccess(PageNumberObject<CloudInverterDeviceBean> deviceClass) { |
| | | HdlThreadLogic.runMainThread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | |
| | | //更新UI |
| | | searchDeviceAdapter.setList(deviceList); |
| | | } |
| | | nullDataUpdateUi(); |
| | | } |
| | | } |
| | | }, _mActivity, ShowErrorMode.YES); |
| | |
| | | } |
| | | } |
| | | |
| | | public void setDeviceList(List<DeviceBean> list) { |
| | | public void setDeviceList(List<CloudInverterDeviceBean> list) { |
| | | if (list == null || list.size() == 0) { |
| | | return; |
| | | } |
| | |
| | | * |
| | | * @param deviceBean -设备对象 |
| | | */ |
| | | public void setSingleDevice(DeviceBean deviceBean) { |
| | | public void setSingleDevice(CloudInverterDeviceBean deviceBean) { |
| | | try { |
| | | if (deviceBean == null) { |
| | | return; |
| | | } |
| | | boolean if_boolean = false; |
| | | for (int i = 0; i < deviceList.size(); i++) { |
| | | if (deviceList.get(i).getHomeId().equals(deviceBean.getHomeId())) { |
| | | if (deviceList.get(i).getOsn().equals(deviceBean.getOsn())) { |
| | | //存在替换 |
| | | deviceList.remove(i); |
| | | deviceList.add(i, deviceBean); |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 没有设备列表的样式 |
| | | */ |
| | | private void nullDataUpdateUi() { |
| | | boolean is_data = deviceList != null && deviceList.size() > 0; |
| | | HdlCommonLogic.getInstance().nullDataUpdateUi(_mActivity, viewBinding.deviceNullDataIc.getRoot(), viewBinding.deviceNullDataIc.nullDataGifAnimationIv, viewBinding.deviceNullDataIc.nullDataTv, getString(R.string.no_equipment), is_data); |
| | | } |
| | | |
| | | /** |
| | | * 添加历史记录 |
| | | */ |
| | |
| | | searchHistoryTitleList.remove(searchHistoryTitleList.get(i)); |
| | | } |
| | | } |
| | | searchHistoryTitleList.add(currSearchText); |
| | | // 倒序排列数据(搜索最后排在前面) |
| | | Collections.reverse(searchHistoryTitleList); |
| | | if (searchHistoryTitleList.size() > 10) { |
| | | int maxValue = 10; |
| | | searchHistoryTitleList.add(0, currSearchText); |
| | | if (searchHistoryTitleList.size() > maxValue) { |
| | | //历史记录不能超出10 |
| | | searchHistoryTitleList.remove(searchHistoryTitleList.get(11)); |
| | | searchHistoryTitleList.remove(searchHistoryTitleList.get(maxValue)); |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |