package com.gh4a; import android.os.Bundle; import org.eclipse.egit.github.core.client.GitHubClient; import org.eclipse.egit.github.core.client.PageIterator; import org.eclipse.egit.github.core.client.PagedRequest; public class PageIteratorWithSaveableState<V> extends PageIterator<V> { private static final String STATE_KEY_NEXT_PAGE = "next_page"; private static final String STATE_KEY_LAST_PAGE = "last_page"; private static final String STATE_KEY_NEXT = "next"; private static final String STATE_KEY_LAST = "last"; private static final String STATE_KEY_PAGE_SIZE = "page_size"; public PageIteratorWithSaveableState(PagedRequest<V> request, GitHubClient client) { super(request, client); } public Bundle saveState() { Bundle state = new Bundle(); state.putInt(STATE_KEY_NEXT_PAGE, nextPage); state.putInt(STATE_KEY_LAST_PAGE, lastPage); state.putInt(STATE_KEY_PAGE_SIZE, request.getPageSize()); state.putString(STATE_KEY_NEXT, next); state.putString(STATE_KEY_LAST, last); return state; } public void restoreState(Bundle state) { if (state == null || state.getInt(STATE_KEY_PAGE_SIZE) != request.getPageSize()) { return; } nextPage = state.getInt(STATE_KEY_NEXT_PAGE, nextPage); lastPage = state.getInt(STATE_KEY_NEXT_PAGE, lastPage); String newNext = state.getString(STATE_KEY_NEXT); String newLast = state.getString(STATE_KEY_NEXT); if (newNext != null) { next = newNext; } if (newLast != null) { last = newLast; } } }