From 70394b344e4c9aceb9e979eb4192bdbb28186deb Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期一, 23 三月 2026 16:07:24 +0800
Subject: [PATCH] 2026年03月23日16:07:23

---
 app/src/main/java/com/hdl/photovoltaic/ui/adapter/HouseInfoAdapter.java |  264 +++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 205 insertions(+), 59 deletions(-)

diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/adapter/HouseInfoAdapter.java b/app/src/main/java/com/hdl/photovoltaic/ui/adapter/HouseInfoAdapter.java
index 1f4d7b0..a3f0b13 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/adapter/HouseInfoAdapter.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/adapter/HouseInfoAdapter.java
@@ -2,6 +2,7 @@
 
 import android.content.Context;
 import android.graphics.drawable.Drawable;
+import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -15,9 +16,11 @@
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.hdl.photovoltaic.R;
+import com.hdl.photovoltaic.config.UserConfigManage;
 import com.hdl.photovoltaic.enums.DebugStatus;
 import com.hdl.photovoltaic.enums.DeliverStatus;
 import com.hdl.photovoltaic.enums.PowerStationStatus;
+import com.hdl.photovoltaic.enums.PowerStationType;
 import com.hdl.photovoltaic.enums.UnitType;
 import com.hdl.photovoltaic.other.HdlCommonLogic;
 import com.hdl.photovoltaic.ui.bean.HouseIdBean;
@@ -29,7 +32,9 @@
 
 
 public class HouseInfoAdapter extends RecyclerView.Adapter<HouseInfoAdapter.MyViewHolder> {
-
+    // 瀹氫箟涓嶅悓鐨� viewType 甯搁噺
+    public static final int VIEW_TYPE_NORMAL = 1;      // 鏅�氱數绔欒鎯�
+    public static final int VIEW_TYPE_BMS = 2;        // BMS鏁版嵁鍗$墖
     private List<HouseIdBean> mList;
     private final Context mContext;
     private OnclickListener noOnclickListener;//鐐瑰嚮浜嗙殑鐩戝惉鍣�
@@ -46,80 +51,170 @@
         this.mContext = context;
     }
 
+    @Override
+    public int getItemViewType(int position) {
+        HouseIdBean item = this.mList.get(position);
+        if (item.getPowerStationType().equals(PowerStationType.BMS)) {
+            return VIEW_TYPE_BMS;
+        } else {
+            return VIEW_TYPE_NORMAL;
+        }
+    }
+
     @NonNull
     @Override
     public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
-        View contentItem = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_plant_details, parent, false);
+        View contentItem;
+        // 鏍规嵁 viewType 鍔犺浇涓嶅悓鐨勫竷灞�鏂囦欢
+        if (viewType == VIEW_TYPE_BMS) {
+            contentItem = LayoutInflater.from(parent.getContext())
+                    .inflate(R.layout.item_plant_bms_details, parent, false);
+        } else {
+            contentItem = LayoutInflater.from(parent.getContext())
+                    .inflate(R.layout.item_plant_details, parent, false);
+        }
         return new MyViewHolder(contentItem);
     }
 
+
     @Override
     public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
-
-
         HouseIdBean houseIdBean = this.mList.get(position);
