More rework of feed item list to deal with missing feeds.

This commit is contained in:
ojiikun 2013-07-08 09:21:43 +00:00
parent 07b9bd559e
commit 37ebbb4fd5

View file

@ -38,15 +38,12 @@ public class FeedItemListFragment extends StoryItemListFragment implements Loade
private ContentResolver contentResolver; private ContentResolver contentResolver;
private String feedId; private String feedId;
private FeedItemsAdapter adapter; private FeedItemsAdapter adapter;
private Uri storiesUri;
private int currentState; private int currentState;
private int currentPage = 1; private int currentPage = 1;
private boolean requestedPage = false; private boolean requestedPage = false;
private boolean doRequest = true;
public static int ITEMLIST_LOADER = 0x01; public static int ITEMLIST_LOADER = 0x01;
private int READING_RETURNED = 0x02; private int READING_RETURNED = 0x02;
private Feed feed;
private StoryOrder storyOrder; private StoryOrder storyOrder;
@ -68,51 +65,43 @@ public class FeedItemListFragment extends StoryItemListFragment implements Loade
currentState = getArguments().getInt("currentState"); currentState = getArguments().getInt("currentState");
feedId = getArguments().getString("feedId"); feedId = getArguments().getString("feedId");
storyOrder = (StoryOrder)getArguments().getSerializable("storyOrder"); storyOrder = (StoryOrder)getArguments().getSerializable("storyOrder");
if (!NetworkUtils.isOnline(getActivity())) {
doRequest = false;
}
} }
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_itemlist, null); View v = inflater.inflate(R.layout.fragment_itemlist, null);
ListView itemList = (ListView) v.findViewById(R.id.itemlistfragment_list); ListView itemList = (ListView) v.findViewById(R.id.itemlistfragment_list);
itemList.setEmptyView(v.findViewById(R.id.empty_view)); itemList.setEmptyView(v.findViewById(R.id.empty_view));
contentResolver = getActivity().getContentResolver(); contentResolver = getActivity().getContentResolver();
storiesUri = FeedProvider.FEED_STORIES_URI.buildUpon().appendPath(feedId).build(); Uri storiesUri = FeedProvider.FEED_STORIES_URI.buildUpon().appendPath(feedId).build();
Cursor cursor = contentResolver.query(storiesUri, null, DatabaseConstants.getStorySelectionFromState(currentState), null, DatabaseConstants.getStorySortOrder(storyOrder)); Cursor storiesCursor = contentResolver.query(storiesUri, null, DatabaseConstants.getStorySelectionFromState(currentState), null, DatabaseConstants.getStorySortOrder(storyOrder));
setupFeed();
String[] groupFrom = new String[] { DatabaseConstants.STORY_TITLE, DatabaseConstants.STORY_AUTHORS, DatabaseConstants.STORY_READ, DatabaseConstants.STORY_SHORTDATE, DatabaseConstants.STORY_INTELLIGENCE_AUTHORS };
int[] groupTo = new int[] { R.id.row_item_title, R.id.row_item_author, R.id.row_item_title, R.id.row_item_date, R.id.row_item_sidebar };
getLoaderManager().initLoader(ITEMLIST_LOADER , null, this);
adapter = new FeedItemsAdapter(getActivity(), feed, R.layout.row_item, cursor, groupFrom, groupTo, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
itemList.setOnScrollListener(this);
adapter.setViewBinder(new FeedItemViewBinder(getActivity()));
itemList.setAdapter(adapter);
itemList.setOnItemClickListener(this);
itemList.setOnCreateContextMenuListener(this);
return v;
}
private void setupFeed() {
Uri feedUri = FeedProvider.FEEDS_URI.buildUpon().appendPath(feedId).build(); Uri feedUri = FeedProvider.FEEDS_URI.buildUpon().appendPath(feedId).build();
Cursor feedCursor = contentResolver.query(feedUri, null, null, null, null); Cursor feedCursor = contentResolver.query(feedUri, null, null, null, null);
if (feedCursor.getCount() > 0) { if (feedCursor.getCount() > 0) {
feedCursor.moveToFirst(); feedCursor.moveToFirst();
feed = Feed.fromCursor(feedCursor); Feed feed = Feed.fromCursor(feedCursor);
String[] groupFrom = new String[] { DatabaseConstants.STORY_TITLE, DatabaseConstants.STORY_AUTHORS, DatabaseConstants.STORY_READ, DatabaseConstants.STORY_SHORTDATE, DatabaseConstants.STORY_INTELLIGENCE_AUTHORS };
int[] groupTo = new int[] { R.id.row_item_title, R.id.row_item_author, R.id.row_item_title, R.id.row_item_date, R.id.row_item_sidebar };
getLoaderManager().initLoader(ITEMLIST_LOADER , null, this);
adapter = new FeedItemsAdapter(getActivity(), feed, R.layout.row_item, storiesCursor, groupFrom, groupTo, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
itemList.setOnScrollListener(this);
adapter.setViewBinder(new FeedItemViewBinder(getActivity()));
itemList.setAdapter(adapter);
itemList.setOnItemClickListener(this);
itemList.setOnCreateContextMenuListener(this);
} else { } else {
Log.w(this.getClass().getName(), "Feed not found in DB, can't load."); Log.w(this.getClass().getName(), "Feed not found in DB, can't load.");
} }
return v;
} }
@Override @Override
@ -130,7 +119,6 @@ public class FeedItemListFragment extends StoryItemListFragment implements Loade
} }
public void hasUpdated() { public void hasUpdated() {
setupFeed();
getLoaderManager().restartLoader(ITEMLIST_LOADER , null, this); getLoaderManager().restartLoader(ITEMLIST_LOADER , null, this);
requestedPage = false; requestedPage = false;
} }
@ -154,12 +142,12 @@ public class FeedItemListFragment extends StoryItemListFragment implements Loade
refreshStories(); refreshStories();
} }
@Override @Override
protected void refreshStories() { protected void refreshStories() {
final String selection = DatabaseConstants.getStorySelectionFromState(currentState); Uri storiesUri = FeedProvider.FEED_STORIES_URI.buildUpon().appendPath(feedId).build();
Cursor cursor = contentResolver.query(storiesUri, null, selection, null, DatabaseConstants.getStorySortOrder(storyOrder)); Cursor cursor = contentResolver.query(storiesUri, null, DatabaseConstants.getStorySelectionFromState(currentState), null, DatabaseConstants.getStorySortOrder(storyOrder));
adapter.swapCursor(cursor); adapter.swapCursor(cursor);
} }
@Override @Override
public void onScroll(AbsListView view, int firstVisible, int visibleCount, int totalCount) { public void onScroll(AbsListView view, int firstVisible, int visibleCount, int totalCount) {