adapter加载多种布局

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;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值