题:
从ID字符串创建Place对象的最干净方法是什么?

我想用硬编码的ID制作一些place对象。
Place place1 = new Place("ChIJS_zBNNbXAhURy-FuRT5ib9k")这样的东西,但是这种做法是行不通的。

我遇到了GeoDataApi.getPlaceById,但是文档令人困惑。

该API通常用于查找用户输入的内容(可以选择使用自动补全功能),但是我需要更小,更整洁的东西(请考虑:单元测试的目的)



我的研究:
How to get a Place by ID


  要通过ID获得位置,请调用GeoDataApi.getPlaceById,并传递一个或多个位置ID。
  
  API在PlaceBuffer中返回PendingResultPlaceBuffer包含与提供的场所ID匹配的Place对象的列表。


说明文件:

Place
(所需对象)

PlaceBuffer
(可转换为地方)

PendingResult

getPlaceById
(返回PendingResult)



我坚持的是:
我找不到将PendingResult转换为PlaceBuffer的优雅方法。


  API在PlaceBuffer中返回PendingResult


...


  来自PendingResult<R>的最终结果对象的类型为R,可以用以下两种方法之一进行检索。
  
  
  通过阻止对await()await(long, TimeUnit)的调用,或
  通过将实现接口ResultCallback的对象传递给setResultCallback(ResultCallback)通过回调。
  


回调太混乱了,我找不到使用await来学习的代码。

最佳答案

您可以轻松地将PendingResultgetPlaceById转换为PlaceBuffer。您只需调用await()方法:

PendingResult<PlaceBuffer> result = Places.GeoDataApi.getPlaceById(
        mGoogleApiClient, placeId);
PlaceBuffer placeBuffer = result.await();


(如果愿意,您当然可以在一行中执行此操作。)

有在https://github.com/googlesamples/android-play-places中调用GeoDataApi.getPlaceByIDPendingResult<PlaceBuffer>.await的示例。

10-06 11:50