diff options
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/adapter')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java | 44 | ||||
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/adapter/SearchlistAdapter.java | 123 |
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); - } - -} |