Trying to deselect a view using getChildAt()

change your getView() method as follows.

@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
    holder = null;

    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.child_item, null);
        holder = new ViewHolder();

        final TextView idAluno = (TextView) convertView.findViewById(R.id.idcrianca);

        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

   holder.text.setText(child.get(position).getNome());

   final View finalConvertView = convertView;
   convertView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if (list.size() > 0) {
                isChecked = filhos.get(posicaoEscola).get(position).isChecked();

                if (!isChecked) {
                    selecao(true, position, nomeAluno, 0xFFFFFFFF, finalConvertView, View.VISIBLE);
                } else {
                    selecao(false, position, nomeAluno, 0xFFD5672B, finalConvertView, View.GONE);
                }

                ex.findViewById(R.id.notificar).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(final View v) {

                        limpaSelecao(false, position, nomeAluno, 0xFFD5672B, parent, View.GONE);
                    }
                });
            }
        });

        return convertView;
    }

Android ViewGroups can contain any number of Views, but Views can only have one parent ViewGroup, if you try to add a View that already has a parent, you will get this exception (from ViewGroup.addViewInner()):

throw new IllegalStateException("The specified child already has a parent. " +
                "You must call removeView() on the child's parent first.");

This means that the structure of your layouts is that of a tree (not a graph), and so you can use any tree traversal algorithm to iterate through every View of your layout.

The following is one of the possible algorithms, which is a post-order traversal.

enter image description here

It goes through the root element, takes the first child and makes a recursive call for the algorithm, then its second, third etc...when there are no children left to go through, it calls your deselect function for the node.

For the tree in the diagram, nodes will be unselected in this order:

A,C,E,D,B,H,I,G, F

public void onClickTheButton(View view) {
    unselectall(R.layout.your_layout);
}

public void unselectAll(View view) {
    if(view instanceof ViewGroup) {
        for(int ii = 0 ; ii<(ViewGroup)view.getChildrenCount(); ii++) {
            unselectAll((ViewGroup)view.getChildAt(ii));
        }
    }
    unselect(view);
}

You can find many other ways to do it here: https://en.wikipedia.org/wiki/Tree_traversal

It is a must to learn how those algorithms work if you want to ease your programming experience.