ListView pesquisável de múltipla escolha

OK Eu tenho um ListView de múltipla escolha que funciona bem. Verifico as caixas dos contatos (mantidos em uma String []) e posso retornar os valores com precisão. Como algumas pessoas têm vários contatos, eu queria criar uma barra de pesquisa como a da lista telefônica do Android. Criei um EditText e o alinhei acima da minha lista. Encontrei o código de filtragem aqui no StackOverflow e funciona maravilhosamente.

Meu problema:

Quando você filtra o nome de alguém e seleciona o nome, quando você retrocede no EditText ou continua digitando, a posição correta do nome selecionado não é salva. Por exemplo, se eu começar a digitar "Adam" e chegar a "Ada" e selecioná-lo, se eu retroceder para digitar "Carol", qualquer posição em que "Ada" esteja selecionada. Ele reúne o local em que "Adam" estava no clique (digamos 2) e quando a lista é restaurada verifica essa posição (2) mesmo que Adam não esteja mais lá. Eu preciso de uma maneira de reunir o nome. Então, quando a lista for restaurada ou pesquisada novamente, o NOME Adam será verificado e não a POSIÇÃO Adam em que estava anteriormente. Não tenho absolutamente nenhuma idéia além de criar toneladas de matrizes e poderia realmente usar alguma ajuda. Abaixo estão alguns dos códigos que estou usando:

    @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.contacts_list);


        myListView = (ListView)findViewById(android.R.id.list);
        search_EditText = (EditText) findViewById(R.id.search_EditText);
        search_EditText.addTextChangedListener(filterTextWatcher);

        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, ContactsList); 
        setListAdapter(adapter);

        myListView.setItemsCanFocus(false);
        getListView().setChoiceMode(2);
        myListView.setTextFilterEnabled(true);
        myListView.setFastScrollEnabled(true);
        myListView.invalidate();
}

    private TextWatcher filterTextWatcher = new TextWatcher() {
        public void afterTextChanged(Editable s) {

        }

        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {

        }

        public void onTextChanged(CharSequence s, int start, int before,
                int count) {

            adapter.getFilter().filter(s);

        }

    };

questionAnswers(2)

yourAnswerToTheQuestion