package com.ywwxhz.data.impl; import android.app.Activity; import android.content.Intent; import android.view.View; import android.widget.AdapterView; import com.ywwxhz.MyApplication; import com.ywwxhz.activitys.NewsDetailActivity; import com.ywwxhz.adapters.FavoriteListAdapter; import com.ywwxhz.entitys.NewsItem; import com.ywwxhz.fragments.NewsDetailFragment; import com.ywwxhz.lib.database.exception.DbException; import com.ywwxhz.lib.database.sqlite.Selector; import java.util.ArrayList; import java.util.List; /** * cnBetaReader * <p/> * Created by 远望の无限(ywwxhz) on 2015/3/26 14:28. */ public class FavoriteNewsListDataProvider extends BaseNewsListDataProvider<FavoriteListAdapter> { private int current; public FavoriteNewsListDataProvider(Activity mActivity) { super(mActivity); hasCached = false; setPageSize(20); } @Override protected FavoriteListAdapter newAdapter() { return new FavoriteListAdapter(getActivity(), new ArrayList<NewsItem>()); } @Override public String getTypeKey() { return "favorite"; } @Override public String getTypeName() { return "收藏新闻"; } @Override public void loadNewData() { List<NewsItem> items; int old = current; try { current = 0; items = MyApplication.getInstance().getDbUtils().findAll( Selector.from(NewsItem.class).limit(getPageSize()).offset(0).orderBy("sid", true)); if(items == null){ items = new ArrayList<>(0); } getAdapter().setDataSet(items); } catch (DbException e) { current = old; items = new ArrayList<>(); } if(callback!=null){ callback.onLoadFinish(items.size()); } } @Override public void loadNextData() { List<NewsItem> items; try { current++; items =MyApplication.getInstance().getDbUtils().<NewsItem>findAll( Selector.from(NewsItem.class).limit(getPageSize()).offset(current * getPageSize()).orderBy("sid",true)); getAdapter().getDataSet().addAll(items); } catch (DbException e) { current--; items = new ArrayList<>(); e.printStackTrace(); } if(callback!=null){ callback.onLoadFinish(items.size()); } } @Override public AdapterView.OnItemClickListener getOnItemClickListener() { return new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Intent intent = new Intent(getActivity(), NewsDetailActivity.class); NewsItem item = getAdapter().getDataSetItem(i - 1); intent.putExtra(NewsDetailFragment.NEWS_SID_KEY, item.getSid()); intent.putExtra(NewsDetailFragment.NEWS_TITLE_KEY,item.getTitle()); getActivity().startActivity(intent); } }; } @Override public void loadData(boolean startup) { } }