public class SensorAdapter extends BaseAdapter {
Sensors mData;
Context mContext;
boolean flag = false;
public onCheckBoxClickListenner listenner4;
public SensorAdapter(Sensors mData, Context mContext) {
this.mData = mData;
this.mContext = mContext;
}
public void setCkeckBoxListenner(onCheckBoxClickListenner listenner4) {
this.listenner4 = listenner4;
}
@Override
public int getCount() {
return mData.getCount();
}
@Override
public Object getItem(int i) {
return mData.getItem(i);
}
@Override
public long getItemId(int position) {
return mData.getItemId(position);
}
@Override
public int getViewTypeCount() {
return 3;
}
public static final int SINGLE_IMG = 0;
public static final int fan_IMAG = 1;
public static final int xinlv_IMAG = 2;
@Override
public int getItemViewType(int position) {
Sensor s = mData.getItem(position);
if (s != null) {
if (s.getDevice_type() == 24) {
return fan_IMAG;
} else if (s.getDevice_type() == 0x3a) {
return xinlv_IMAG;
} else {
return SINGLE_IMG;
}
} else {
return 0;
}
}
@Override
public View getView(int position, View view, ViewGroup viewGroup) {
viewHolder vHolder = null;
fanHolder fHolder = null;
xinlvHolder xHolder = null;
int type = getItemViewType(position);
if (view == null) {
LayoutInflater inflater = LayoutInflater.from(mContext);
switch (type) {
case SINGLE_IMG:
view = inflater.inflate(R.layout.sensor_list_item2, null);
vHolder = new viewHolder();
vHolder.imageView = (ImageView) view.findViewById(R.id.device_image);
vHolder.type = (TextView) view.findViewById(R.id.type);
vHolder.value = (TextView) view.findViewById(R.id.value);
vHolder.sendId = (TextView) view.findViewById(R.id.senId);
view.setTag(vHolder);
break;
case fan_IMAG:
view = inflater.inflate(R.layout.fan_list_item2, null);
fHolder = new fanHolder();
fHolder.imageView = (ImageView) view.findViewById(R.id.device2_image);
fHolder.sendId = (TextView) view.findViewById(R.id.senId2);
fHolder.type = (TextView) view.findViewById(R.id.type2);
fHolder.checkBox = (CheckBox) view.findViewById(R.id.fan_checkbox);
view.setTag(fHolder);
break;
case xinlv_IMAG:
view = inflater.inflate(R.layout.xinlv_list_item2, null);
xHolder = new xinlvHolder();
xHolder.imageView = (ImageView) view.findViewById(R.id.xinlv_device2_image);
xHolder.sendId = (TextView) view.findViewById(R.id.xinlv_senId2);
xHolder.type = (TextView) view.findViewById(R.id.xinlv_type2);
xHolder.gif = (GifView) view.findViewById(R.id.xinlv_gif);
xHolder.xinlv_textview = (TextView) view.findViewById(R.id.xinlv_textview);
view.setTag(xHolder);
break;
default:
break;
}
} else {
switch (type) {
case SINGLE_IMG:
vHolder = (viewHolder) view.getTag();
break;
case fan_IMAG:
fHolder = (fanHolder) view.getTag();
break;
case xinlv_IMAG:
xHolder = (xinlvHolder) view.getTag();
break;
default:
break;
}
}
//捆绑数据
final Sensor s = mData.getItem(position);
switch (type) {
case SINGLE_IMG:
if (s.getDevice_type() == 16) {
vHolder.imageView.setImageResource(R.mipmap.temp);
vHolder.type.setText("温度(℃)");
} else if (s.getDevice_type() == 17) {
vHolder.imageView.setImageResource(R.mipmap.hum);
vHolder.type.setText("湿度(%)");
} else(s.getDevice_type() == 18) {
vHolder.imageView.setImageResource(R.mipmap.light);
vHolder.type.setText("光照(LX)");
}
vHolder.value.setText(s.getDevice_value());
vHolder.sendId.setText(s.getDevice_id() + "");
break;
case fan_IMAG:
fHolder.imageView.setImageResource(R.mipmap.swich);
fHolder.type.setText("继电器");
fHolder.sendId.setText(s.getDevice_id() + "");
fHolder.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckBox c = (CheckBox) v;
if (listenner4 != null) {
if (c.isChecked()) {
listenner4.checkBoxClick(s);
} else {
listenner4.noCheckBoxClick(s);
}
}
}
});
break;
case xinlv_IMAG:
xHolder.imageView.setImageResource(R.mipmap.xinlv2);
xHolder.type.setText("心率");
xHolder.sendId.setText(s.getDevice_id() + "");
if (s.getDevice_value().equals("testing")) {
xHolder.gif.setVisibility(View.VISIBLE);
xHolder.gif.setGifImage(R.mipmap.xinlv6);
xHolder.xinlv_textview.setVisibility(View.GONE);
Log.e("--------testing", s.getDevice_value());
} else {
xHolder.gif.setVisibility(View.GONE);
xHolder.xinlv_textview.setVisibility(View.VISIBLE);
xHolder.xinlv_textview.setText(s.getDevice_value());
Log.e("-----------value", s.getDevice_value());
}
break;
}
return view;
}
public class viewHolder {
ImageView imageView;
TextView type;
TextView value;
TextView sendId;
}
//风扇的
public class fanHolder {
ImageView imageView;
TextView type;
TextView sendId;
CheckBox checkBox;
}
public interface onCheckBoxClickListenner {
public void checkBoxClick(Sensor s);
public void noCheckBoxClick(Sensor s);
}
//心率
public class xinlvHolder {
ImageView imageView;
TextView type;
TextView sendId;
GifView gif;
TextView xinlv_textview;
}
}
adapter加载多种布局
最新推荐文章于 2022-06-26 16:29:23 发布