@Override
    public void attach(GraphObjectAdapter<GraphPlace> adapter) {
      super.attach(adapter);

      this.adapter.setDataNeededListener(
          new GraphObjectAdapter.DataNeededListener() {
            @Override
            public void onDataNeeded() {
              // Do nothing if we are currently loading data . We will get notified again when that
              // load finishes if the adapter still
              // needs more data. Otherwise, follow the next link.
              if (!loader.isLoading()) {
                loader.followNextLink();
              }
            }
          });
    }
    @Override
    protected void onLoadFinished(
        GraphObjectPagingLoader<GraphPlace> loader, SimpleGraphObjectCursor<GraphPlace> data) {
      super.onLoadFinished(loader, data);

      // We could be called in this state if we are clearing data or if we are being re-attached
      // in the middle of a query.
      if (data == null || loader.isLoading()) {
        return;
      }

      hideActivityCircle();

      if (data.isFromCache()) {
        // Only the first page can be cached, since all subsequent pages will be round-tripped.
        // Force
        // a refresh of the first page before we allow paging to begin. If the first page produced
        // no data, launch the refresh immediately, otherwise schedule it for later.
        loader.refreshOriginalRequest(
            data.areMoreObjectsAvailable() ? CACHED_RESULT_REFRESH_DELAY : 0);
      }
    }