在RecyclerView中调用Google Places API

时间:2016-09-18 00:49:57

标签: android google-places-api

我有一个RecyclerView,其适配器使用Google Places 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());
                }
     }

1 个答案:

答案 0 :(得分:3)

请勿在{{1​​}}方法中点击api。因为每次滚动onbindviewholder时都会执行onbindviewholder方法。

如果您在活动或片段中获取数据,然后将该数据存储在arraylist中并传递给recyclerview适配器,这将更好。

调整项目位置的问题是由recyclerview回收滚动中的每个项目。

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

viewHolder