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.TextView; import androidx.annotation.NonNull; import androidx.appcompat.content.res.AppCompatResources; import androidx.recyclerview.widget.RecyclerView; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.ui.bean.CloudInverterDeviceBean; import java.util.ArrayList; import java.util.List; public class SearchDeviceAdapter extends RecyclerView.Adapter { List mList; Context mContext; DeviceInfoAdapter.OnClickListener mOnclickListener; public SearchDeviceAdapter(Context context) { this.mContext = context; } @NonNull @Override public SearchDeviceAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_search_device, parent, false); return new MyViewHolder(view); } @Override public void onBindViewHolder(@NonNull SearchDeviceAdapter.MyViewHolder holder, int position) { CloudInverterDeviceBean deviceBean = this.mList.get(position); holder.device_search_name_tv.setText(deviceBean.getHomeNameAndDeviceName()); holder.device_search_sn_tv.setText("SN:"+deviceBean.getOsn()); holder.device_search_location_tv.setText(deviceBean.getHomeAddress()); setTextViewStyle(holder.device_search_state_tv, deviceBean.getDeviceStatus()); holder.itemView.setTag(position); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { if (mOnclickListener != null) { mOnclickListener.onClick((int) holder.itemView.getTag(), deviceBean); } } catch (Exception ignored) { } } }); } @Override public int getItemCount() { return this.mList == null ? 0 : this.mList.size(); } public void setOnclickListener(DeviceInfoAdapter.OnClickListener onClickListener) { this.mOnclickListener = onClickListener; } public void setList(List newData) { if (this.mList == null) { this.mList = new ArrayList<>(); } else { this.mList.clear(); } this.mList.addAll(newData); notifyDataSetChanged(); } /** * 改变组件样式 * * @param textView 显示组件 * 如果设备从来没上报过数据数据 状态:连接中 * 设备在线 但是当前处于故障 状态:故障 * 设备在线(有上报过数据,没有故障) 状态:在线 * 设备离线 状态:离线 * @param state_value 设备状态(1:连接中,2:故障,3:正常(运行),4:离线,) */ 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.device_state_ff38c494); switch (state_value) { case 1: { text = mContext.getString(R.string.my_power_station_connecting); drawable = AppCompatResources.getDrawable(mContext, R.drawable.device_satte_ffb300); } break; case 2: { text = mContext.getString(R.string.my_power_station_malfunction); drawable = AppCompatResources.getDrawable(mContext, R.drawable.device_state_fff55252); } break; case 3: { text = mContext.getString(R.string.my_power_station_operation); } break; case 4: { text = mContext.getString(R.string.my_power_station_off_line); drawable = AppCompatResources.getDrawable(mContext, R.drawable.device_state_ffb9b9b9); } break; } // textView.setText(text); textView.setBackground(drawable); } public interface OnClickListener { void onClick(int position, CloudInverterDeviceBean deviceBean); } /** * 一行布局容器 */ static class MyViewHolder extends RecyclerView.ViewHolder { public TextView device_search_name_tv;//名称(电站_设备名称) public TextView device_search_sn_tv;//mac public TextView device_search_location_tv;//地址 public TextView device_search_state_tv;//状态 public MyViewHolder(@NonNull View itemView) { super(itemView); device_search_name_tv = itemView.findViewById(R.id.device_search_name_tv); device_search_sn_tv = itemView.findViewById(R.id.device_search_sn_tv); device_search_location_tv = itemView.findViewById(R.id.device_search_location_tv); device_search_state_tv = itemView.findViewById(R.id.device_search_state_tv); } } }