@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(); } }
@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); } } }
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); }
@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); }