Cómo escribir un filtro personalizado para ListView con ArrayAdapter

Tengo un ListView que está conectado a un ArrayAdapter donde Artist es una clase simple mía, que solo tiene una identificación y un nombre.

Ahora quiero filtrar el ListView, así que llamo:

artistAdapter.getFilter().filter("bla", new Filter.FilterListener() {
    public void onFilterComplete(int count) {
        Log.d(Config.LOG_TAG, "filter complete! count: " + count); // returns 8
        Log.d(Config.LOG_TAG, "adapter count: " + artistAdapter.getCount()); // return 1150
    }
});

La primera instrucción de depuración imprime un recuento de 8. Ese es el recuento actual de elementos de lista que comienzan con "bla" pero el adaptador no lo obtiene. La segunda declaración de depuración imprime un recuento de 1150 elementos. Esa es la cantidad completa de elementos en la lista.

Entonces, de alguna manera, el filtro no le dice al adaptador que ha filtrado los datos subyacentes.

Quiero saber ahora: ¿tengo que codificar algo en mi adaptador para que obtenga las actualizaciones del filtro? ¿Tengo que escribir un filtro personalizado? ¿Que tengo que hacer?

Respuestas a la pregunta(2)

Su respuesta a la pregunta