调用 Google 在 RecyclerView 中放置 API

Calling Google Places API in a RecyclerView

我有一个 RecyclerView,其适配器使用 Google 个地点 API 获取有关地点 ID 的详细信息。然后适配器在 RecyclerView 的每个元素中显示这些详细信息(例如放置地址)。

是否有推荐的异步实现方法?在我当前的解决方案中,当用户向上或向下滚动时,地点地址有时会显示在不正确的 RecyclerView 元素中。此外,当点击 RecyclerView 元素转到详细信息屏幕,然后返回原始屏幕时,RecyclerView 中缺少一些地点地址(可能是在仍在从 Places API).

public void onBindViewHolder(final ViewHolder v, int position) {
    Places.GeoDataApi.getPlaceById(googleApiClient, placeID)
            .setResultCallback(new ResultCallback<PlaceBuffer>() {
                @Override
                public void onResult(PlaceBuffer places) {
                    Place place = places.get(0);

                    // Display address in the RecyclerView element
                    v.address.setText(place.getName());
                }
     }

不要在 onbindviewholder 方法中点击 api。因为 onbindviewholder 方法每次滚动时都会执行 recyclerview.

如果您在 activity 或片段中获取数据,然后将该数据存储在数组列表中并传递给 recyclerview 适配器,这会更好。

乱序项目位置的问题是由于recyclerview回收滚动上的每个项目。

因此,在您的 onbindviewholder 方法中,将此 属性 设置为 viewHolder

viewHolder.setIsRecyclable(false);