Beispiel #1
0
  @Override
  public void onLoadFinished(
      final Loader<AugmentedMentionContainer> loader, final AugmentedMentionContainer data) {
    if (data == null) {
      // TODO - we need to tailor this to lack of connection/other network issue
      addDataToAdapter(null);
      return;
    }

    if (mInfiniteScrollListener != null
        && !mInfiniteScrollListener.isLoading()
        && !mRefreshLayout.isRefreshing()) {
      // This may happen when we are coming back from posts fragment to threads. For some
      // reason loadFinished gets called. However, we may have new data about the thread -
      // don't disturb this data.
      UIUtils.updateEmptyViewState(getView(), mRecyclerView, false);
      mRecyclerView.setOnScrollListener(mInfiniteScrollListener);
      return;
    } else if (data.getCurrentPage() == 1 || mInfiniteScrollListener == null) {
      mAdapter.clear();

      mTotalPages = data.getTotalPages();
      mInfiniteScrollListener =
          new InfiniteRecyclerLoadHelper(
              mRecyclerView, new InfiniteLoadCallback(), mTotalPages, null);
    }
    mInfiniteScrollListener.onLoadFinished();

    addDataToAdapter(data.getMentions());
    if (!mInfiniteScrollListener.hasMoreData()) {
      mAdapter.removeFooter();
    }
  }
Beispiel #2
0
  @Override
  public void onViewCreated(final View view, @Nullable final Bundle state) {
    super.onViewCreated(view, state);

    mRefreshLayout.setOnRefreshListener(
        new SwipeRefreshLayout.OnRefreshListener() {
          @Override
          public void onRefresh() {
            UIUtils.updateEmptyViewState(getView(), mRecyclerView, mAdapter.isEmpty());
            reloadTheFirstPage();
          }
        });
    mRecyclerView.setAdapter(mAdapter);

    if (!mAdapter.isEmpty()) {
      return;
    }
    if (state == null) {
      loadTheFirstPage();
    } else {
      final List<AugmentedMention> mentions = state.getParcelableArrayList(SAVED_ADAPTER_STATE);
      if (Utils.isCollectionEmpty(mentions)) {
        loadTheFirstPage();
      } else {
        // This should give a non-zero integer
        mTotalPages = state.getInt(PAGES_SAVED_STATE);
        mInfiniteScrollListener =
            new InfiniteRecyclerLoadHelper(
                mRecyclerView, new InfiniteLoadCallback(), mTotalPages, null);
        addDataToAdapter(mentions);
      }
    }
  }
Beispiel #3
0
  private void addDataToAdapter(final List<AugmentedMention> data) {
    UIUtils.updateEmptyViewState(getView(), mRecyclerView, data == null ? 0 : data.size());

    // Let's actually add the items now
    mAdapter.addAll(data);
    mRefreshLayout.setRefreshing(false);
  }
Beispiel #4
0
  @Override
  public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);

    final ArrayList<AugmentedMention> mentions = new ArrayList<>(mAdapter.getMentions());
    outState.putParcelableArrayList(MentionFragment.SAVED_ADAPTER_STATE, mentions);
    outState.putInt(PAGES_SAVED_STATE, mTotalPages);
  }