package com.hdl.photovoltaic.ui.adapter; import android.content.Context; import android.graphics.drawable.Drawable; 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.appcompat.content.res.AppCompatResources; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.enums.PowerStationStatus; import com.hdl.photovoltaic.enums.UnitType; import com.hdl.photovoltaic.other.HdlCommonLogic; import com.hdl.photovoltaic.other.HdlDeviceLogic; import com.hdl.photovoltaic.other.HdlLogLogic; import com.hdl.photovoltaic.ui.bean.HouseIdBean; import com.hdl.photovoltaic.utils.GlideUtils; import com.hdl.photovoltaic.widget.SwipeLayout; import java.util.ArrayList; import java.util.List; public class HouseInfoAdapter extends RecyclerView.Adapter { private List mList; private final Context mContext; private OnclickListener noOnclickListener;//点击了的监听器 String mPowerStationStatus; /** * 收集SwipeLayout数组,要一键全部打开; */ private List swipeLayoutList = new ArrayList<>(); public HouseInfoAdapter(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_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()); //装机容量 String capacity = mContext.getString(R.string.string_capacity) + ":" + HdlCommonLogic.getConvertDoubleUnit(houseIdBean.getInstalledCapacity(), UnitType.kWp); holder.capacityTv.setText(capacity); //发电功率 holder.power_value_tv.setText(HdlCommonLogic.getConvertDoubleUnit(houseIdBean.getPower(), UnitType.kW)); //当日发电量 holder.day_value_tv.setText(HdlCommonLogic.getConvertDoubleUnit(houseIdBean.getTodayElectricity(), UnitType.kWh)); //当月发电量 holder.month_value_tv.setText(HdlCommonLogic.getConvertDoubleUnit(houseIdBean.getMonthElectricity(), UnitType.kWh)); holder.plant_details_location_tv.setText(houseIdBean.getHomeAddress()); holder.item_parent_rl.setTag(position); setTextViewStyle(holder.stateTv, houseIdBean.getPowerStationStatus()); GlideUtils.getRoundedCornersImage(mContext, houseIdBean.getPowerStationImage(), holder.homeIconIv, new RoundedCorners(12), false); 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); } } catch (Exception ignored) { } } }); //移动电站位置 holder.move_home_iv.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) { } } }); //删除电站 holder.del_home_iv.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) { } } }); } @Override public int getItemCount() { return this.mList == null ? 0 : this.mList.size(); } public void setList(List newData, String powerStationStatus) { mPowerStationStatus = powerStationStatus; if (this.mList == null) { this.mList = new ArrayList<>(); } else { this.mList.clear(); } this.mList.addAll(newData); notifyDataSetChanged(); } public void setNoOnclickListener(OnclickListener onclickListener) { this.noOnclickListener = onclickListener; } public List getSwipeLayoutList() { if (this.swipeLayoutList == null) { this.swipeLayoutList = new ArrayList<>(); } return this.swipeLayoutList; } /** * 改变组件样式 * * @param textView 显示组件 * 如果设备从来没上报过数据数据 状态:连接中 * 设备在线 但是当前处于故障 状态:故障 * 设备在线(有上报过数据,没有故障) 状态:在线 * 设备离线 状态:离线 * @param state_value 电站状态(1:正常(运行),2:离线,3:连接中,4:故障,5:离线有故障) */ private void setTextViewStyle(TextView textView, int state_value) { String text = mContext.getString(R.string.my_power_station_operation); Drawable drawable = AppCompatResources.getDrawable(mContext, R.drawable.state_06b92a); if (mPowerStationStatus.equals(PowerStationStatus.All)) { switch (state_value) { case 1: { text = mContext.getString(R.string.my_power_station_operation); } break; case 2: { text = mContext.getString(R.string.my_power_station_off_line); drawable = AppCompatResources.getDrawable(mContext, R.drawable.state_b9b9b9); } break; case 3: { text = mContext.getString(R.string.my_power_station_connecting); drawable = AppCompatResources.getDrawable(mContext, R.drawable.state_ffb300); } break; case 4: case 5: { text = mContext.getString(R.string.my_power_station_malfunction); drawable = AppCompatResources.getDrawable(mContext, R.drawable.state_e34343); } //5:离线有故障Offline_fault break; // case 5: { // text = mContext.getString(R.string.Offline_fault); // drawable = AppCompatResources.getDrawable(mContext, R.drawable.state_e34343); // } // break; } } else if (mPowerStationStatus.equals(PowerStationStatus.malfunction)) { text = mContext.getString(R.string.my_power_station_malfunction); drawable = AppCompatResources.getDrawable(mContext, R.drawable.state_e34343); } else if (mPowerStationStatus.equals(PowerStationStatus.off)) { text = mContext.getString(R.string.my_power_station_off_line); drawable = AppCompatResources.getDrawable(mContext, R.drawable.state_b9b9b9); } else if (mPowerStationStatus.equals(PowerStationStatus.connecting)) { text = mContext.getString(R.string.my_power_station_connecting); drawable = AppCompatResources.getDrawable(mContext, R.drawable.state_ffb300); } textView.setText(text); textView.setBackground(drawable); } /** * 一行布局容器 */ static class MyViewHolder extends RecyclerView.ViewHolder { public ImageView homeIconIv;//住宅图片 public TextView homeNameTv;//住宅名称 public TextView capacityTv;//装机容量 public TextView power_value_tv;//发电功率 public TextView day_value_tv;//当日发电量 public TextView month_value_tv;//当月发电量 public TextView stateTv;//电站状态(连接中,运行,离线,故障); public RelativeLayout item_parent_rl;//条目父容器 public ImageView move_home_iv;//移动电站位置 public ImageView del_home_iv;//删除电站 public TextView plant_details_location_tv;//电站地址 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); power_value_tv = itemView.findViewById(R.id.power_value_tv); day_value_tv = itemView.findViewById(R.id.day_value_tv); month_value_tv = itemView.findViewById(R.id.month_value_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); plant_details_location_tv = itemView.findViewById(R.id.plant_details_location_tv); item_parent_swipeLayout = itemView.findViewById(R.id.item_parent_swipeLayout); } } public interface OnclickListener { void onClick(int position, HouseIdBean houseIdBean); void onMoveClick(int position, HouseIdBean houseIdBean); void onDelClick(int position, HouseIdBean houseIdBean); } }