app/src/main/java/com/hdl/photovoltaic/bean/PageNumberObject.java
New file @@ -0,0 +1,61 @@ package com.hdl.photovoltaic.bean; import com.hdl.photovoltaic.ui.bean.MessageBean; import java.io.Serializable; import java.util.ArrayList; import java.util.List; public class PageNumberObject<T> implements Serializable { //总条数 private long totalCount; //总页数 private long totalPage; //当前页 private long pageNo; //页数 private long pageSize; //消息列表 private List<T> list; public long getTotalCount() { return totalCount; } public void setTotalCount(long totalCount) { this.totalCount = totalCount; } public long getTotalPage() { return totalPage; } public void setTotalPage(long totalPage) { this.totalPage = totalPage; } public long getPageNo() { return pageNo; } public void setPageNo(long pageNo) { this.pageNo = pageNo; } public long getPageSize() { return pageSize; } public void setPageSize(long pageSize) { this.pageSize = pageSize; } public List<T> getList() { return list == null ? new ArrayList<>() : list; } public void setList(List<T> list) { this.list = list; } } app/src/main/java/com/hdl/photovoltaic/enums/GridType.java
New file @@ -0,0 +1,8 @@ package com.hdl.photovoltaic.enums; public @interface GridType { String All = "";//全部 String FULL_GRID = "FULL_GRID";//并网 String OFFLINE = "OFFLINE";//离网 } app/src/main/java/com/hdl/photovoltaic/enums/PowerStationStatus.java
New file @@ -0,0 +1,10 @@ package com.hdl.photovoltaic.enums; public @interface PowerStationStatus { String All = "";//全部 String normal = "1";//正常(运行) String off = "2";//离线 String connecting = "3";//连接中(待接入) String malfunction = "4";//故障 String off_malfunction = "4";//离线有故障 } app/src/main/java/com/hdl/photovoltaic/enums/SortType.java
New file @@ -0,0 +1,45 @@ package com.hdl.photovoltaic.enums; /** * 排序类型 */ public @interface SortType { String homeName = "homeName";// /** * 电站名称排序 */ String homeNameSort = "homeNameSort";//电站名称排序 /** * 发电功率排序 */ String powerSort = "powerSort";//发电功率排序 /** * 今日发电量排序 */ String todayElectricitySort = "todayElectricitySort";//今日发电量排序 /** * 当月发电量 */ String monthElectricitySort = "monthElectricitySort";//当月发电量 /** * 创建时间排序 */ String createTimeSort = "createTimeSort";//创建时间排序 /** * installedCapacityMin 最小组串容量(装机容量) */ String installedCapacityMin = "installedCapacityMin";//installedCapacityMin 最小组串容量(装机容量) /** * 大组串容量(装机容量) */ String installedCapacityMax = "installedCapacityMax";//大组串容量(装机容量) /** * 并网状态 */ String gridType = "gridType";//并网状态 /** * 电站状态 */ String powerStationStatus = "powerStationStatus";//电站状态 } app/src/main/java/com/hdl/photovoltaic/enums/SortValue.java
New file @@ -0,0 +1,7 @@ package com.hdl.photovoltaic.enums; public @interface SortValue { String all = "";//全部 String descending = "descending";//降序 String ascending = "ascending";//升序 } app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java
@@ -121,9 +121,17 @@ public static final String B_POST_GET_USERINFO = "/basis-footstone/mgmt/user/oauth/getUserInfo"; //退出登录 public static final String POST_GET_IMAGE_LOGOUT = "/basis-footstone/mgmt/user/oauth/logout"; //endregion //获取设备列表(安装商) public static final String POST_deviceList = "/home-wisdom/app/powerStation/deviceList"; //电站状态概览(安装商) public static final String POST_statusOverview = "/home-wisdom/app/powerStation/statusOverview"; //endregion app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
@@ -9,6 +9,7 @@ import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.photovoltaic.bean.PageNumberObject; import com.hdl.photovoltaic.config.AppConfigManage; import com.hdl.photovoltaic.config.UserConfigManage; import com.hdl.photovoltaic.internet.HttpClient; @@ -19,8 +20,11 @@ import com.hdl.photovoltaic.listener.LinkCallBack; import com.hdl.photovoltaic.ui.bean.CloudInverterChildDeviceBean; import com.hdl.photovoltaic.ui.bean.CloudInverterDeviceBean; import com.hdl.photovoltaic.ui.bean.DeviceBean; import com.hdl.photovoltaic.ui.bean.DeviceRemoteInfo; import com.hdl.photovoltaic.ui.bean.DeviceTimeBean; import com.hdl.photovoltaic.ui.bean.HouseInfoBean; import com.hdl.photovoltaic.ui.bean.MessageBean; import com.hdl.photovoltaic.ui.bean.OidBean; import com.hdl.sdk.link.HDLLinkLocalSdk; import com.hdl.sdk.link.common.config.TopicConstant; @@ -71,7 +75,23 @@ public static final String kWh = "kW.h"; public static final String kW = "kW"; private List<DeviceBean> mListDevice = new ArrayList<>(); public void clearDeviceList() { if (mListDevice == null) { return; } if (mListDevice.size() > 0) { mListDevice.clear(); } } public List<DeviceBean> getDeviceList() { if (mListDevice == null) { return new ArrayList<>(); } return mListDevice; } /** * 获取当前住宅的逆变器列表(包括从的逆变器) @@ -150,6 +170,98 @@ } } /** * 获取设备列表(安装商) * * @param searchTxt 搜索内容 * @param pageNo 页码 * @param pageSize 页数 */ public void getPowerStationDeviceList(String searchTxt, long pageNo, long pageSize, CloudCallBeak<PageNumberObject<DeviceBean>> cloudCallBeak) { String requestUrl = HttpApi.POST_deviceList; JsonObject json = new JsonObject(); if (!TextUtils.isEmpty(searchTxt)) { json.addProperty("searchTxt", searchTxt); } json.addProperty("pageNo", pageNo);//页码 json.addProperty("pageSize", pageSize);//页数 // json.addProperty("zoneType", zoneType);//区域 HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() { @Override public void onSuccess(String jsonStr) { if (TextUtils.isEmpty(jsonStr)) { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(new PageNumberObject<>()); } } Gson gson = new Gson(); Type type = new TypeToken<PageNumberObject<DeviceBean>>() { }.getType(); PageNumberObject<DeviceBean> pageNumberObject = gson.fromJson(jsonStr, type); if (cloudCallBeak != null) { cloudCallBeak.onSuccess(pageNumberObject); } } @Override public void onFailure(HDLException e) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } } }); } /** * 添加【设备列表】到本地缓存 * * @param list -设备列表 */ public void setListDevice(List<DeviceBean> list) { try { if (list == null || list.size() == 0) { return; } if (this.mListDevice.size() == 0) { this.mListDevice.addAll(list); return; } for (int i = 0; i < list.size(); i++) { this.setSingleDevice(list.get(i)); } } catch (Exception ignored) { } } /** * 添加设备到列表里面 * * @param deviceBean -设备对象 */ public void setSingleDevice(DeviceBean deviceBean) { try { if (deviceBean == null) { return; } boolean if_boolean = false; for (int i = 0; i < mListDevice.size(); i++) { if (mListDevice.get(i).getOsn().equals(deviceBean.getOsn())) { //存在替换 mListDevice.remove(i); mListDevice.add(i, deviceBean); if_boolean = true; break; } } if (!if_boolean) { //没有添加 this.mListDevice.add(deviceBean); } } catch (Exception e) { String mes = e.getMessage(); HdlLogLogic.print("--->" + mes); } } /** * 逆变器上传数据到云端(包括:sid,oid) app/src/main/java/com/hdl/photovoltaic/other/HdlResidenceLogic.java
@@ -16,6 +16,7 @@ import com.hdl.photovoltaic.listener.BaseSuccessFailureCallBeak; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.ui.bean.CloudInverterDeviceBean; import com.hdl.photovoltaic.ui.bean.DeviceBean; import com.hdl.photovoltaic.ui.bean.HouseInfoBean; import com.hdl.photovoltaic.ui.bean.HouseIdBean; import com.hdl.photovoltaic.ui.bean.MessageBean; @@ -74,21 +75,68 @@ this.houseInfoList = houseInfoList; } public void clearHouseList() { if (houseInfoList == null) { return; } if (houseInfoList.size() > 0) { houseInfoList.clear(); } } /** * 获取缓存住宅ID列表 * * @return 住宅ID列表 */ public List<HouseIdBean> getHouseIdList() { return houseIdList; return mHouseIdList; } public void setHouseIdList(List<HouseIdBean> houseIdList) { if (houseIdList == null) { houseIdList = new ArrayList<>(); public void setHouseIdList(List<HouseIdBean> list) { if (list == null || list.size() == 0) { return; } this.houseIdList = houseIdList; if (this.mHouseIdList.size() == 0) { this.mHouseIdList.addAll(list); return; } for (int i = 0; i < list.size(); i++) { this.setSingleHouseId(list.get(i)); } } /** * 添加电站Id到列表里面 * * @param houseIdBean -电站Id对象 */ public void setSingleHouseId(HouseIdBean houseIdBean) { try { if (houseIdBean == null) { return; } boolean if_boolean = false; for (int i = 0; i < mHouseIdList.size(); i++) { if (mHouseIdList.get(i).getHomeId().equals(houseIdBean.getHomeId())) { //存在替换 mHouseIdList.remove(i); mHouseIdList.add(i, houseIdBean); if_boolean = true; break; } } if (!if_boolean) { //没有添加 this.mHouseIdList.add(houseIdBean); } } catch (Exception e) { String mes = e.getMessage(); HdlLogLogic.print("--->" + mes); } } /** * 删除电站 @@ -99,9 +147,9 @@ if (TextUtils.isEmpty(houseId)) { return; } for (int i = 0; i < houseIdList.size(); i++) { if (houseIdList.get(i).getHomeId().equals(houseId)) { houseIdList.remove(i); for (int i = 0; i < mHouseIdList.size(); i++) { if (mHouseIdList.get(i).getHomeId().equals(houseId)) { mHouseIdList.remove(i); break; } } @@ -117,8 +165,8 @@ return; } int index = -1; for (int i = 0; i < houseIdList.size(); i++) { if (houseIdList.get(i).getHomeId().equals(houseId)) { for (int i = 0; i < mHouseIdList.size(); i++) { if (mHouseIdList.get(i).getHomeId().equals(houseId)) { index = i; break; } @@ -128,12 +176,12 @@ } //index==0表示只有一个元素或者在首位,不需要移动位置 if (index > 0) { Collections.swap(houseIdList, index - 1, index); Collections.swap(mHouseIdList, index - 1, index); } } //住宅ID列表 private List<HouseIdBean> houseIdList = new ArrayList<>(); private List<HouseIdBean> mHouseIdList = new ArrayList<>(); //住宅详情列表 private List<HouseInfoBean> houseInfoList = new ArrayList<>(); @@ -149,12 +197,12 @@ @Override public void onSuccess(List<HouseIdBean> houseListBeanIDList) { if (houseListBeanIDList != null && houseListBeanIDList.size() > 0) { houseIdList.clear(); houseIdList.addAll(houseListBeanIDList); mHouseIdList.clear(); mHouseIdList.addAll(houseListBeanIDList); //记录请求条数 AtomicInteger atomicInteger = new AtomicInteger(0); for (int i = 0; i < houseIdList.size(); i++) { HouseIdBean houseIdBean = houseIdList.get(i); for (int i = 0; i < mHouseIdList.size(); i++) { HouseIdBean houseIdBean = mHouseIdList.get(i); //获取住宅详情列表 getResidenceInfo(houseIdBean.getHomeId(), new CloudCallBeak<HouseInfoBean>() { @Override @@ -169,7 +217,7 @@ //添加到本地缓存 addHouseToLocalMemory(houseInfoBean); } if (atomicInteger.get() == houseIdList.size()) { if (atomicInteger.get() == mHouseIdList.size()) { //最后一条退出 if (cloudCallBeak != null) { cloudCallBeak.onSuccess(true); @@ -181,7 +229,7 @@ @Override public void onFailure(HDLException e) { atomicInteger.set(atomicInteger.get() + 1); if (atomicInteger.get() == houseIdList.size()) { if (atomicInteger.get() == mHouseIdList.size()) { //最后一条退出 if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); @@ -279,6 +327,56 @@ } }); } } @Override public void onFailure(HDLException exception) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(exception); } } }); } /** * 获取住宅(电站)ID列表 * * @param key 发电功率排序(powerSort); * 今日发电量排序(todayElectricitySort); * 创建时间排序(createTimeSort); * @param keyValue (descending:降序 * ascending:升序), * @param pageNo 页码 * @param pageSize 页数(一页多少数据) */ public void getResidenceIdList(String key, String keyValue, long pageNo, long pageSize, CloudCallBeak<HouseBeanClass> cloudCallBeak) { String requestUrl = HttpApi.POST_PowerStation_List; JsonObject json = new JsonObject(); if (!TextUtils.isEmpty(key) && !TextUtils.isEmpty(keyValue)) { json.addProperty(key, keyValue);//发电功率排序(descending:降序ascending:升序) } // json.addProperty("zoneType", "password");//区域 json.addProperty("pageNo", pageNo);//页码 json.addProperty("pageSize", pageSize);//页数 HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() { @Override public void onSuccess(String jsonStr) { if (TextUtils.isEmpty(jsonStr)) { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(new HouseBeanClass()); } return; } Gson gson = new Gson(); HouseBeanClass houseInfoBeanClass = gson.fromJson(jsonStr, HouseBeanClass.class); if (cloudCallBeak != null) { cloudCallBeak.onSuccess(houseInfoBeanClass); } } @@ -655,9 +753,9 @@ * @return 列表索引 */ public HouseIdBean getHouseId(String homeId) { for (int i = 0; i < houseIdList.size(); i++) { if (houseIdList.get(i).getHomeId().equals(homeId)) { return houseIdList.get(i); for (int i = 0; i < mHouseIdList.size(); i++) { if (mHouseIdList.get(i).getHomeId().equals(homeId)) { return mHouseIdList.get(i); } } return null; @@ -760,7 +858,7 @@ } static class HouseBeanClass { public static class HouseBeanClass { //总条数 private long totalCount; app/src/main/java/com/hdl/photovoltaic/ui/adapter/DeviceInfoAdapter.java
New file @@ -0,0 +1,112 @@ package com.hdl.photovoltaic.ui.adapter; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.ui.bean.DeviceBean; import com.hdl.photovoltaic.widget.SwipeLayout; import java.util.ArrayList; import java.util.List; public class DeviceInfoAdapter extends RecyclerView.Adapter<DeviceInfoAdapter.MyViewHolder> { List<DeviceBean> mList; Context mContext; OnClickListener mOnclickListener; public DeviceInfoAdapter(Context context) { this.mContext = context; } @NonNull @Override public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View contentItem = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_device_details, parent, false); return new MyViewHolder(contentItem); } @Override public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { DeviceBean deviceBean = this.mList.get(position); holder.itemView.setTag(position); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { if (mOnclickListener != null) { mOnclickListener.onClick((int) holder.item_parent_rl.getTag(), deviceBean); } } catch (Exception ignored) { } } }); } @Override public int getItemCount() { return this.mList == null ? 0 : this.mList.size(); } public void setOnclickListener(OnClickListener onClickListener) { this.mOnclickListener = onClickListener; } public void setList(List<DeviceBean> newData) { if (this.mList == null) { this.mList = new ArrayList<>(); } else { this.mList.clear(); } this.mList.addAll(newData); notifyDataSetChanged(); } /** * 一行布局容器 */ static class MyViewHolder extends RecyclerView.ViewHolder { public ImageView homeIconIv;//住宅图片 public TextView homeNameTv;//住宅名称 public TextView capacityTv;//装机容量 public TextView powerTv;//发电功率 public TextView stateTv;//电站状态(连接中,运行,离线,故障); public RelativeLayout item_parent_rl;//条目父容器 public ImageView move_home_iv;//移动电站位置 public ImageView del_home_iv;//删除电站 public SwipeLayout item_parent_swipeLayout;//父容器 public MyViewHolder(@NonNull View itemView) { super(itemView); homeIconIv = itemView.findViewById(R.id.device_details_image_iv); homeNameTv = itemView.findViewById(R.id.device_details_name_tv); capacityTv = itemView.findViewById(R.id.device_details_sn_tv); powerTv = itemView.findViewById(R.id.power_type_tv); stateTv = itemView.findViewById(R.id.fragment_house_list_line_state_tv); item_parent_rl = itemView.findViewById(R.id.item_parent_rl); move_home_iv = itemView.findViewById(R.id.move_home_iv); del_home_iv = itemView.findViewById(R.id.del_home_iv); item_parent_swipeLayout = itemView.findViewById(R.id.item_parent_swipeLayout); } } public interface OnClickListener { void onClick(int position, DeviceBean deviceBean); } } app/src/main/java/com/hdl/photovoltaic/ui/adapter/HouseInfoAdapter.java
@@ -24,6 +24,7 @@ import java.util.ArrayList; import java.util.List; public class HouseInfoAdapter extends RecyclerView.Adapter<HouseInfoAdapter.MyViewHolder> { private List<HouseIdBean> mList; @@ -202,9 +203,9 @@ public MyViewHolder(@NonNull View itemView) { super(itemView); homeIconIv = itemView.findViewById(R.id.plant_details_image_iv); homeNameTv = itemView.findViewById(R.id.plant_details_name_tv); capacityTv = itemView.findViewById(R.id.plant_details_capacity_tv); homeIconIv = itemView.findViewById(R.id.device_details_image_iv); homeNameTv = itemView.findViewById(R.id.device_details_name_tv); capacityTv = itemView.findViewById(R.id.device_details_sn_tv); powerTv = itemView.findViewById(R.id.power_type_tv); stateTv = itemView.findViewById(R.id.fragment_house_list_line_state_tv); item_parent_rl = itemView.findViewById(R.id.item_parent_rl); app/src/main/java/com/hdl/photovoltaic/ui/bean/CloudInverterDeviceBean.java
@@ -32,7 +32,7 @@ private String inv;//inv状态 private int deviceStatus;//1:待机,2:连接中,3:故障,4:运行,5:离线 private String addresses; private String addresses;//子网号/设备号 private List<DeviceAttributeBean> status; private String hwVersion;//软件版本号 app/src/main/java/com/hdl/photovoltaic/ui/bean/DeviceBean.java
New file @@ -0,0 +1,78 @@ package com.hdl.photovoltaic.ui.bean; import android.text.TextUtils; /** * 设备(账号云端上所有设备列表)实体对象 */ public class DeviceBean extends CloudInverterDeviceBean { private String homeId; private String homeName; private String deviceType;//设备类型(INV逆变器,BMS控制盒,BATTERY电池单元) private String outputActivePower;//逆变器输出有功功率 private String address;//详细地址 private HouseInfoBean.Location location;//电站地址 public String getHomeId() { return TextUtils.isEmpty(homeId) ? "" : homeId; } public void setHomeId(String homeId) { this.homeId = homeId; } public String getHomeName() { return TextUtils.isEmpty(homeName) ? "" : homeName; } public void setHomeName(String homeName) { this.homeName = homeName; } public String getOutputActivePower() { return TextUtils.isEmpty(outputActivePower) ? "" : outputActivePower; } public void setOutputActivePower(String outputActivePower) { this.outputActivePower = outputActivePower; } public String getAddress() { return TextUtils.isEmpty(address) ? "" : address; } public void setAddress(String address) { this.address = address; } public HouseInfoBean.Location getLocation() { return location; } public void setLocation(HouseInfoBean.Location location) { this.location = location; } public String getDeviceType() { return TextUtils.isEmpty(deviceType) ? "" : deviceType; } public void setDeviceType(String deviceType) { this.deviceType = deviceType; } /** * 拼住宅地址 * * @return 住宅地址 */ public String getHomeAddress() { if (this.location == null) { return this.address; } return this.location.getNationName() + this.location.getProvinceName() + this.location.getCityName() + this.address; } } app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java
@@ -1,25 +1,27 @@ package com.hdl.photovoltaic.ui.powerstation; import android.Manifest; import android.content.Context; import android.content.pm.PackageManager; import android.hardware.camera2.CameraManager; import android.os.Bundle; 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; @@ -28,7 +30,9 @@ 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; @@ -42,14 +46,32 @@ import java.util.List; /** * (住宅)电站列表-界面 * 电站和设备-界面 */ public class HouseListFragment extends CustomBaseFragment { 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; // 标记电站列表正在加载更多数据 private int currentDeviceListPage = 0; // 当前设备列表页码 private int currentDeviceListTotal = 0; // 设备列表总页码 private boolean isDeviceLoadingMore = false; // 标记设备列表正在加载更多数据 private boolean isClickPowerStationLabel = true;//(电站标签=true,设备标签=false) private String key = SortValue.all; private String value = SortValue.all; private long pageSize = 20;//页数 @Override @@ -60,7 +82,6 @@ @Override public void onBindView(Bundle savedInstanceState) { manager = (CameraManager) _mActivity.getSystemService(Context.CAMERA_SERVICE); initData(); //初始化 initView(); @@ -74,24 +95,32 @@ 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, 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); } }); @@ -103,12 +132,36 @@ } }); //设置下拉箭头颜色 //电站设置下拉箭头颜色 viewBinding.fragmentHouseSrl.setColorSchemeResources(R.color.text_FF245EC3); //电站下拉读取 viewBinding.fragmentHouseSrl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { downReadData(true); viewBinding.fragmentHouseSrl.setRefreshing(false); loadNextPageHouseList(true, 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, ++currentHouseListPage, false); } } } }); //进入电站详情,删除电站,移动电站位置 @@ -140,7 +193,7 @@ HdlResidenceLogic.getInstance().moveHouseId(houseIdBean.getHomeId()); initData();//初始化缓存数据 houseInfoAdapter.setList(houseListBeanIDList);//重新刷新列表 nullDataUpdateUi(houseListBeanIDList);//检测数据是否为空 nullDataUpdateUi();//检测数据是否为空 } @Override @@ -218,40 +271,83 @@ viewBinding.stationNameRl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { viewBinding.stationNameRl.setSelected(!v.isSelected()); viewBinding.stationNameIv.setSelected(viewBinding.stationNameRl.isSelected()); } }); //电站名称筛选 viewBinding.stationNameRl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { viewBinding.stationNameRl.setSelected(!v.isSelected()); viewBinding.stationNameIv.setSelected(viewBinding.stationNameRl.isSelected()); 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) { viewBinding.stationPowerRl.setSelected(!v.isSelected()); viewBinding.stationPowerIv.setSelected(viewBinding.stationPowerRl.isSelected()); 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) { viewBinding.stationDayRl.setSelected(!v.isSelected()); viewBinding.stationDayIv.setSelected(viewBinding.stationDayRl.isSelected()); 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) { viewBinding.stationMonthRl.setSelected(!v.isSelected()); viewBinding.stationMonthIv.setSelected(viewBinding.stationMonthRl.isSelected()); 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.fragmentDeviceSrl.setRefreshing(false); loadNextPageDeviceList(false, 1, true); } }); //设备上拉读取 viewBinding.fragmentDeviceSrlListRc.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 (!isDeviceLoadingMore) { // 滑动到了底部,执行相应的操作 HdlLogLogic.print("--->滑动到了底部"); loadNextPageDeviceList(false, ++currentDeviceListPage, false); } } } }); @@ -260,20 +356,30 @@ private void initView() { viewBinding.powerStationLabelParent.setVisibility(View.VISIBLE); viewBinding.deviceLabelParent.setVisibility(View.GONE); LinearLayoutManager linearLayout = new LinearLayoutManager(_mActivity); //电站标签 houseInfoAdapter = new HouseInfoAdapter(_mActivity); viewBinding.fragmentHouseSrlListRc.setLayoutManager(linearLayout); viewBinding.fragmentHouseSrlListRc.setLayoutManager(new LinearLayoutManager(_mActivity)); viewBinding.fragmentHouseSrlListRc.setAdapter(houseInfoAdapter); houseInfoAdapter.setList(this.houseListBeanIDList); this.nullDataUpdateUi(houseListBeanIDList); //设备标签 deviceInfoAdapter = new DeviceInfoAdapter(_mActivity); viewBinding.fragmentDeviceSrlListRc.setLayoutManager(new LinearLayoutManager(_mActivity)); viewBinding.fragmentDeviceSrlListRc.setAdapter(deviceInfoAdapter); this.nullDataUpdateUi(); } private void initData() { 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()); } } /** @@ -287,7 +393,7 @@ if (HDLUniMP.UNI_EVENT_REPLY_HOME_MODEL.equals(eventBus.getTopic())) { if (HDLUniMP.UNI_EVENT_REPLY_HOME_CREATION.equals(eventBus.getType())) { //uin创建电站成功后通知 downReadData(false); loadNextPageHouseList(false, 1, true); if (eventBus.getData() != null) { Gson gson = new Gson(); String json = eventBus.getData().toString(); @@ -326,7 +432,7 @@ if (MqttRecvClient.getInstance() != null) { MqttRecvClient.getInstance().removeAllTopic(); } downReadData(false); loadNextPageHouseList(false, 1, true); } else if (HDLUniMP.UNI_EVENT_REPLY_DEVICE_LIST.equals(eventBus.getType())) { //进去住宅详情uni读取逆变器列表成功后通知 @@ -341,41 +447,55 @@ //接收外部点击事件 if (eventBus.getType().equals(HomepageTitleTabSwitch.powerstation.toString())) { HdlLogLogic.print("正在点击【电站】"); initData();//初始化缓存数据 houseInfoAdapter.setList(houseListBeanIDList);//重新刷新列表 loadNextPageHouseList(true, 1, true); } } } /** * 刷新UI * 刷新UI(电站) * * @param isRefreshing 表示是下拉刷新的 */ private void downReadData(boolean isRefreshing) { private void loadNextPageHouseList(boolean isRefreshing, long pageNo, boolean isClear) { if (isClear) { clearData(); } //第一页读取数据强制读取 if (pageNo > 1 && currentHouseListPage > currentHouseListTotal) { --currentHouseListPage; //当前页不能大于总页数 return; } isHouseLoadingMore = true;//标记读取状态 if (isRefreshing) { showLoading(); } //获取住宅(电站)ID列表 HdlResidenceLogic.getInstance().getResidenceIdList("", "", new CloudCallBeak<List<HouseIdBean>>() { HdlResidenceLogic.getInstance().getResidenceIdList(key, value, pageNo, pageSize, new CloudCallBeak<HdlResidenceLogic.HouseBeanClass>() { @Override public void onSuccess(List<HouseIdBean> list) { public void onSuccess(HdlResidenceLogic.HouseBeanClass houseBeanClass) { HdlThreadLogic.runMainThread(new Runnable() { @Override public void run() { if (isRefreshing) { //关闭下拉刷新的圈圈 viewBinding.fragmentHouseSrl.setRefreshing(false); hideLoading(); } if (list != null && list.size() > 0) { isHouseLoadingMore = false; if (houseBeanClass != null) { currentHouseListTotal = (int) houseBeanClass.getTotalPage(); currentHouseListPage = (int) houseBeanClass.getPageNo(); //更新缓存 HdlResidenceLogic.getInstance().setHouseIdList(list); HdlResidenceLogic.getInstance().setHouseIdList(houseBeanClass.getList()); if (houseInfoAdapter != null) { initData(); //更新UI houseInfoAdapter.setList(houseListBeanIDList); } } nullDataUpdateUi(list); nullDataUpdateUi(); } }, _mActivity, ShowErrorMode.YES); @@ -386,9 +506,12 @@ HdlThreadLogic.runMainThread(new Runnable() { @Override public void run() { if (currentHouseListPage > 1) { --currentHouseListPage; } isHouseLoadingMore = false; if (isRefreshing) { //关闭下拉刷新的圈圈 viewBinding.fragmentHouseSrl.setRefreshing(false); hideLoading(); } } @@ -397,6 +520,166 @@ }); } /** * 刷新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; if (isClickPowerStationLabel) { is_data = houseListBeanIDList != null && houseListBeanIDList.size() > 0; } else { is_data = deviceInfoList != null && deviceInfoList.size() > 0; } HdlCommonLogic.getInstance().nullDataUpdateUi(_mActivity, viewBinding.nullDataIc.getRoot(), viewBinding.nullDataIc.nullDataGifAnimationIv, viewBinding.nullDataIc.nullDataTv, getString(R.string.my_power_station_data_null), 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); } }); } /** * 申请权限 @@ -446,69 +729,6 @@ void failing(); } /** * 没有电站列表的样式 */ private void nullDataUpdateUi(List<HouseIdBean> list) { HdlCommonLogic.getInstance().nullDataUpdateUi(_mActivity, viewBinding.nullDataIc.getRoot(), viewBinding.nullDataIc.nullDataGifAnimationIv, viewBinding.nullDataIc.nullDataTv, getString(R.string.my_power_station_data_null), list != null && list.size() > 0); } /** * 删除电站,逆变器 * (开始删除电站,同时,向逆变器发送初始化逆变器指令,无须处理结果) * * @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(houseListBeanIDList);//检测数据是否为空 } @Override public void onFailure(HDLException e) { hideLoading(); HdlThreadLogic.toast(_mActivity, e); } }); } app/src/main/res/drawable/device_image.png
app/src/main/res/layout/activity_my_power_station.xml
@@ -5,7 +5,6 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/bj" tools:context="com.hdl.photovoltaic.ui.MyPowerStationActivity"> <!--首页-Fragment--> app/src/main/res/layout/item_device_details.xml
New file @@ -0,0 +1,210 @@ <?xml version="1.0" encoding="utf-8"?> <com.hdl.photovoltaic.widget.SwipeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/item_parent_swipeLayout" android:layout_width="match_parent" android:layout_height="wrap_content"> <include android:id="@+id/swipe_layout_il" layout="@layout/swipe_right_layout" /> <RelativeLayout android:id="@+id/item_parent_rl" android:layout_width="match_parent" android:layout_height="164dp"> <RelativeLayout android:id="@+id/device_details_info_rl" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginStart="@dimen/dp_16" android:layout_marginTop="@dimen/dp_16" android:layout_marginEnd="@dimen/dp_16" android:background="@drawable/ffffff_13"> <ImageView android:id="@+id/device_details_image_iv" android:layout_width="44dp" android:layout_height="42dp" android:layout_marginStart="@dimen/dp_16" android:layout_marginTop="@dimen/dp_13" android:background="@drawable/device_image" android:scaleType="centerCrop" /> <TextView android:id="@+id/device_details_name_tv" android:layout_width="170dp" android:layout_height="@dimen/dp_19" android:layout_marginStart="@dimen/dp_11" android:layout_marginTop="@dimen/dp_15" android:layout_toEndOf="@+id/device_details_image_iv" android:ellipsize="end" android:gravity="center_vertical|start" android:singleLine="true" android:textColor="@color/text_90000000" android:textSize="@dimen/text_16" android:textStyle="bold" /> <TextView android:id="@+id/device_details_sn_tv" android:layout_width="wrap_content" android:layout_height="@dimen/dp_17" android:layout_below="@+id/device_details_name_tv" android:layout_alignStart="@+id/device_details_name_tv" android:layout_marginTop="@dimen/dp_3" android:gravity="center_vertical" android:textColor="@color/text_40000000" android:textSize="@dimen/text_12" /> <LinearLayout android:id="@+id/screening_condition_ll" android:layout_width="match_parent" android:layout_height="@dimen/dp_36" android:layout_below="@+id/device_details_image_iv" android:layout_marginStart="@dimen/dp_16" android:layout_marginTop="@dimen/dp_17" android:orientation="horizontal"> <LinearLayout android:id="@+id/power_ll" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:orientation="vertical"> <TextView android:id="@+id/power_value_tv" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="99" android:textColor="@color/text_90000000" android:textSize="@dimen/text_15" android:textStyle="bold" /> <TextView android:id="@+id/power_type_tv" android:layout_width="match_parent" android:layout_height="@dimen/dp_15" android:layout_marginTop="3dp" android:gravity="center" android:text="@string/generated_power" android:textColor="@color/text_40000000" android:textSize="@dimen/text_12" /> </LinearLayout> <LinearLayout android:id="@+id/day_ll" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:orientation="vertical"> <TextView android:id="@+id/day_value_tv" android:layout_width="match_parent" android:layout_height="@dimen/dp_18" android:gravity="center" android:text="99" android:textColor="@color/text_90000000" android:textSize="@dimen/text_15" android:textStyle="bold" /> <TextView android:id="@+id/day_type_tv" android:layout_width="match_parent" android:layout_height="@dimen/dp_15" android:layout_marginTop="3dp" android:gravity="center" android:text="@string/day_power_generation" android:textColor="@color/text_40000000" android:textSize="@dimen/text_12" /> </LinearLayout> <LinearLayout android:id="@+id/month_ll" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:orientation="vertical"> <TextView android:id="@+id/month_value_tv" android:layout_width="match_parent" android:layout_height="@dimen/dp_18" android:gravity="center" android:text="99" android:textColor="@color/text_90000000" android:textSize="@dimen/text_15" android:textStyle="bold" /> <TextView android:id="@+id/month_type_tv" android:layout_width="match_parent" android:layout_height="@dimen/dp_15" android:layout_marginTop="3dp" android:gravity="center" android:text="@string/month_power_generation" android:textColor="@color/text_40000000" android:textSize="@dimen/text_12" /> </LinearLayout> </LinearLayout> <View android:id="@+id/line" android:layout_width="match_parent" android:layout_height="1dp" android:layout_below="@+id/screening_condition_ll" android:layout_marginStart="@dimen/dp_17" android:layout_marginTop="@dimen/dp_8" android:layout_marginEnd="@dimen/dp_16" android:background="@color/text_E1E1E1" /> <ImageView android:id="@+id/plant_details_location_iv" android:layout_width="@dimen/dp_19" android:layout_height="@dimen/dp_19" android:layout_below="@+id/line" android:layout_marginStart="@dimen/dp_11" android:layout_marginTop="@dimen/dp_7" android:src="@drawable/location" /> <TextView android:id="@+id/plant_details_location_tv" android:layout_width="290dp" android:layout_height="@dimen/dp_19" android:layout_below="@+id/line" android:layout_marginStart="@dimen/dp_3" android:layout_marginTop="@dimen/dp_8" android:layout_toEndOf="@+id/plant_details_location_iv" android:ellipsize="end" android:gravity="center_vertical|start" android:singleLine="true" android:text="@string/power_station" android:textColor="@color/text_40000000" android:textSize="@dimen/text_12" /> <TextView android:id="@+id/fragment_house_list_line_state_tv" android:layout_width="69dp" android:layout_height="@dimen/dp_33" android:layout_alignParentTop="true" android:layout_alignParentEnd="true" android:background="@drawable/state_ffb300" android:gravity="center" android:text="@string/my_power_station_connecting" android:textColor="@color/text_FFFFFFFF" android:textSize="@dimen/text_12" /> </RelativeLayout> </RelativeLayout> </com.hdl.photovoltaic.widget.SwipeLayout> app/src/main/res/layout/item_plant_details.xml
@@ -15,7 +15,7 @@ android:layout_height="164dp"> <RelativeLayout android:id="@+id/plant_details_info_rl" android:id="@+id/device_details_info_rl" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginStart="@dimen/dp_16" @@ -24,7 +24,7 @@ android:background="@drawable/ffffff_13"> <ImageView android:id="@+id/plant_details_image_iv" android:id="@+id/device_details_image_iv" android:layout_width="44dp" android:layout_height="42dp" android:layout_marginStart="@dimen/dp_16" @@ -33,12 +33,12 @@ android:scaleType="centerCrop" /> <TextView android:id="@+id/plant_details_name_tv" android:id="@+id/device_details_name_tv" android:layout_width="170dp" android:layout_height="@dimen/dp_19" android:layout_marginStart="@dimen/dp_11" android:layout_marginTop="@dimen/dp_15" android:layout_toEndOf="@+id/plant_details_image_iv" android:layout_toEndOf="@+id/device_details_image_iv" android:ellipsize="end" android:gravity="center_vertical|start" android:singleLine="true" @@ -48,11 +48,11 @@ android:textStyle="bold" /> <TextView android:id="@+id/plant_details_capacity_tv" android:id="@+id/device_details_sn_tv" android:layout_width="wrap_content" android:layout_height="@dimen/dp_17" android:layout_below="@+id/plant_details_name_tv" android:layout_alignStart="@+id/plant_details_name_tv" android:layout_below="@+id/device_details_name_tv" android:layout_alignStart="@+id/device_details_name_tv" android:layout_marginTop="@dimen/dp_3" android:gravity="center_vertical" android:text="@string/installed_capacity" @@ -63,7 +63,7 @@ android:id="@+id/screening_condition_ll" android:layout_width="match_parent" android:layout_height="@dimen/dp_36" android:layout_below="@+id/plant_details_image_iv" android:layout_below="@+id/device_details_image_iv" android:layout_marginStart="@dimen/dp_16" android:layout_marginTop="@dimen/dp_17" android:orientation="horizontal">