-        holder.homeNameTv.setText(houseIdBean.getHomeName().trim());
+        int viewType = getItemViewType(position);
+        if (viewType == VIEW_TYPE_BMS) {
+            holder.setText(R.id.bms_home_name_tv, houseIdBean.getHomeName().trim());
+            //鐢垫睜鑳介噺锛堝閲�*鐢垫睜鏁伴噺锛�
+            holder.setText(R.id.bms_battery_storage_value_tv, HdlCommonLogic.convertDoubleValue(houseIdBean.getBatteryCapacity(), UnitType.kWh));
+            holder.setText(R.id.bms_battery_storage_kw_unit, HdlCommonLogic.convertKWHUnit(houseIdBean.getBatteryCapacity()));
+            holder.setText(R.id.bms_home_location_tv, houseIdBean.getHomeAddress());
+            holder.getView(R.id.bms_item_parent_rl).setTag(position);
+            setHomeStateTextViewStyle(holder.getView(R.id.bms_home_state_tv), houseIdBean.getPowerStationStatus());
+            setHomeDebugStateTextViewStyle(holder.getView(R.id.bms_home_debug_state_tv), holder.getView(R.id.bms_home_debug_state_iv), houseIdBean.getDebugStatus());
+            GlideUtils.getRoundedCornersImage(mContext, houseIdBean.getPowerStationImage(), holder.getView(R.id.bms_home_image_iv), 6);
+            holder.getView(R.id.bms_item_parent_rl).setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    try {
+                        if (noOnclickListener != null) {
+                            noOnclickListener.onClick((int) holder.getView(R.id.bms_item_parent_rl).getTag(), houseIdBean);
+                        }
+                    } catch (Exception ignored) {
+                    }
+                }
+            });
+            //绉诲姩鐢电珯浣嶇疆
+            holder.getView(R.id.bms_move_ll).setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    try {
+                        if (noOnclickListener != null) {
+                            noOnclickListener.onMoveClick((int) holder.getView(R.id.bms_item_parent_rl).getTag(), houseIdBean);
+                        }
+                    } catch (Exception ignored) {
+                    }
+                }
+            });
+            holder.getView(R.id.bms_del_ll).setVisibility(View.GONE);
+            if (houseIdBean.getDebugStatus().equals(DebugStatus.Debugging)) {
+                //鏈氦浠樺畬瑕佹樉绀哄垹闄ゆ寜閽�
+                holder.getView(R.id.bms_del_ll).setVisibility(View.VISIBLE);
+                holder.setImageResource(R.id.bms_del_home_iv, R.drawable.del_home);
+            }
+            if (houseIdBean.getDebugStatus().equals(DebugStatus.WAIT_DELIVERED)) {
+                //鏇存敼鎴愬洖婊氬浘鏍�
+                holder.getView(R.id.bms_del_ll).setVisibility(View.VISIBLE);
+                holder.setImageResource(R.id.bms_del_home_iv, R.drawable.roll_back);
+            }
 
