void doSearch()

in car_app_library/places/common/src/main/java/androidx/car/app/sample/places/common/SearchScreen.java [92:144]


    void doSearch(String searchText) {
        ItemList.Builder builder = new ItemList.Builder();
        if (searchText.isEmpty()) {
            mItemList = withNoResults(builder).build();
        }

        Futures.transformAsync(
                // Run the query in the background thread, and update with the results in
                // the UI thread.
                Futures.submitAsync(
                        () ->
                                Futures.immediateFuture(
                                        mPlaceFinder.getPlacesByName(
                                                mSearchLocation,
                                                Constants.LOCATION_SEARCH_RADIUS_METERS,
                                                Constants.LOCATION_SEARCH_MAX_RESULTS,
                                                searchText)),
                        BACKGROUND_EXECUTOR),
                places -> {
                    if (mIsSearchComplete) {
                        if (!places.isEmpty()) {
                            setResult(places.get(0).getLocation());
                        }
                    } else {
                        if (places.isEmpty()) {
                            mItemList = withNoResults(builder).build();
                        } else {
                            for (PlaceInfo place : places) {
                                Row.Builder rowBuilder = new Row.Builder();
                                String name = place.getName();
                                if (name != null) {
                                    rowBuilder.setTitle(name);
                                }
                                String addressLine =
                                        place.getAddress(mGeocoder).getAddressLine(0);
                                if (addressLine != null) {
                                    rowBuilder.addText(addressLine);
                                }
                                rowBuilder.setOnClickListener(
                                        () -> {
                                            setResult(place.getLocation());
                                            finish();
                                        });
                                builder.addItem(rowBuilder.build());
                            }
                        }
                        mItemList = builder.build();
                    }
                    return null;
                },
                UI_EXECUTOR)
                .addListener(this::searchCompleted, UI_EXECUTOR);
    }