调用 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);
我有一个 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);