package edu.mit.mitmobile2.news.view; import java.util.ArrayList; import android.content.Context; import edu.mit.mitmobile2.news.beans.NewsStory; import edu.mit.mitmobile2.news.net.NewsDownloader; import edu.mit.mitmobile2.news.net.StoriesProgressListener; public abstract class NewsCategoryLoader { NewsDownloader nd; LoadingScreenListener mLoadingScreenListener; ArrayList<NewsStory> list; boolean isLoading = false; int position; String start_story_id; boolean refreshData; boolean loadMore = false; public void setLoadMore(boolean b){ this.loadMore = b; } public boolean isLoadMore(){ return this.loadMore; } //String criteria; //String type; //abstract void categoryLoaded(); public NewsCategoryLoader(Context c){ nd = NewsDownloader.getInstance(c); list = new ArrayList<NewsStory>(); this.refreshData = false; } /*public void setScreenListener(LoadingScreenListener l){ this.mLoadingScreenListener = l; } public LoadingScreenListener getScreenListener(){ return this.mLoadingScreenListener; }*/ /*public void removeItem(Integer i){ this.list.remove(i); }*/ public void loadStories(String criteria, String type, int start, int limit){ String[] cats = new String[]{criteria}; final NewsCategoryLoader ncl = this; NewsDownloader.DownloadStoriesTask dst = nd.new DownloadStoriesTask(new StoriesProgressListener(){ { if(!ncl.loadMore){ ncl.list.clear(); ncl.setLoadMore(false); } ncl.isLoading = true; } @Override public void onProgressUpdate(ArrayList<NewsStory>... list) { for(ArrayList<NewsStory> st:list){ if(st!=null && st.size()>0){ for(int i=0;(i < st.size()); i++){ ncl.list.add(st.get(i)); } } } } @Override public void onPostExecute(Long nr) { ncl.isLoading = false; if(ncl.start_story_id!=null){ ncl.seekToNewsItem(ncl.start_story_id); } //categoryLoaded(); if(mLoadingScreenListener!=null) mLoadingScreenListener.onStoriesLoaded(); } }, type, start, limit); dst.setRefresh(refreshData); dst.execute(cats); } public void setLoadingScreenListener(LoadingScreenListener listener) { mLoadingScreenListener = listener; } public void seekToNewsItem(String story_id) { for(int i = 0; i< this.list.size();i++){ if(this.list.get(i).getId().equals(story_id)){ this.position = i; break; } } } void setStartStory(String storyId) { this.start_story_id = storyId; } String getStartStory() { return this.start_story_id; } }