vendredi 6 novembre 2015

all Check box selected by default in a group of an expandable list

I have an expandable list with checkbox consisting of
MyCategory and other othercategory

i want all the checkbox of mycategory group to be checked by default. can someone help me with the same.

here is my code below

getChildView method of my BaseExpandableListAdapter class

    @Override
public View getChildView(final int groupPosition, final int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent) {
    LayoutInflater inflater = activity.getLayoutInflater();
    ViewHolder holder=null;

    final int mGroupPosition = groupPosition;
    final int mChildPosition = childPosition;

    if (convertView == null) {
        convertView = inflater.inflate(R.layout.category_list_row, null);
        holder= new ViewHolder();
        holder.mCheckBox=(CheckBox)convertView.findViewById(R.id.category_Login);
        convertView.setTag(holder);
    }
    else {
        holder = (ViewHolder) convertView.getTag();
    }

    /*
     * You have to set the onCheckChangedListener to null
     * before restoring check states because each call to
     * "setChecked" is accompanied by a call to the
     * onCheckChangedListener
    */
    holder.mCheckBox.setOnCheckedChangeListener(null);

    if (mChildCheckStates.containsKey(mGroupPosition)) {
        /*
         * if the hashmap mChildCheckStates<Integer, Boolean[]> contains
         * the value of the parent view (group) of this child (aka, the key),
         * then retrive the boolean array getChecked[]
        */
        boolean getChecked[] = mChildCheckStates.get(mGroupPosition);

        // set the check state of this position's checkbox based on the
        // boolean value of getChecked[position]
        holder.mCheckBox.setChecked(getChecked[mChildPosition]);

    } else {

        /*
         * if the hashmap mChildCheckStates<Integer, Boolean[]> does not
         * contain the value of the parent view (group) of this child (aka, the key),
         * (aka, the key), then initialize getChecked[] as a new boolean array
         *  and set it's size to the total number of children associated with
         *  the parent group
        */
        boolean getChecked[] = new boolean[getChildrenCount(mGroupPosition)];

        // add getChecked[] to the mChildCheckStates hashmap using mGroupPosition as the key
        mChildCheckStates.put(mGroupPosition, getChecked);

        // set the check state of this position's checkbox based on the
        // boolean value of getChecked[position]
        holder.mCheckBox.setChecked(false);
    }

    holder.mCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

            if (isChecked) {

                boolean getChecked[] = mChildCheckStates.get(mGroupPosition);
                getChecked[mChildPosition] = isChecked;
                mChildCheckStates.put(mGroupPosition, getChecked);
            } else {

                boolean getChecked[] = mChildCheckStates.get(mGroupPosition);
                getChecked[mChildPosition] = isChecked;
                mChildCheckStates.put(mGroupPosition, getChecked);
            }
        }
    });

    return convertView;
}

Aucun commentaire:

Enregistrer un commentaire