解决listview中checkbox复用的问题

private Context context;  
    private String[] beans;  
  
    // 用来控制CheckBox的选中状况  
    private static HashMap isSelected;  
  
    class ViewHolder {  
  
        TextView tvName;  
        CheckBox cb;  
    }  
  
    public ListViewAdapter(Context context, String[] beans) {  
        // TODO Auto-generated constructor stub  
        this.beans = beans;  
        this.context = context;  
        isSelected = new HashMap();  
        // 初始化数据  
        initDate();  
    }  
  
    // 初始化isSelected的数据  
    private void initDate() {  
        for (int i = 0; i < beans.length; i++) {  
            getIsSelected().put(i, false);  
        }  
    }  
 
  
    @Override  
    public View getView(final int position, View convertView, ViewGroup parent) {  
        
        // 监听checkBox并根据原来的状态来设置新的状态  
        holder.cb.setOnClickListener(new View.OnClickListener() {  
  
            public void onClick(View v) {  
  
                if (isSelected.get(position)) {  
                    isSelected.put(position, false);  
                    setIsSelected(isSelected);  
                } else {  
                    isSelected.put(position, true);  
                    setIsSelected(isSelected);  
                }  
  
            }  
        });  
  
        // 根据isSelected来设置checkbox的选中状况  
        holder.cb.setChecked(getIsSelected().get(position));  
        return convertView;  
    }  
  
    public static HashMap getIsSelected() {  
        return isSelected;  
    }  
  
    public static void setIsSelected(HashMap isSelected) {  
        ListViewAdapter.isSelected = isSelected;  
    }  

你可能感兴趣的:(解决listview中checkbox复用的问题)