-        //缁勪覆瀹归噺(鍒涘缓鐢电珯鏃惰緭鍏ョ殑缁勪覆瀹归噺)
-        holder.pv_value_tv.setText(HdlCommonLogic.convertDoubleValue(houseIdBean.getInstalledCapacity()));
-        holder.pv_kw_unit.setText(HdlCommonLogic.convertKWPUnit(houseIdBean.getInstalledCapacity()));
-        //褰撴棩鍙戠數
-        holder.generation_today_value_tv.setText(HdlCommonLogic.convertDoubleValue(houseIdBean.getTodayElectricity()));
-        holder.generation_today_kw_unit.setText(HdlCommonLogic.convertKWHUnit(houseIdBean.getTodayElectricity()));
-        //閫嗗彉鍣ㄩ瀹氬姛鐜囷紙鍗曚釜閫嗗彉鍣ㄩ瀹氬姛鐜�*閫嗗彉鍣ㄦ暟閲忥級
-        holder.output_value_tv.setText(HdlCommonLogic.convertDoubleValue(houseIdBean.getInvPower()));
-        holder.output_kw_unit.setText(HdlCommonLogic.convertKWUnit(houseIdBean.getInvPower()));
-        //鐢垫睜鑳介噺
-        holder.battery_storage_value_tv.setText(HdlCommonLogic.convertDoubleValue(houseIdBean.getBatteryCapacity()));
-        holder.battery_storage_kw_unit.setText(HdlCommonLogic.convertKWHUnit(houseIdBean.getBatteryCapacity()));
+            //鍒犻櫎鐢电珯
+            holder.getView(R.id.bms_del_ll).setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    try {
+                        if (noOnclickListener != null) {
+                            noOnclickListener.onDelClick((int) holder.item_parent_rl.getTag(), houseIdBean);
+                        }
+                    } catch (Exception ignored) {
+                    }
+                }
+            });
+            if (UserConfigManage.getInstance().isTourist_mode()) {
+                holder.getView(R.id.bms_del_ll).setVisibility(View.GONE);
+            }
+        } else {
+            holder.homeNameTv.setText(houseIdBean.getHomeName().trim());
+            //缁勪覆瀹归噺(鍒涘缓鐢电珯鏃惰緭鍏ョ殑缁勪覆瀹归噺)
+            holder.pv_value_tv.setText(HdlCommonLogic.convertDoubleValue(houseIdBean.getInstalledCapacity(), UnitType.kWp));
+            holder.pv_kw_unit.setText(HdlCommonLogic.convertKWPUnit(houseIdBean.getInstalledCapacity()));
+            //褰撴棩鍙戠數
+            holder.generation_today_value_tv.setText(HdlCommonLogic.convertDoubleValue(houseIdBean.getTodayElectricity(), UnitType.kWh));
+            holder.generation_today_kw_unit.setText(HdlCommonLogic.convertKWHUnit(houseIdBean.getTodayElectricity()));
+            //閫嗗彉鍣ㄩ瀹氬姛鐜囷紙鍗曚釜閫嗗彉鍣ㄩ瀹氬姛鐜�*閫嗗彉鍣ㄦ暟閲忥級
+            holder.output_value_tv.setText(HdlCommonLogic.convertDoubleValue(houseIdBean.getInvPower(), UnitType.kW));
+            holder.output_kw_unit.setText(HdlCommonLogic.convertKWUnit(houseIdBean.getInvPower()));
+            //鐢垫睜鑳介噺锛堝閲�*鐢垫睜鏁伴噺锛�
+            holder.battery_storage_value_tv.setText(HdlCommonLogic.convertDoubleValue(houseIdBean.getBatteryCapacity(), UnitType.kWh));
+            holder.battery_storage_kw_unit.setText(HdlCommonLogic.convertKWHUnit(houseIdBean.getBatteryCapacity()));
 
-        holder.home_location_tv.setText(houseIdBean.getHomeAddress());
-        holder.item_parent_rl.setTag(position);
-        setHomeStateTextViewStyle(holder.home_state_tv, houseIdBean.getPowerStationStatus());
-        setHomeDebugStateTextViewStyle(holder.home_debug_state_tv, holder.home_debug_state_iv, houseIdBean.getDebugStatus());
-        GlideUtils.getRoundedCornersImage(mContext, houseIdBean.getPowerStationImage(), holder.homeIconIv, 6);
+            holder.home_location_tv.setText(houseIdBean.getHomeAddress());
+            holder.item_parent_rl.setTag(position);
+            setHomeStateTextViewStyle(holder.home_state_tv, houseIdBean.getPowerStationStatus());
+            setHomeDebugStateTextViewStyle(holder.home_debug_state_tv, holder.home_debug_state_iv, houseIdBean.getDebugStatus());
+            GlideUtils.getRoundedCornersImage(mContext, houseIdBean.getPowerStationImage(), holder.homeIconIv, 6);
 //        HdlLogLogic.print("---鐢电珯鍚嶇О:" + houseIdBean.getHomeName() + "---鍥剧墖url:" + houseIdBean.getPowerStationImage(), false);
-        holder.item_parent_rl.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                try {
-                    if (noOnclickListener != null) {
-                        noOnclickListener.onClick((int) holder.item_parent_rl.getTag(), houseIdBean);
+            holder.item_parent_rl.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    try {
+                        if (noOnclickListener != null) {
+                            noOnclickListener.onClick((int) holder.item_parent_rl.getTag(), houseIdBean);
+                        }
+                    } catch (Exception ignored) {
                     }
-                } catch (Exception ignored) {
                 }
-            }
-        });
-        //绉诲姩鐢电珯浣嶇疆
-        holder.home_move_ll.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                try {
-                    if (noOnclickListener != null) {
-                        noOnclickListener.onMoveClick((int) holder.item_parent_rl.getTag(), houseIdBean);
+            });
+            //绉诲姩鐢电珯浣嶇疆
+            holder.home_move_ll.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    try {
+                        if (noOnclickListener != null) {
+                            noOnclickListener.onMoveClick((int) holder.item_parent_rl.getTag(), houseIdBean);
+                        }
+                    } catch (Exception ignored) {
                     }
-                } catch (Exception ignored) {
                 }
-            }
-        });
-        holder.home_del_ll.setVisibility(View.GONE);
-        if (houseIdBean.getDeliverStatus().equals(DeliverStatus.UNDELIVERED)) {
-            //鏈氦浠樺畬瑕佹樉绀哄垹闄ゆ寜閽�
-            holder.home_del_ll.setVisibility(View.VISIBLE);
-        }
+            });
+            holder.home_del_ll.setVisibility(View.GONE);
 
-        //鍒犻櫎鐢电珯
-        holder.home_del_ll.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                try {
-                    if (noOnclickListener != null) {
-                        noOnclickListener.onDelClick((int) holder.item_parent_rl.getTag(), houseIdBean);
-                    }
-                } catch (Exception ignored) {
-                }
+            if (houseIdBean.getDebugStatus().equals(DebugStatus.Debugging)) {
+                //鏈氦浠樺畬瑕佹樉绀哄垹闄ゆ寜閽�
+                holder.home_del_ll.setVisibility(View.VISIBLE);
+                holder.del_home_iv.setImageResource(R.drawable.del_home);
             }
