diff options
author | daniel oeh <daniel.oeh@gmail.com> | 2012-07-01 22:21:06 +0200 |
---|---|---|
committer | daniel oeh <daniel.oeh@gmail.com> | 2012-07-01 22:21:06 +0200 |
commit | 3b4bf9374a161e08ffc1104ab64f7dc9813614b5 (patch) | |
tree | 8057a2f3422a4ea299beb673c4e212d8aa868c4f | |
parent | 5a0f1f49c99576d45ec94ef63a38a298a79bcff7 (diff) | |
download | AntennaPod-3b4bf9374a161e08ffc1104ab64f7dc9813614b5.zip |
Fixed feed update
-rw-r--r-- | src/de/podfetcher/feed/FeedItemPubdateComparator.java | 14 | ||||
-rw-r--r-- | src/de/podfetcher/feed/FeedManager.java | 13 | ||||
-rw-r--r-- | src/de/podfetcher/util/FeedItemPubdateComparator.java | 4 |
3 files changed, 13 insertions, 18 deletions
diff --git a/src/de/podfetcher/feed/FeedItemPubdateComparator.java b/src/de/podfetcher/feed/FeedItemPubdateComparator.java deleted file mode 100644 index 90967b72b..000000000 --- a/src/de/podfetcher/feed/FeedItemPubdateComparator.java +++ /dev/null @@ -1,14 +0,0 @@ -package de.podfetcher.feed; - -import java.util.Comparator; - -/** Compares the pubDate of two FeedItems */ -public class FeedItemPubdateComparator implements Comparator<FeedItem> { - - @Override - public int compare(FeedItem lhs, FeedItem rhs) { - long diff = lhs.getPubDate().getTime() - rhs.getPubDate().getTime(); - return (int) Math.signum(diff); - } - -} diff --git a/src/de/podfetcher/feed/FeedManager.java b/src/de/podfetcher/feed/FeedManager.java index 0cf1504ae..324bff5e7 100644 --- a/src/de/podfetcher/feed/FeedManager.java +++ b/src/de/podfetcher/feed/FeedManager.java @@ -9,6 +9,7 @@ import de.podfetcher.activity.MediaplayerActivity; import de.podfetcher.asynctask.DownloadStatus; import de.podfetcher.service.PlaybackService; import de.podfetcher.storage.*; +import de.podfetcher.util.FeedItemPubdateComparator; import de.podfetcher.util.FeedtitleComparator; import android.content.Context; import android.content.Intent; @@ -243,9 +244,9 @@ public class FeedManager { * adapter.setFeedItem(item); } else { feed.getItems().add(item); item.id = * adapter.setFeedItem(item); } } */ - public void updateFeed(Context context, Feed newFeed) { + public void updateFeed(Context context, final Feed newFeed) { // Look up feed in the feedslist - Feed savedFeed = searchFeedByLink(newFeed.getLink()); + final Feed savedFeed = searchFeedByLink(newFeed.getLink()); if (savedFeed == null) { Log.d(TAG, "Found no existing Feed with title " + newFeed.getTitle() @@ -257,17 +258,20 @@ public class FeedManager { Log.d(TAG, "Feed with title " + newFeed.getTitle() + " already exists. Syncing new with existing one."); // Look for new or updated Items - for (FeedItem item : newFeed.getItems()) { + for (int idx = 0; idx < newFeed.getItems().size(); idx++) { + FeedItem item = newFeed.getItems().get(idx); FeedItem oldItem = searchFeedItemByLink(savedFeed, item.getLink()); if (oldItem == null) { // item is new - savedFeed.getItems().add(item); + item.setFeed(savedFeed); + savedFeed.getItems().add(idx, item); markItemRead(context, item, false); } } savedFeed.setLastUpdate(newFeed.getLastUpdate()); setFeed(context, savedFeed); + } } @@ -568,6 +572,7 @@ public class FeedManager { items.add(item); } while (itemlistCursor.moveToNext()); } + Collections.sort(items, new FeedItemPubdateComparator()); return items; } diff --git a/src/de/podfetcher/util/FeedItemPubdateComparator.java b/src/de/podfetcher/util/FeedItemPubdateComparator.java index 0eb009349..f58c229c2 100644 --- a/src/de/podfetcher/util/FeedItemPubdateComparator.java +++ b/src/de/podfetcher/util/FeedItemPubdateComparator.java @@ -7,6 +7,10 @@ import de.podfetcher.feed.FeedItem; /** Compares the pubDate of two FeedItems for sorting*/ public class FeedItemPubdateComparator implements Comparator<FeedItem> { + /** Returns a new instance of this comparator in reverse order. + public static FeedItemPubdateComparator newInstance() { + FeedItemPubdateComparator + }*/ @Override public int compare(FeedItem lhs, FeedItem rhs) { return -lhs.getPubDate().compareTo(rhs.getPubDate()); |