AndroidManifest.xml

меня есть множественный выбор ListView, который отлично работает. Я проверяю флажки для контактов (хранится в строке []) и могу вернуть значения в порядке. Поскольку у некоторых людей есть куча контактов, я хотел создать панель поиска, похожую на панель поиска для телефонной книги Android. Я создал EditText и выровнял его над моим списком. Я нашел код фильтрации здесь, на StackOverflow, и он прекрасно работает.

Моя проблема:

Когда вы фильтруете чье-то имя и выбираете имя, когда вы либо возвращаетесь назад из EditText, либо продолжаете печатать, правильная позиция выбранного вами имени не сохраняется. Например, если я начну печатать «Адам», доберусь до «Ады» и выберу его, если я нажму клавишу «назад», чтобы набрать «Кэрол», будет выбрана любая позиция, в которой была «Ада». Он собирает место, в котором находился «Адам», по щелчку (скажем, 2) и, когда список восстанавливается, проверяет эту позицию (2), даже если Адама там больше нет. Мне нужен способ собрать имя ... затем, когда список восстанавливается или ищется снова, проверяется ИМЯ Адама, а не ПОЛОЖЕНИЕ, в котором Адам был ранее. У меня нет абсолютно никаких идей, кроме как создавать тонны массивов, и я действительно могу использовать некоторую помощь. Ниже приведен код, который я использую:

    @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);

        }

    };