ListView分类加载

来源:互联网 发布:我国对外投资数据 编辑:程序博客网 时间:2024/06/14 22:22

getView的代码

    @SuppressWarnings("unchecked")    @Override    public View getView(int position, View convertView, ViewGroup parent) {        ViewHolder viewHolder = null;        final int i = position;        if(finalDevice.get(position) instanceof Integer){ //判断是不是标题的类型            if(convertView==null){                viewHolder = new ViewHolder();                //如果是标题的话                convertView = View.inflate(context, R.layout.smarthouse_device_list_title, null);                viewHolder.tv_smarthouse_item_title = (TextView) convertView.findViewById(R.id.tv_smarthouse_item_title);                convertView.setTag(R.id.tag_first, viewHolder);            }else{                viewHolder = (ViewHolder) convertView.getTag(R.id.tag_first);                if (viewHolder==null || viewHolder.tv_smarthouse_item_title==null) {  //因为用header分类了,所以此处有null的风险                    viewHolder = null;                    viewHolder = new ViewHolder();                    //如果是标题的话                    convertView = View.inflate(context, R.layout.smarthouse_device_list_title, null);                    viewHolder.tv_smarthouse_item_title = (TextView) convertView.findViewById(R.id.tv_smarthouse_item_title);                    convertView.setTag(R.id.tag_first, viewHolder);                }            }            //给标题设置值            viewHolder.tv_smarthouse_item_title.setText(devicesName[(Integer) finalDevice.get(position)]);            LogUtil.e("SmartHouse_deviceControl_ListView_Adapter integer", "finalDevice.get(position) integer:" + finalDevice.get(position));        }else{//不是的话就说明是常规的类型            if(convertView==null){                viewHolder = new ViewHolder();                convertView = View.inflate(context, R.layout.smarthouse_device_listitem, null);                viewHolder.tv_name = (TextView) convertView.findViewById(R.id.tv_smarthouse_devicecontrol_item);                viewHolder.tb_state = (ToggleButton) convertView.findViewById(R.id.tb_smarthouse_devicecontrol_item);                convertView.setTag(R.id.tag_second, viewHolder);            }else{                viewHolder = (ViewHolder) convertView.getTag(R.id.tag_second);                if(viewHolder==null || viewHolder.tv_name==null || viewHolder.tb_state==null){//因为用header分类了,所以此处有null的风险                    viewHolder=null;                    viewHolder = new ViewHolder();                    convertView = View.inflate(context, R.layout.smarthouse_device_listitem, null);                    viewHolder.tv_name = (TextView) convertView.findViewById(R.id.tv_smarthouse_devicecontrol_item);                    viewHolder.tb_state = (ToggleButton) convertView.findViewById(R.id.tb_smarthouse_devicecontrol_item);                    convertView.setTag(R.id.tag_second, viewHolder);                }            }            //----------------------------------以上为listView的优化            devices.clear();            devices.addAll(finalDevice);            LogUtil.e("SmartHouse_deviceControl_ListView_Adapter | device:", "finalDevice.size:" + finalDevice.size() +" | device.size: " + devices.size());            LogUtil.e("SmartHouse_deviceControl_ListView_Adapter", "devices.get(position):" + devices.get(position).getDeviceName());            //设置textview的值,然后设置它的点击事件            viewHolder.tv_name.setText(devices.get(position).getDeviceName());            viewHolder.tv_name.setOnClickListener(new OnClickListener() {                @Override                public void onClick(View v) {                    Toast.makeText(context, "您选择了" + devices.get(i).getDeviceName() + "设备", 0).show();                }            });            //得到每个控件的状态值,然后显示            DeviceStatus deviceStatus = LocalDataApi.getDeviceStatus(uID, devices.get(i).getDeviceId());//          if(deviceStatus!=null && (deviceStatus.getValue1()==0)){//              viewHolder.tb_state.setChecked(true);//          }            //--------------------------------以上为listVIew每个view的使用        }        return convertView;    }

ViewHolder

    static class ViewHolder{        TextView tv_name;        ToggleButton tb_state;        TextView tv_smarthouse_item_title;    }
0 0
原创粉丝点击