Android Filter выполняет фильтрацию перед возвратом без ошибок - PullRequest
0 голосов
/ 04 декабря 2018

В настоящее время я изучаю, как создавать приложения для Android Studio, и я хотел создать AutoCompleteTextView, чтобы предлагать контакты, с помощью специального адаптера для моего класса Contact.

Однако у меня возникла проблема сФильтр: метод "executeFiltering" останавливается перед возвратом без каких-либо ошибок.Следовательно, параметр «results» из метода «publishResults» имеет свой атрибут member «values» null.

Это мои методы:

@Override
    protected FilterResults performFiltering(CharSequence constraint) {
        FilterResults results = new FilterResults();
        List<Contact> suggestions = new ArrayList<>();



        if(constraint == null || constraint.length() == 0){
            Log.i("ContactFiltering", "performFiltering: contrain null or 0");
            suggestions.addAll(contactListFull);
        }
        else{
            String filterPattern = constraint.toString().toLowerCase().trim();
            Log.i("ContactFiltering", "performFiltering: filterPattern '" + filterPattern + "'");

            for(Contact contact: contactListFull){

                if(contact.name.toLowerCase().contains(filterPattern)){
                    suggestions.add(contact);
                }
            }
        }

        Log.i("ContactFiltering", "performFiltering: suggestions size '" +  suggestions.size() + "'");

        results.values = suggestions;
        results.count = suggestions.size();
        return results;
    }

    @Override
    protected void publishResults(CharSequence constraint, FilterResults results) {
        clear();

        addAll(new ArrayList<Contact>());
        addAll((List) results.values);

        notifyDataSetChanged();
    }

Журнал "(executeFiltering: подсчет размера'"ideas.size () +"' ")" никогда не появляется в LogCat.

Кроме того, со счетчиком я видел, что цикл for не достигает конца моего списка контактов:

ContactFiltering: executeFiltering: filterPattern 'q'

ContactFiltering: executeFiltering: contactListFull size '75'

ContactFiltering: executeFiltering: счетчик инициализации для 0

ContactFiltering: executeFiltering: counter = 1

ContactFiltering: executeFiltering: counter = 2

ContactFiltering: executeFiltering: counter = 3

ContactFiltering: executeFiltering: ....

ContactFiltering: executeFiltering: counter = 28

// Ничего другого.

Надеюсь, кто-нибудь поможет мне Пока, Натан.

...