| | |
| | | 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<HouseInfoAdapter.MyViewHolder> { |
| | | |
| | | private List<HouseIdBean> mList; |
| | | private final Context mContext; |
| | | private OnclickListener noOnclickListener;//点击了的监听器 |
| | | |
| | | public HouseInfoAdapter(List<HouseIdBean> list) { |
| | | this.mList = list; |
| | | String mPowerStationStatus; |
| | | |
| | | /** |
| | | * 收集SwipeLayout数组,要一键全部打开; |
| | | */ |
| | | private List<SwipeLayout> 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.frgment_house_list_line, parent, false); |
| | | 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()); |
| | | holder.itemView.setOnClickListener(new View.OnClickListener() { |
| | | 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) { |
| | | if (noOnclickListener != null) { |
| | | noOnclickListener.onClick(holder.getAdapterPosition(), houseIdBean); |
| | | 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) { |
| | | } |
| | | } |
| | | }); |
| | |
| | | } |
| | | |
| | | |
| | | public void setList(List<HouseIdBean> list) { |
| | | this.mList = list; |
| | | public void setList(List<HouseIdBean> 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<SwipeLayout> 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 powerTv;//发电功率 |
| | | 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.fragment_house_list_line_left_iv); |
| | | homeNameTv = itemView.findViewById(R.id.fragment_house_list_line_name_tv); |
| | | capacityTv = itemView.findViewById(R.id.fragment_house_list_line_capacity_tv); |
| | | powerTv = itemView.findViewById(R.id.fragment_house_list_line_power_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); |
| | | 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); |
| | | |
| | | } |
| | | |
| | | } |