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,10 +65,6 @@ 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
@ -82,17 +75,21 @@ public class FeedItemListFragment extends StoryItemListFragment implements Loade
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));
Uri feedUri = FeedProvider.FEEDS_URI.buildUpon().appendPath(feedId).build();
Cursor feedCursor = contentResolver.query(feedUri, null, null, null, null);
setupFeed(); if (feedCursor.getCount() > 0) {
feedCursor.moveToFirst();
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 }; 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 }; 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); getLoaderManager().initLoader(ITEMLIST_LOADER , null, this);
adapter = new FeedItemsAdapter(getActivity(), feed, R.layout.row_item, cursor, groupFrom, groupTo, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER); adapter = new FeedItemsAdapter(getActivity(), feed, R.layout.row_item, storiesCursor, groupFrom, groupTo, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
itemList.setOnScrollListener(this); itemList.setOnScrollListener(this);
@ -100,19 +97,11 @@ public class FeedItemListFragment extends StoryItemListFragment implements Loade
itemList.setAdapter(adapter); itemList.setAdapter(adapter);
itemList.setOnItemClickListener(this); itemList.setOnItemClickListener(this);
itemList.setOnCreateContextMenuListener(this); itemList.setOnCreateContextMenuListener(this);
return v;
}
private void setupFeed() {
Uri feedUri = FeedProvider.FEEDS_URI.buildUpon().appendPath(feedId).build();
Cursor feedCursor = contentResolver.query(feedUri, null, null, null, null);
if (feedCursor.getCount() > 0) {
feedCursor.moveToFirst();
feed = Feed.fromCursor(feedCursor);
} 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;
} }
@ -156,8 +144,8 @@ public class FeedItemListFragment extends StoryItemListFragment implements Loade
@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);
} }