summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/adapter
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/adapter')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java44
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/SearchlistAdapter.java123
2 files changed, 33 insertions, 134 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java
index 9e7778c12..a5cfcb3e7 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java
@@ -6,8 +6,12 @@ import android.widget.BaseAdapter;
import android.widget.ListView;
import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.core.event.PlaybackPositionEvent;
+import de.danoeh.antennapod.core.feed.Feed;
+import de.danoeh.antennapod.core.feed.FeedComponent;
import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.view.viewholder.EpisodeItemViewHolder;
+import de.danoeh.antennapod.view.viewholder.FeedComponentViewHolder;
+import de.danoeh.antennapod.view.viewholder.FeedViewHolder;
/**
* List adapter for items of feeds that the user has already subscribed to.
@@ -21,10 +25,8 @@ public class FeedItemlistAdapter extends BaseAdapter {
private int currentlyPlayingItem = -1;
- public FeedItemlistAdapter(MainActivity activity,
- ItemAccess itemAccess,
- boolean showIcons,
- boolean makePlayedItemsTransparent) {
+ public FeedItemlistAdapter(MainActivity activity, ItemAccess itemAccess,
+ boolean showIcons, boolean makePlayedItemsTransparent) {
super();
this.activity = activity;
this.itemAccess = itemAccess;
@@ -44,14 +46,38 @@ public class FeedItemlistAdapter extends BaseAdapter {
}
@Override
- public FeedItem getItem(int position) {
+ public FeedComponent getItem(int position) {
return itemAccess.getItem(position);
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
+ final FeedComponent item = getItem(position);
+ if (item instanceof Feed) {
+ return getView((Feed) item, convertView, parent);
+ } else {
+ final FeedItem feeditem = (FeedItem) item;
+ if (feeditem.getMedia() != null && feeditem.getMedia().isCurrentlyPlaying()) {
+ currentlyPlayingItem = position;
+ }
+ return getView(feeditem, convertView, parent);
+ }
+ }
+
+ private View getView(Feed item, View convertView, ViewGroup parent) {
+ FeedViewHolder holder;
+ if (convertView == null || !(convertView.getTag() instanceof FeedViewHolder)) {
+ holder = new FeedViewHolder(activity, parent);
+ } else {
+ holder = (FeedViewHolder) convertView.getTag();
+ }
+ holder.bind(item);
+ return holder.itemView;
+ }
+
+ private View getView(final FeedItem item, View convertView, ViewGroup parent) {
EpisodeItemViewHolder holder;
- if (convertView == null) {
+ if (convertView == null || !(convertView.getTag() instanceof EpisodeItemViewHolder)) {
holder = new EpisodeItemViewHolder(activity, parent);
} else {
holder = (EpisodeItemViewHolder) convertView.getTag();
@@ -61,7 +87,6 @@ public class FeedItemlistAdapter extends BaseAdapter {
holder.coverHolder.setVisibility(View.GONE);
}
- final FeedItem item = getItem(position);
holder.bind(item);
holder.dragHandle.setVisibility(View.GONE);
@@ -69,9 +94,6 @@ public class FeedItemlistAdapter extends BaseAdapter {
holder.itemView.setAlpha(1.0f);
}
- if (item.getMedia() != null && item.getMedia().isCurrentlyPlaying()) {
- currentlyPlayingItem = position;
- }
holder.hideSeparatorIfNecessary();
return holder.itemView;
}
@@ -91,7 +113,7 @@ public class FeedItemlistAdapter extends BaseAdapter {
public interface ItemAccess {
int getCount();
- FeedItem getItem(int position);
+ FeedComponent getItem(int position);
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/SearchlistAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/SearchlistAdapter.java
deleted file mode 100644
index d1615b410..000000000
--- a/app/src/main/java/de/danoeh/antennapod/adapter/SearchlistAdapter.java
+++ /dev/null
@@ -1,123 +0,0 @@
-package de.danoeh.antennapod.adapter;
-
-import android.content.Context;
-import android.os.Build;
-import android.text.Layout;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.ImageView;
-import android.widget.TextView;
-import com.bumptech.glide.Glide;
-import com.bumptech.glide.request.RequestOptions;
-import de.danoeh.antennapod.R;
-import de.danoeh.antennapod.core.feed.Feed;
-import de.danoeh.antennapod.core.feed.FeedComponent;
-import de.danoeh.antennapod.core.feed.FeedItem;
-import de.danoeh.antennapod.core.glide.ApGlideSettings;
-
-/**
- * List adapter for search activity.
- */
-public class SearchlistAdapter extends BaseAdapter {
-
- private final Context context;
- private final ItemAccess itemAccess;
-
-
- public SearchlistAdapter(Context context, ItemAccess itemAccess) {
- this.context = context;
- this.itemAccess = itemAccess;
- }
-
- @Override
- public int getCount() {
- return itemAccess.getCount();
- }
-
- @Override
- public FeedComponent getItem(int position) {
- return itemAccess.getItem(position);
- }
-
- @Override
- public long getItemId(int position) {
- return 0;
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- final Holder holder;
- FeedComponent component = getItem(position);
-
- // Inflate Layout
- if (convertView == null) {
- holder = new Holder();
- LayoutInflater inflater = (LayoutInflater) context
- .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-
- convertView = inflater.inflate(R.layout.searchlist_item, parent, false);
- holder.title = convertView.findViewById(R.id.txtvTitle);
- if(Build.VERSION.SDK_INT >= 23) {
- holder.title.setHyphenationFrequency(Layout.HYPHENATION_FREQUENCY_FULL);
- }
- holder.cover = convertView
- .findViewById(R.id.imgvFeedimage);
- holder.subtitle = convertView
- .findViewById(R.id.txtvSubtitle);
-
- convertView.setTag(holder);
- } else {
- holder = (Holder) convertView.getTag();
- }
- if (component.getClass() == Feed.class) {
- final Feed feed = (Feed) component;
- holder.title.setText(feed.getTitle());
- holder.subtitle.setVisibility(View.GONE);
-
- Glide.with(context)
- .load(feed.getImageLocation())
- .apply(new RequestOptions()
- .placeholder(R.color.light_gray)
- .error(R.color.light_gray)
- .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY)
- .fitCenter()
- .dontAnimate())
- .into(holder.cover);
-
- } else if (component.getClass() == FeedItem.class) {
- final FeedItem item = (FeedItem) component;
- holder.title.setText(item.getTitle());
- holder.subtitle.setVisibility(View.VISIBLE);
-
- convertView.setAlpha(item.isPlayed() ? 0.5f : 1.0f);
-
- Glide.with(context)
- .load(item.getFeed().getImageLocation())
- .apply(new RequestOptions()
- .placeholder(R.color.light_gray)
- .error(R.color.light_gray)
- .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY)
- .fitCenter()
- .dontAnimate())
- .into(holder.cover);
-
- }
-
- return convertView;
- }
-
- static class Holder {
- ImageView cover;
- TextView title;
- TextView subtitle;
- }
-
- public interface ItemAccess {
- int getCount();
-
- FeedComponent getItem(int position);
- }
-
-}