ListView no muestra los cambios hasta que el foco cambia después de notifyDataSetChanged

Yo tengo unAlertDialog con unListView establecer en selección múltiple en él. También tiene unButton en eso.

losButton abre otroAlertDialog que si está bien, eliminará los elementos seleccionados del conjunto de datos delListView, y luego decirle al adaptador de la vista de lista que el conjunto de datos ha cambiado con elnotifyDataSetChanged() método.

Todo esto funciona bien, excepto por una cosa. losListView no actualiza su contenido hasta que interactúo con algo. Luego se actualiza a los datos correctos.

Este no es un gran problema, pero realmente me gustaríaListView para que parezca correcto de inmediato, y no solo después de que haya cambiado el enfoque.

Código:

Button remove = (Button) view.findViewById(R.id.btn_remove_questions_edit_rack);
    final Context con = this;
    remove.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            Builder warnBuild = new Builder(con);
            warnBuild.setMessage(R.string.question_deletion_warning);
            warnBuild.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener()
            {
                @Override
                public void onClick(DialogInterface dialog, int which)
                {
                    SparseBooleanArray checked = list.getCheckedItemPositions();
                    for (String s : keys)
                    {
                        int i = keys.indexOf(s);
                        if (checked.get(i))
                        {
                            toRemove.add(map.get(s));
                            map.remove(s);
                        }
                    }
                    keys.clear();
                    keys.addAll(map.keySet());
                    ((ArrayAdapter) list.getAdapter()).notifyDataSetChanged();
                    list.clearChoices(); //This makes sure the selection is cleared, if it isn't, some of the other items (those that now has the index of the selected items) will be selected when the View refreshes.
                    dialog.dismiss();
                }
            });

            //Negative button here, not relevant.
        }
    });

Dóndemap ykeys son:

final HashMap<String, QualityQuestion> map = new HashMap<>();
//I add items to the map
final ArrayList<String> keys = new ArrayList<>(map.keySet());

YtoRemove es donde guardo los elementos que se eliminarán del objeto real en el que están cuando el botón ok en el originalAlertDialog se presiona.

Así es como llego miListView en primer lugar:

final ListView list = (ListView) view.findViewById(R.id.list_questions_edit_rack);
    list.setAdapter(
            new ArrayAdapter<String>(this,
                    android.R.layout.simple_list_item_activated_1,
                    keys));

He intentado cosas comolist.invalidateViews(), list.invalidate y otras cosas que encontré en preguntas similares a las mías aquí en SO. Pero nada de eso hizo ninguna diferencia. Sospecho que mi problema es diferente al de ellos, ya que mis artículos están claramente actualizados, solo requiere un cambio de enfoque en el originalAlertDialog para que el cambio sea visible.

¿Cómo puedo hacer elListView ¿Muestra los cambios en su fuente de datos inmediatamente después de un cambio de enfoque?

Respuestas a la pregunta(2)

Su respuesta a la pregunta