/* * Copyright (c) 2015. Lorem ipsum dolor sit amet, consectetur adipiscing elit. * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan. * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna. * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus. * Vestibulum commodo. Ut rhoncus gravida arcu. */ package com.shaweibo.biu.dao.timeline; import android.database.Cursor; import com.shaweibo.biu.db.tables.HomeTimeLineTable; import com.shaweibo.biu.global.Constants; import com.shaweibo.biu.model.BaseListModel; import com.google.gson.Gson; /** * Created by shaw on 2015/7/13. */ public abstract class BaseTimelineDao< T extends BaseListModel> implements ITimelineBaseDao { public Constants.LOADING_STATUS mStatus; protected int mCurrentPage = 0; protected T mListModel; @Override public Constants.LOADING_STATUS getStatus() { return mStatus; } @Override public T getList() { return mListModel; } @Override public void loadFromCache() { Cursor cursor = query(); if (cursor.getCount() == 1) { cursor.moveToFirst(); mListModel = (T) new Gson().fromJson(cursor.getString(cursor.getColumnIndex(HomeTimeLineTable.JSON)),getListClass()); mCurrentPage = mListModel.getSize() / Constants.HOME_TIMELINE_PAGE_SIZE; spanAll(mListModel); } else { try { mListModel = (T) getListClass().newInstance(); } catch (Exception e) { } } } public abstract void spanAll(T t); @Override public void load(boolean isRefresh) { if (isRefresh) { mCurrentPage = 0; } BaseListModel list = load(); dealStatus(list); if(list==null){ return; } if (isRefresh) { mListModel.getList().clear(); } mListModel.addAll(false, list); spanAll(mListModel); } protected void dealStatus(BaseListModel model){ if(model!=null){ int count =model.getList().size(); if(count<Constants.HOME_TIMELINE_PAGE_SIZE){ mStatus= Constants.LOADING_STATUS.FINISH; } else { mStatus= Constants.LOADING_STATUS.NORMAL; } } else{ mStatus= Constants.LOADING_STATUS.FAIL; } } public abstract BaseListModel load(); protected abstract Class<? extends T> getListClass(); }