@Override
    public List<String> onQueryReceived(final @NonNull QueryToken queryToken) {
        final boolean hasPeople = peopleCheckBox.isChecked();
        final boolean hasCities = citiesCheckBox.isChecked();

        final List<String> buckets = new ArrayList<>();
        final SuggestionsResultListener listener = editor;
        final Handler handler = new Handler(Looper.getMainLooper());

        // Fetch people if necessary
        if (hasPeople) {
            buckets.add(PERSON_BUCKET);
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    List<Person> suggestions = people.getSuggestions(queryToken);
                    lastPersonSuggestions = new SuggestionsResult(queryToken, suggestions);
                    listener.onReceiveSuggestionsResult(lastPersonSuggestions, PERSON_BUCKET);
                }
            }, PERSON_DELAY);
        }

        // Fetch cities if necessary
        if (hasCities) {
            buckets.add(CITY_BUCKET);
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    List<City> suggestions = cities.getSuggestions(queryToken);
                    lastCitySuggestions = new SuggestionsResult(queryToken, suggestions);
                    listener.onReceiveSuggestionsResult(lastCitySuggestions, CITY_BUCKET);
                }
            }, CITY_DELAY);
        }

        // Return buckets, one for each source (serves as promise to editor that we will call
        // onReceiveSuggestionsResult at a later time)
        return buckets;
    }
@Override
    public List<String> onQueryReceived(final @NonNull QueryToken queryToken) {
        final boolean hasPeople = peopleCheckBox.isChecked();
        final boolean hasCities = citiesCheckBox.isChecked();

        final List<String> buckets = new ArrayList<>();
        final SuggestionsResultListener listener = editor;
        final Handler handler = new Handler(Looper.getMainLooper());

        
        if (hasPeople) {
            buckets.add(PERSON_BUCKET);
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    List<Person> suggestions = people.getSuggestions(queryToken);
                    lastPersonSuggestions = new SuggestionsResult(queryToken, suggestions);
                    listener.onReceiveSuggestionsResult(lastPersonSuggestions, PERSON_BUCKET);
                }
            }, PERSON_DELAY);
        }

        
        if (hasCities) {
            buckets.add(CITY_BUCKET);
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    List<City> suggestions = cities.getSuggestions(queryToken);
                    lastCitySuggestions = new SuggestionsResult(queryToken, suggestions);
                    listener.onReceiveSuggestionsResult(lastCitySuggestions, CITY_BUCKET);
                }
            }, CITY_DELAY);
        }

        
        
        return buckets;
    }
@ Override public List < String > onQueryReceived ( final @ NonNull QueryToken queryToken ) { final boolean hasPeople = peopleCheckBox . isChecked ( ) ; final boolean hasCities = citiesCheckBox . isChecked ( ) ; final List < String > buckets = new ArrayList <> ( ) ; final SuggestionsResultListener listener = editor ; final Handler handler = new Handler ( Looper . getMainLooper ( ) ) ; // Fetch people if necessary if ( hasPeople ) { buckets . add ( PERSON_BUCKET ) ; handler . postDelayed ( new Runnable ( ) { @ Override public void run ( ) { List < Person > suggestions = people . getSuggestions ( queryToken ) ; lastPersonSuggestions = new SuggestionsResult ( queryToken , suggestions ) ; listener . onReceiveSuggestionsResult ( lastPersonSuggestions , PERSON_BUCKET ) ; } } , PERSON_DELAY ) ; } // Fetch cities if necessary if ( hasCities ) { buckets . add ( CITY_BUCKET ) ; handler . postDelayed ( new Runnable ( ) { @ Override public void run ( ) { List < City > suggestions = cities . getSuggestions ( queryToken ) ; lastCitySuggestions = new SuggestionsResult ( queryToken , suggestions ) ; listener . onReceiveSuggestionsResult ( lastCitySuggestions , CITY_BUCKET ) ; } } , CITY_DELAY ) ; } // Return buckets, one for each source (serves as promise to editor that we will call // onReceiveSuggestionsResult at a later time) return buckets ; }
--------------------------------------------------
--------------------------------------------------