diff options
author | Tom Hennen <TomHennen@users.noreply.github.com> | 2015-12-13 16:33:48 -0500 |
---|---|---|
committer | Tom Hennen <TomHennen@users.noreply.github.com> | 2015-12-13 16:33:48 -0500 |
commit | 07be0e2cdb2e8e15de0af64ef6e9c4d754de892b (patch) | |
tree | 50dde45987e72e3b7a66d80dc8f6c4ad6c0ddd7e | |
parent | 3bb8d9304a60207d05cf398f21cc5ba1cc7f8402 (diff) | |
parent | a4dea4ba249df239ee5f2ce358c2a21e5912155c (diff) | |
download | AntennaPod-07be0e2cdb2e8e15de0af64ef6e9c4d754de892b.zip |
Merge pull request #1463 from mfietz/issue/1462-stop-refresh-indicator
Fix refresh indicator and (queue) dragging while downloading
4 files changed, 31 insertions, 19 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java index 37be8f020..0a0f686ff 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java @@ -303,6 +303,7 @@ public class AllEpisodesFragment extends Fragment { View root = inflater.inflate(fragmentResource, container, false); recyclerView = (RecyclerView) root.findViewById(android.R.id.list); + recyclerView.getItemAnimator().setSupportsChangeAnimations(false); layoutManager = new LinearLayoutManager(getActivity()); recyclerView.setLayoutManager(layoutManager); recyclerView.setHasFixedSize(true); @@ -397,14 +398,15 @@ public class AllEpisodesFragment extends Fragment { Log.d(TAG, "onEventMainThread() called with: " + "event = [" + event + "]"); DownloaderUpdate update = event.update; downloaderList = update.downloaders; - if(update.feedIds.length > 0) { - if (isUpdatingFeeds != updateRefreshMenuItemChecker.isRefreshing()) { + if (isUpdatingFeeds != update.feedIds.length > 0) { getActivity().supportInvalidateOptionsMenu(); - } } - if(update.mediaIds.length > 0) { - if(listAdapter != null) { - listAdapter.notifyDataSetChanged(); + if(listAdapter != null && update.mediaIds.length > 0) { + for(long mediaId : update.mediaIds) { + int pos = FeedItemUtil.indexOfItemWithMediaId(episodes, mediaId); + if(pos >= 0) { + listAdapter.notifyItemChanged(pos); + } } } } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java index 09d2f5676..bcfa254f7 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java @@ -9,7 +9,6 @@ import android.graphics.Color; import android.graphics.LightingColorFilter; import android.os.Build; import android.os.Bundle; -import android.support.v4.app.Fragment; import android.support.v4.app.ListFragment; import android.support.v4.util.Pair; import android.support.v4.view.MenuItemCompat; @@ -417,13 +416,11 @@ public class ItemlistFragment extends ListFragment { Log.d(TAG, "onEventMainThread() called with: " + "event = [" + event + "]"); DownloaderUpdate update = event.update; downloaderList = update.downloaders; - if(update.feedIds.length > 0) { + if (isUpdatingFeed != event.update.feedIds.length > 0) { updateProgressBarVisibility(); } - if(update.mediaIds.length > 0) { - if (adapter != null) { - adapter.notifyDataSetChanged(); - } + if(adapter != null && update.mediaIds.length > 0) { + adapter.notifyDataSetChanged(); } } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java index 46bbfd13c..8a2249d98 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java @@ -179,13 +179,15 @@ public class QueueFragment extends Fragment { Log.d(TAG, "onEventMainThread() called with: " + "event = [" + event + "]"); DownloaderUpdate update = event.update; downloaderList = update.downloaders; - if (update.feedIds.length > 0) { - if (isUpdatingFeeds != updateRefreshMenuItemChecker.isRefreshing()) { - getActivity().supportInvalidateOptionsMenu(); - } - } else if (update.mediaIds.length > 0) { - if (recyclerAdapter != null) { - recyclerAdapter.notifyDataSetChanged(); + if (isUpdatingFeeds != update.feedIds.length > 0) { + getActivity().supportInvalidateOptionsMenu(); + } + if (recyclerAdapter != null && update.mediaIds.length > 0) { + for (long mediaId : update.mediaIds) { + int pos = FeedItemUtil.indexOfItemWithMediaId(queue, mediaId); + if (pos >= 0) { + recyclerAdapter.notifyItemChanged(pos); + } } } } @@ -363,6 +365,7 @@ public class QueueFragment extends Fragment { View root = inflater.inflate(R.layout.queue_fragment, container, false); infoBar = (TextView) root.findViewById(R.id.info_bar); recyclerView = (RecyclerView) root.findViewById(R.id.recyclerView); + recyclerView.getItemAnimator().setSupportsChangeAnimations(false); layoutManager = new LinearLayoutManager(getActivity()); recyclerView.setLayoutManager(layoutManager); recyclerView.addItemDecoration(new HorizontalDividerItemDecoration.Builder(getActivity()).build()); diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java b/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java index 3817d3361..892e5ff38 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java @@ -29,6 +29,16 @@ public class FeedItemUtil { return -1; } + public static int indexOfItemWithMediaId(List<FeedItem> items, long mediaId) { + for(int i=0; i < items.size(); i++) { + FeedItem item = items.get(i); + if(item != null && item.getMedia() != null && item.getMedia().getId() == mediaId) { + return i; + } + } + return -1; + } + public static long[] getIds(FeedItem... items) { if(items == null || items.length == 0) { return new long[0]; |