in car_app_library/places/common/src/main/java/androidx/car/app/sample/places/common/PlaceDetailsScreen.java [97:153]
public Template onGetTemplate() {
Pane.Builder paneBuilder = new Pane.Builder();
// If we don't have any places yet, show a loading progress indicator.
if (mDetails == null) {
paneBuilder.setLoading(true);
} else {
Row.Builder row1Builder = new Row.Builder().setTitle("Address");
// Add the address, split in multiple lines.
List<CharSequence> addressLines = getAddressLines(mPlace.getAddress(mGeocoder));
for (CharSequence line : addressLines) {
row1Builder.addText(line);
}
if (mPhoto != null) {
row1Builder.setImage(
new CarIcon.Builder(IconCompat.createWithBitmap(mPhoto)).build(),
Row.IMAGE_TYPE_LARGE);
}
paneBuilder.addRow(row1Builder.build());
boolean hasSecondRow = false;
Row.Builder row2Builder = new Row.Builder().setTitle("Phone Number and Rating");
// Add the phone number.
String phoneNumber = mDetails.getPhoneNumber();
if (phoneNumber != null) {
hasSecondRow = true;
row2Builder.addText(phoneNumber);
}
// Add the place's ratings.
double ratings = mDetails.getRatings();
if (ratings >= 0) {
hasSecondRow = true;
row2Builder.addText(getRatingsString(ratings));
}
if (hasSecondRow) {
paneBuilder.addRow(row2Builder.build());
}
// Add a button with a navigate action.
paneBuilder.addAction(
new Action.Builder()
.setTitle("Navigate")
.setOnClickListener(this::onClickNavigate)
.build());
}
return new PaneTemplate.Builder(paneBuilder.build())
.setTitle(mPlace.getName())
.setHeaderAction(Action.BACK)
.build();
}