summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod/adapter
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/danoeh/antennapod/adapter')
-rw-r--r--src/de/danoeh/antennapod/adapter/AbstractFeedItemlistAdapter.java38
-rw-r--r--src/de/danoeh/antennapod/adapter/ActionButtonCallback.java6
-rw-r--r--src/de/danoeh/antennapod/adapter/ExternalFeedItemlistAdapter.java80
-rw-r--r--src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java36
4 files changed, 129 insertions, 31 deletions
diff --git a/src/de/danoeh/antennapod/adapter/AbstractFeedItemlistAdapter.java b/src/de/danoeh/antennapod/adapter/AbstractFeedItemlistAdapter.java
new file mode 100644
index 000000000..39908b5d8
--- /dev/null
+++ b/src/de/danoeh/antennapod/adapter/AbstractFeedItemlistAdapter.java
@@ -0,0 +1,38 @@
+package de.danoeh.antennapod.adapter;
+
+import java.util.List;
+
+import de.danoeh.antennapod.PodcastApp;
+import de.danoeh.antennapod.feed.FeedItem;
+import de.danoeh.antennapod.util.EpisodeFilter;
+import android.content.Context;
+import android.widget.ArrayAdapter;
+
+public abstract class AbstractFeedItemlistAdapter extends ArrayAdapter<FeedItem> {
+
+ private List<FeedItem> objects;
+
+ public AbstractFeedItemlistAdapter(Context context, int textViewResourceId,
+ List<FeedItem> objects) {
+ super(context, textViewResourceId, objects);
+ this.objects = objects;
+ }
+
+ @Override
+ public int getCount() {
+ if (PodcastApp.getInstance().displayOnlyEpisodes()) {
+ return EpisodeFilter.countItemsWithEpisodes(objects);
+ } else {
+ return super.getCount();
+ }
+ }
+
+ @Override
+ public FeedItem getItem(int position) {
+ if (PodcastApp.getInstance().displayOnlyEpisodes()) {
+ return EpisodeFilter.accessEpisodeByIndex(objects, position);
+ } else {
+ return super.getItem(position);
+ }
+ }
+}
diff --git a/src/de/danoeh/antennapod/adapter/ActionButtonCallback.java b/src/de/danoeh/antennapod/adapter/ActionButtonCallback.java
new file mode 100644
index 000000000..3ea83f377
--- /dev/null
+++ b/src/de/danoeh/antennapod/adapter/ActionButtonCallback.java
@@ -0,0 +1,6 @@
+package de.danoeh.antennapod.adapter;
+
+public interface ActionButtonCallback {
+ /** Is called when the action button of a list item has been pressed. */
+ abstract void onActionButtonPressed(int position);
+}
diff --git a/src/de/danoeh/antennapod/adapter/ExternalFeedItemlistAdapter.java b/src/de/danoeh/antennapod/adapter/ExternalFeedItemlistAdapter.java
new file mode 100644
index 000000000..58181152f
--- /dev/null
+++ b/src/de/danoeh/antennapod/adapter/ExternalFeedItemlistAdapter.java
@@ -0,0 +1,80 @@
+package de.danoeh.antennapod.adapter;
+
+import java.util.List;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+import android.widget.TextView;
+import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.asynctask.FeedImageLoader;
+import de.danoeh.antennapod.feed.FeedItem;
+
+/**
+ * Array adapter that should be used to display a list of FeedItems from several
+ * different feeds.
+ */
+public class ExternalFeedItemlistAdapter extends AbstractFeedItemlistAdapter {
+
+ ActionButtonCallback callback;
+
+ public ExternalFeedItemlistAdapter(Context context, int textViewResourceId,
+ List<FeedItem> objects,
+ ActionButtonCallback callback) {
+ super(context, textViewResourceId, objects);
+ this.callback = callback;
+ }
+
+ @Override
+ public View getView(final int position, View convertView, ViewGroup parent) {
+ Holder holder;
+ FeedItem item = getItem(position);
+
+ if (convertView == null) {
+ holder = new Holder();
+ LayoutInflater inflater = (LayoutInflater) getContext()
+ .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ convertView = inflater.inflate(R.layout.external_itemlist_item, null);
+ holder.title = (TextView) convertView
+ .findViewById(R.id.txtvTitle);
+ holder.feedImage = (ImageView) convertView
+ .findViewById(R.id.imgvFeedimage);
+ holder.butAction = (ImageButton) convertView
+ .findViewById(R.id.butAction);
+ convertView.setTag(holder);
+ } else {
+ holder = (Holder) convertView.getTag();
+ }
+
+ holder.title.setText(item.getTitle());
+ holder.feedImage.setTag(item.getFeed().getImage());
+ FeedImageLoader.getInstance().loadThumbnailBitmap(
+ item.getFeed().getImage(),
+ holder.feedImage,
+ (int) convertView.getResources().getDimension(
+ R.dimen.thumbnail_length));
+ holder.butAction.setFocusable(false);
+ holder.butAction.setOnClickListener(new OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ callback.onActionButtonPressed(position);
+ }
+ });
+
+ return convertView;
+
+ }
+
+ static class Holder {
+ TextView title;
+ ImageView feedImage;
+ ImageButton butAction;
+ }
+
+
+}
diff --git a/src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java b/src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java
index 7e9388ce3..052ff8f9c 100644
--- a/src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java
+++ b/src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java
@@ -3,7 +3,6 @@ package de.danoeh.antennapod.adapter;
import java.text.DateFormat;
import java.util.List;
-
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Typeface;
@@ -32,19 +31,17 @@ import de.danoeh.antennapod.util.Converter;
import de.danoeh.antennapod.util.EpisodeFilter;
import de.danoeh.antennapod.util.ThemeUtils;
-public class FeedItemlistAdapter extends ArrayAdapter<FeedItem> {
- private FeedItemlistAdapter.Callback callback;
+public class FeedItemlistAdapter extends AbstractFeedItemlistAdapter {
+ private ActionButtonCallback callback;
private boolean showFeedtitle;
private int selectedItemIndex;
- private List<FeedItem> objects;
public static final int SELECTION_NONE = -1;
public FeedItemlistAdapter(Context context, int textViewResourceId,
- List<FeedItem> objects, FeedItemlistAdapter.Callback callback,
+ List<FeedItem> objects, ActionButtonCallback callback,
boolean showFeedtitle) {
super(context, textViewResourceId, objects);
- this.objects = objects;
this.callback = callback;
this.showFeedtitle = showFeedtitle;
this.selectedItemIndex = SELECTION_NONE;
@@ -185,13 +182,13 @@ public class FeedItemlistAdapter extends ArrayAdapter<FeedItem> {
holder.butAction.setFocusable(false);
holder.butAction.setOnClickListener(new OnClickListener() {
-
+
@Override
public void onClick(View v) {
callback.onActionButtonPressed(position);
}
});
-
+
} else {
convertView.setVisibility(View.GONE);
}
@@ -221,27 +218,4 @@ public class FeedItemlistAdapter extends ArrayAdapter<FeedItem> {
notifyDataSetChanged();
}
- @Override
- public int getCount() {
- if (PodcastApp.getInstance().displayOnlyEpisodes()) {
- return EpisodeFilter.countItemsWithEpisodes(objects);
- } else {
- return super.getCount();
- }
- }
-
- @Override
- public FeedItem getItem(int position) {
- if (PodcastApp.getInstance().displayOnlyEpisodes()) {
- return EpisodeFilter.accessEpisodeByIndex(objects, position);
- } else {
- return super.getItem(position);
- }
- }
-
- public interface Callback {
- /** Is called when the action button of a list item has been pressed. */
- abstract void onActionButtonPressed(int position);
- }
-
}