package jp.gr.procon.proconapp.model; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import timber.log.Timber; /** * ページを使ったAPI用のクラス * * @param <T> ページ内リストのアイテムの型 */ public class PageApiState<T extends Serializable> implements Serializable { /** 1ページのアイテム数 */ public static final int DEFAULT_NUM_PAGE_ITEM = 10; /** APIから取得したアイテムのリスト */ private ArrayList<T> mItems; /** APIで次に取得すべきページ */ private int mNextPage; /** データをすべて読み込み終わった時はtrue, それ以外はfalse */ private boolean mIsLoadedAll; private final int mNumPageItem; public PageApiState() { this(DEFAULT_NUM_PAGE_ITEM); } public PageApiState(int numPageItem) { mItems = new ArrayList<>(); mNextPage = 0; mIsLoadedAll = false; mNumPageItem = numPageItem; } /** * 読み込んだページを追加する * 次に読み込むページ番号を更新 * 追加されたページ内のアイテム数が1ページのアイテム数より少ない場合は読み込み完了を判定 */ public void addPageList(ArrayList<T> pageItems) { if (pageItems == null) { Timber.d("addPageList: items is null"); return; } mIsLoadedAll = pageItems.size() < mNumPageItem; mItems.addAll(pageItems); mNextPage++; } public ArrayList<T> getItems() { return mItems; } public int getNextPage() { return mNextPage; } public boolean isLoadedAll() { return mIsLoadedAll; } public int getNumPageItem() { return mNumPageItem; } }