diff options
author | H. Lehmann <ByteHamster@users.noreply.github.com> | 2019-11-12 19:29:58 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-12 19:29:58 +0100 |
commit | 36a18426590d3c6732ce2ecc755a45018b73c777 (patch) | |
tree | a5ecd221edbdef59da63c8d5485447258c3dc8d8 /app/src/main/java/de/danoeh/antennapod/adapter | |
parent | a3a5ac5de7cc1970560b680eb748294b536d28ed (diff) | |
parent | 62722b25045c20ad6a7e97595a508fb1dee8d93d (diff) | |
download | AntennaPod-36a18426590d3c6732ce2ecc755a45018b73c777.zip |
Merge pull request #3600 from ByteHamster/fix-currently-playing-update
Fixed position sometimes updated in wrong item
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/adapter')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesRecycleAdapter.java | 26 | ||||
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java | 31 |
2 files changed, 19 insertions, 38 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesRecycleAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesRecycleAdapter.java index fd669f3e6..ed1698ecf 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesRecycleAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesRecycleAdapter.java @@ -54,7 +54,6 @@ public class AllEpisodesRecycleAdapter extends RecyclerView.Adapter<AllEpisodesR private final boolean showOnlyNewEpisodes; private FeedItem selectedItem; - private Holder currentlyPlayingItem = null; private final int playingBackGroundColor; private final int normalBackGroundColor; @@ -172,7 +171,6 @@ public class AllEpisodesRecycleAdapter extends RecyclerView.Adapter<AllEpisodesR if (media.isCurrentlyPlaying()) { holder.container.setBackgroundColor(playingBackGroundColor); - currentlyPlayingItem = holder; } else { holder.container.setBackgroundColor(normalBackGroundColor); } @@ -202,22 +200,6 @@ public class AllEpisodesRecycleAdapter extends RecyclerView.Adapter<AllEpisodesR .load(); } - @Override - public void onBindViewHolder(@NonNull Holder holder, int pos, List<Object> payload) { - onBindViewHolder(holder, pos); - - if (holder == currentlyPlayingItem && payload.size() == 1 && payload.get(0) instanceof PlaybackPositionEvent) { - PlaybackPositionEvent event = (PlaybackPositionEvent) payload.get(0); - holder.progress.setProgress((int) (100.0 * event.getPosition() / event.getDuration())); - } - } - - public void notifyCurrentlyPlayingItemChanged(PlaybackPositionEvent event) { - if (currentlyPlayingItem != null && currentlyPlayingItem.getAdapterPosition() != RecyclerView.NO_POSITION) { - notifyItemChanged(currentlyPlayingItem.getAdapterPosition(), event); - } - } - @Nullable public FeedItem getSelectedItem() { return selectedItem; @@ -302,6 +284,14 @@ public class AllEpisodesRecycleAdapter extends RecyclerView.Adapter<AllEpisodesR FeedItemMenuHandler.onPrepareMenu(contextMenuInterface, item); } + public boolean isCurrentlyPlayingItem() { + return item.getMedia() != null && item.getMedia().isCurrentlyPlaying(); + } + + public void notifyPlaybackPositionUpdated(PlaybackPositionEvent event) { + progress.setProgress((int) (100.0 * event.getPosition() / event.getDuration())); + } + } public interface ItemAccess { diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java index 42f009c85..ddfcfe0d3 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java @@ -61,7 +61,6 @@ public class QueueRecyclerAdapter extends RecyclerView.Adapter<QueueRecyclerAdap private boolean locked; private FeedItem selectedItem; - private ViewHolder currentlyPlayingItem = null; private final int playingBackGroundColor; private final int normalBackGroundColor; @@ -84,11 +83,13 @@ public class QueueRecyclerAdapter extends RecyclerView.Adapter<QueueRecyclerAdap notifyDataSetChanged(); } + @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.queue_listitem, parent, false); return new ViewHolder(view); } + @Override public void onBindViewHolder(ViewHolder holder, int pos) { FeedItem item = itemAccess.getItem(pos); holder.bind(item); @@ -98,18 +99,6 @@ public class QueueRecyclerAdapter extends RecyclerView.Adapter<QueueRecyclerAdap }); } - @Override - public void onBindViewHolder(@NonNull ViewHolder holder, int pos, List<Object> payload) { - onBindViewHolder(holder, pos); - - if (holder == currentlyPlayingItem && payload.size() == 1 && payload.get(0) instanceof PlaybackPositionEvent) { - PlaybackPositionEvent event = (PlaybackPositionEvent) payload.get(0); - holder.progressBar.setProgress((int) (100.0 * event.getPosition() / event.getDuration())); - holder.progressLeft.setText(Converter.getDurationStringLong(event.getPosition())); - holder.progressRight.setText(Converter.getDurationStringLong(event.getDuration())); - } - } - @Nullable public FeedItem getSelectedItem() { return selectedItem; @@ -125,12 +114,6 @@ public class QueueRecyclerAdapter extends RecyclerView.Adapter<QueueRecyclerAdap return itemAccess.getCount(); } - public void notifyCurrentlyPlayingItemChanged(PlaybackPositionEvent event) { - if (currentlyPlayingItem != null && currentlyPlayingItem.getAdapterPosition() != RecyclerView.NO_POSITION) { - notifyItemChanged(currentlyPlayingItem.getAdapterPosition(), event); - } - } - public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnCreateContextMenuListener, @@ -310,7 +293,6 @@ public class QueueRecyclerAdapter extends RecyclerView.Adapter<QueueRecyclerAdap if(media.isCurrentlyPlaying()) { container.setBackgroundColor(playingBackGroundColor); - currentlyPlayingItem = this; } else { container.setBackgroundColor(normalBackGroundColor); } @@ -330,6 +312,15 @@ public class QueueRecyclerAdapter extends RecyclerView.Adapter<QueueRecyclerAdap .load(); } + public boolean isCurrentlyPlayingItem() { + return item.getMedia() != null && item.getMedia().isCurrentlyPlaying(); + } + + public void notifyPlaybackPositionUpdated(PlaybackPositionEvent event) { + progressBar.setProgress((int) (100.0 * event.getPosition() / event.getDuration())); + progressLeft.setText(Converter.getDurationStringLong(event.getPosition())); + progressRight.setText(Converter.getDurationStringLong(event.getDuration())); + } } public interface ItemAccess { |