-        });
+            if (houseIdBean.getDebugStatus().equals(DebugStatus.WAIT_DELIVERED)) {
+                //鏇存敼鎴愬洖婊氬浘鏍�
+                holder.home_del_ll.setVisibility(View.VISIBLE);
+                holder.del_home_iv.setImageResource(R.drawable.roll_back);
+            }
+
+            //鍒犻櫎鐢电珯
+            holder.home_del_ll.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    try {
+                        if (noOnclickListener != null) {
+                            noOnclickListener.onDelClick((int) holder.item_parent_rl.getTag(), houseIdBean);
+                        }
+                    } catch (Exception ignored) {
+                    }
+                }
+            });
+
+            if (UserConfigManage.getInstance().isTourist_mode()) {
+                holder.home_del_ll.setVisibility(View.GONE);
+            }
+        }
 
     }
 
@@ -201,7 +296,7 @@
      *                    璁惧鍦ㄧ嚎 浣嗘槸褰撳墠澶勪簬鏁呴殰 鐘舵�侊細鏁呴殰
      *                    璁惧鍦ㄧ嚎锛堟湁涓婃姤杩囨暟鎹紝娌℃湁鏁呴殰锛�  鐘舵�侊細鍦ㄧ嚎
      *                    璁惧绂荤嚎 鐘舵�侊細绂荤嚎
-     * @param state_value 鐢电珯鐘舵��(1:姝e父(杩愯),2:绂荤嚎,3:杩炴帴涓�,4:鏁呴殰,5:绂荤嚎鏈夋晠闅�)
+     * @param state_value 鐢电珯鐘舵��(1:姝e父(杩愯),2:绂荤嚎,3:杩炴帴涓�,4:鏁呴殰,5:绂荤嚎鏈夋晠闅�,6:閮ㄥ垎绂荤嚎)
      */
     private void setHomeStateTextViewStyle(TextView textView, int state_value) {
 
@@ -214,7 +309,8 @@
                 }
                 break;
 
-                case 2: {
+                case 2:
+                case 6: {
                     text = mContext.getString(R.string.my_power_station_off_line);
                     drawable = AppCompatResources.getDrawable(mContext, R.drawable.device_state_ffb9b9b9);
                 }
@@ -276,6 +372,7 @@
         public RelativeLayout item_parent_rl;//鏉$洰鐖跺鍣�
         public LinearLayout home_move_ll;//绉诲姩鐢电珯浣嶇疆
         public LinearLayout home_del_ll;//鍒犻櫎鐢电珯
+        public ImageView del_home_iv;
         public TextView home_location_tv;//鐢电珯鍦板潃
         public SwipeLayout item_parent_swipeLayout;//鐖跺鍣�
 
@@ -297,9 +394,58 @@
             item_parent_rl = itemView.findViewById(R.id.item_parent_rl);
             home_move_ll = itemView.findViewById(R.id.move_ll);
             home_del_ll = itemView.findViewById(R.id.del_ll);
+            del_home_iv = itemView.findViewById(R.id.del_home_iv);
             home_location_tv = itemView.findViewById(R.id.home_location_tv);
             item_parent_swipeLayout = itemView.findViewById(R.id.item_parent_swipeLayout);
         }
+
+        /**
+         * 璁剧疆鏂囨湰
+         */
+        public void setText(int viewId, String text) {
+            TextView textView = getView(viewId);
+            if (textView != null) {
+                textView.setText(text);
+            }
+        }
+
+        /**
+         * 璁剧疆鍥剧墖璧勬簮
+         */
+        public void setImageResource(int viewId, int resId) {
+            ImageView imageView = getView(viewId);
+            if (imageView != null) {
+                imageView.setImageResource(resId);
+            }
+        }
+
+        /**
+         * 璁剧疆鏂囨湰棰滆壊
+         */
+        public void setTextColor(int viewId, int color) {
+            TextView textView = getView(viewId);
+            if (textView != null) {
+                textView.setTextColor(color);
+            }
+        }
+
+        /**
+         * 璁剧疆鐐瑰嚮浜嬩欢
+         */
+        public void setOnClickListener(int viewId, View.OnClickListener listener) {
+            View view = getView(viewId);
+            if (view != null) {
+                view.setOnClickListener(listener);
+            }
+        }
+
+        /**
+         * 鑾峰彇 View
+         */
+        @SuppressWarnings("unchecked")
+        public <T extends View> T getView(int viewId) {
+            return (T) itemView.findViewById(viewId);
+        }
     }
 
     public interface OnclickListener {

--
Gitblit v1.8.0