summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/adapter
diff options
context:
space:
mode:
authorH. Lehmann <ByteHamster@users.noreply.github.com>2020-03-26 17:17:52 +0100
committerGitHub <noreply@github.com>2020-03-26 17:17:52 +0100
commit11ef58f5920cadadeb8e3f34fce14ce8ff005dc8 (patch)
tree940b22047564d71f76e8a2340b1c2d0821ae2a15 /app/src/main/java/de/danoeh/antennapod/adapter
parent9637734000d399ffaa8739f5a3f1c1624b2a6a37 (diff)
parentb4b2b45247a92e7f7e43ab224598ef646608c7be (diff)
downloadAntennaPod-11ef58f5920cadadeb8e3f34fce14ce8ff005dc8.zip
Merge branch 'develop' into NotificationForAutoDownloads
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/adapter')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/ChaptersListAdapter.java101
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/StatisticsListAdapter.java7
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/gpodnet/PodcastListAdapter.java6
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java5
4 files changed, 53 insertions, 66 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/ChaptersListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/ChaptersListAdapter.java
index 1171acaa5..cb72a9150 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/ChaptersListAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/ChaptersListAdapter.java
@@ -5,37 +5,34 @@ import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
+import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.FitCenter;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestOptions;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.feed.Chapter;
-import de.danoeh.antennapod.core.feed.util.ImageResourceUtils;
import de.danoeh.antennapod.core.glide.ApGlideSettings;
-import de.danoeh.antennapod.core.util.ChapterUtils;
import de.danoeh.antennapod.core.util.Converter;
import de.danoeh.antennapod.core.util.EmbeddedChapterImage;
import de.danoeh.antennapod.core.util.IntentUtils;
import de.danoeh.antennapod.core.util.ThemeUtils;
import de.danoeh.antennapod.core.util.playback.Playable;
-public class ChaptersListAdapter extends ArrayAdapter<Chapter> {
- private static final String TAG = "ChapterListAdapter";
-
+public class ChaptersListAdapter extends RecyclerView.Adapter<ChaptersListAdapter.ChapterHolder> {
private Playable media;
private final Callback callback;
+ private final Context context;
private int currentChapterIndex = -1;
private boolean hasImages = false;
- public ChaptersListAdapter(Context context, int textViewResourceId, Callback callback) {
- super(context, textViewResourceId);
+ public ChaptersListAdapter(Context context, Callback callback) {
this.callback = callback;
+ this.context = context;
}
public void setMedia(Playable media) {
@@ -51,34 +48,10 @@ public class ChaptersListAdapter extends ArrayAdapter<Chapter> {
notifyDataSetChanged();
}
- @NonNull
- @Override
- public View getView(final int position, View convertView, @NonNull ViewGroup parent) {
- Holder holder;
+ @Override
+ public void onBindViewHolder(@NonNull ChapterHolder holder, int position) {
Chapter sc = getItem(position);
-
- // Inflate Layout
- if (convertView == null) {
- holder = new Holder();
- LayoutInflater inflater = (LayoutInflater) getContext()
- .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-
- convertView = inflater.inflate(R.layout.simplechapter_item, parent, false);
- holder.view = convertView;
- holder.title = convertView.findViewById(R.id.txtvTitle);
- holder.start = convertView.findViewById(R.id.txtvStart);
- holder.link = convertView.findViewById(R.id.txtvLink);
- holder.image = convertView.findViewById(R.id.imgvCover);
- holder.duration = convertView.findViewById(R.id.txtvDuration);
- holder.secondaryActionButton = convertView.findViewById(R.id.secondaryActionButton);
- holder.secondaryActionIcon = convertView.findViewById(R.id.secondaryActionIcon);
- convertView.setTag(holder);
- } else {
- holder = (Holder) convertView.getTag();
-
- }
-
holder.title.setText(sc.getTitle());
holder.start.setText(Converter.getDurationStringLong((int) sc
.getStart()));
@@ -89,7 +62,7 @@ public class ChaptersListAdapter extends ArrayAdapter<Chapter> {
} else {
duration = media.getDuration() - sc.getStart();
}
- holder.duration.setText(getContext().getString(R.string.chapter_duration,
+ holder.duration.setText(context.getString(R.string.chapter_duration,
Converter.getDurationStringLong((int) duration)));
if (sc.getLink() == null) {
@@ -97,9 +70,9 @@ public class ChaptersListAdapter extends ArrayAdapter<Chapter> {
} else {
holder.link.setVisibility(View.VISIBLE);
holder.link.setText(sc.getLink());
- holder.link.setOnClickListener(v -> IntentUtils.openInBrowser(getContext(), sc.getLink()));
+ holder.link.setOnClickListener(v -> IntentUtils.openInBrowser(context, sc.getLink()));
}
- holder.secondaryActionIcon.setImageResource(ThemeUtils.getDrawableFromAttr(getContext(), R.attr.av_play));
+ holder.secondaryActionIcon.setImageResource(ThemeUtils.getDrawableFromAttr(context, R.attr.av_play));
holder.secondaryActionButton.setOnClickListener(v -> {
if (callback != null) {
callback.onPlayChapterButtonClicked(position);
@@ -107,46 +80,40 @@ public class ChaptersListAdapter extends ArrayAdapter<Chapter> {
});
if (position == currentChapterIndex) {
- int playingBackGroundColor = ThemeUtils.getColorFromAttr(getContext(), R.attr.currently_playing_background);
- holder.view.setBackgroundColor(playingBackGroundColor);
+ int playingBackGroundColor = ThemeUtils.getColorFromAttr(context, R.attr.currently_playing_background);
+ holder.itemView.setBackgroundColor(playingBackGroundColor);
} else {
- holder.view.setBackgroundColor(ContextCompat.getColor(getContext(), android.R.color.transparent));
+ holder.itemView.setBackgroundColor(ContextCompat.getColor(context, android.R.color.transparent));
}
if (hasImages) {
holder.image.setVisibility(View.VISIBLE);
if (TextUtils.isEmpty(sc.getImageUrl())) {
- Glide.with(getContext()).clear(holder.image);
+ Glide.with(context).clear(holder.image);
} else {
- Glide.with(getContext())
+ Glide.with(context)
.load(EmbeddedChapterImage.getModelFor(media, position))
.apply(new RequestOptions()
.diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY)
.dontAnimate()
.transforms(new FitCenter(), new RoundedCorners((int)
- (4 * getContext().getResources().getDisplayMetrics().density))))
+ (4 * context.getResources().getDisplayMetrics().density))))
.into(holder.image);
}
} else {
holder.image.setVisibility(View.GONE);
}
-
- return convertView;
}
- static class Holder {
- View view;
- TextView title;
- TextView start;
- TextView link;
- TextView duration;
- ImageView image;
- View secondaryActionButton;
- ImageView secondaryActionIcon;
+ @NonNull
+ @Override
+ public ChapterHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ LayoutInflater inflater = LayoutInflater.from(context);
+ return new ChapterHolder(inflater.inflate(R.layout.simplechapter_item, parent, false));
}
@Override
- public int getCount() {
+ public int getItemCount() {
if (media == null || media.getChapters() == null) {
return 0;
}
@@ -160,6 +127,27 @@ public class ChaptersListAdapter extends ArrayAdapter<Chapter> {
return counter;
}
+ static class ChapterHolder extends RecyclerView.ViewHolder {
+ final TextView title;
+ final TextView start;
+ final TextView link;
+ final TextView duration;
+ final ImageView image;
+ final View secondaryActionButton;
+ final ImageView secondaryActionIcon;
+
+ public ChapterHolder(@NonNull View itemView) {
+ super(itemView);
+ title = itemView.findViewById(R.id.txtvTitle);
+ start = itemView.findViewById(R.id.txtvStart);
+ link = itemView.findViewById(R.id.txtvLink);
+ image = itemView.findViewById(R.id.imgvCover);
+ duration = itemView.findViewById(R.id.txtvDuration);
+ secondaryActionButton = itemView.findViewById(R.id.secondaryActionButton);
+ secondaryActionIcon = itemView.findViewById(R.id.secondaryActionIcon);
+ }
+ }
+
public void notifyChapterChanged(int newChapterIndex) {
currentChapterIndex = newChapterIndex;
notifyDataSetChanged();
@@ -169,7 +157,6 @@ public class ChaptersListAdapter extends ArrayAdapter<Chapter> {
return media.getDuration() > 0 && media.getDuration() < c.getStart();
}
- @Override
public Chapter getItem(int position) {
int i = 0;
for (Chapter chapter : media.getChapters()) {
@@ -181,7 +168,7 @@ public class ChaptersListAdapter extends ArrayAdapter<Chapter> {
}
}
}
- return super.getItem(position);
+ return null;
}
public interface Callback {
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/StatisticsListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/StatisticsListAdapter.java
index 5f019d1db..2b498cd47 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/StatisticsListAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/StatisticsListAdapter.java
@@ -38,13 +38,6 @@ public abstract class StatisticsListAdapter extends RecyclerView.Adapter<Recycle
return statisticsData.size() + 1;
}
- public StatisticsItem getItem(int position) {
- if (position == 0) {
- return null;
- }
- return statisticsData.get(position - 1);
- }
-
@Override
public int getItemViewType(int position) {
return position == 0 ? TYPE_HEADER : TYPE_FEED;
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/gpodnet/PodcastListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/gpodnet/PodcastListAdapter.java
index 62b22879a..3edc23e37 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/gpodnet/PodcastListAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/gpodnet/PodcastListAdapter.java
@@ -10,6 +10,8 @@ import android.widget.TextView;
import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.resource.bitmap.FitCenter;
+import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestOptions;
import org.apache.commons.lang3.StringUtils;
@@ -57,7 +59,9 @@ public class PodcastListAdapter extends ArrayAdapter<GpodnetPodcast> {
.placeholder(R.color.light_gray)
.error(R.color.light_gray)
.diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY)
- .fitCenter()
+ .transforms(new FitCenter(),
+ new RoundedCorners((int) (4 * convertView.getContext()
+ .getResources().getDisplayMetrics().density)))
.dontAnimate())
.into(holder.image);
}
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java
index 7917c264f..1968c0b62 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java
@@ -11,6 +11,8 @@ import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import com.bumptech.glide.load.resource.bitmap.FitCenter;
+import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestOptions;
import de.danoeh.antennapod.discovery.PodcastSearchResult;
@@ -83,7 +85,8 @@ public class ItunesAdapter extends ArrayAdapter<PodcastSearchResult> {
.apply(new RequestOptions()
.placeholder(R.color.light_gray)
.diskCacheStrategy(DiskCacheStrategy.NONE)
- .fitCenter()
+ .transforms(new FitCenter(),
+ new RoundedCorners((int) (4 * context.getResources().getDisplayMetrics().density)))
.dontAnimate())
.into(viewHolder.coverView);