diff options
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/adapter')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/adapter/EpisodeItemListAdapter.java | 22 | ||||
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java | 4 |
2 files changed, 21 insertions, 5 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/EpisodeItemListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/EpisodeItemListAdapter.java index 2f39b599f..d391f1c54 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/EpisodeItemListAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/EpisodeItemListAdapter.java @@ -42,14 +42,25 @@ public class EpisodeItemListAdapter extends RecyclerView.Adapter<EpisodeItemView notifyDataSetChanged(); } + @Override + public final int getItemViewType(int position) { + return R.id.episode_item_view_holder; + } + @NonNull @Override - public EpisodeItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + public final EpisodeItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { return new EpisodeItemViewHolder(mainActivityRef.get(), parent); } @Override - public void onBindViewHolder(EpisodeItemViewHolder holder, int pos) { + public final void onBindViewHolder(EpisodeItemViewHolder holder, int pos) { + // Reset state of recycled views + holder.coverHolder.setVisibility(View.VISIBLE); + holder.dragHandle.setVisibility(View.GONE); + + beforeBindViewHolder(holder, pos); + FeedItem item = episodes.get(pos); holder.bind(item); holder.itemView.setOnLongClickListener(v -> { @@ -65,9 +76,16 @@ public class EpisodeItemListAdapter extends RecyclerView.Adapter<EpisodeItemView } }); holder.itemView.setOnCreateContextMenuListener(this); + afterBindViewHolder(holder, pos); holder.hideSeparatorIfNecessary(); } + protected void beforeBindViewHolder(EpisodeItemViewHolder holder, int pos) { + } + + protected void afterBindViewHolder(EpisodeItemViewHolder holder, int pos) { + } + /** * {@link #notifyItemChanged(int)} is final, so we can not override. * Calling {@link #notifyItemChanged(int)} may bind the item to a new ViewHolder and execute a transition. 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 14f537eb0..428a968c6 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java @@ -35,8 +35,7 @@ public class QueueRecyclerAdapter extends EpisodeItemListAdapter { @Override @SuppressLint("ClickableViewAccessibility") - public void onBindViewHolder(EpisodeItemViewHolder holder, int pos) { - super.onBindViewHolder(holder, pos); + protected void afterBindViewHolder(EpisodeItemViewHolder holder, int pos) { View.OnTouchListener startDragTouchListener = (v1, event) -> { if (MotionEventCompat.getActionMasked(event) == MotionEvent.ACTION_DOWN) { Log.d(TAG, "startDrag()"); @@ -56,7 +55,6 @@ public class QueueRecyclerAdapter extends EpisodeItemListAdapter { } holder.isInQueue.setVisibility(View.GONE); - holder.hideSeparatorIfNecessary(); } @Override |