summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod/adapter
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2012-08-19 16:27:37 +0200
committerdaniel oeh <daniel.oeh@gmail.com>2012-08-19 16:27:37 +0200
commit9513099a10b44e5570505910764f9a1a71f2b14c (patch)
treebc1382c8d5f35187975ba0eaccae24490cb569c6 /src/de/danoeh/antennapod/adapter
parentc77247126892152caf644b34150244cb2cdb7d25 (diff)
downloadAntennaPod-9513099a10b44e5570505910764f9a1a71f2b14c.zip
Itemlists were not updating their content properly if "Display only
episodes'-preference was enabled
Diffstat (limited to 'src/de/danoeh/antennapod/adapter')
-rw-r--r--src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java144
1 files changed, 86 insertions, 58 deletions
diff --git a/src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java b/src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java
index 9dbc225d0..e6824b122 100644
--- a/src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java
+++ b/src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java
@@ -7,7 +7,10 @@ import de.danoeh.antennapod.feed.FeedItem;
import de.danoeh.antennapod.feed.FeedManager;
import de.danoeh.antennapod.storage.DownloadRequester;
import de.danoeh.antennapod.util.Converter;
+import de.danoeh.antennapod.util.EpisodeFilter;
+import de.danoeh.antennapod.PodcastApp;
import de.danoeh.antennapod.R;
+import android.widget.Adapter;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageButton;
@@ -27,6 +30,7 @@ public class FeedItemlistAdapter extends ArrayAdapter<FeedItem> {
private OnClickListener onButActionClicked;
private boolean showFeedtitle;
private int selectedItemIndex;
+ private List<FeedItem> objects;
public static final int SELECTION_NONE = -1;
@@ -34,6 +38,7 @@ public class FeedItemlistAdapter extends ArrayAdapter<FeedItem> {
List<FeedItem> objects, OnClickListener onButActionClicked,
boolean showFeedtitle) {
super(context, textViewResourceId, objects);
+ this.objects = objects;
this.onButActionClicked = onButActionClicked;
this.showFeedtitle = showFeedtitle;
this.selectedItemIndex = SELECTION_NONE;
@@ -75,74 +80,79 @@ public class FeedItemlistAdapter extends ArrayAdapter<FeedItem> {
} else {
holder = (Holder) convertView.getTag();
}
-
- if (position == selectedItemIndex) {
- convertView.setBackgroundColor(convertView.getResources().getColor(
- R.color.selection_background));
- } else {
- convertView.setBackgroundResource(0);
- }
-
- holder.title.setText(item.getTitle());
- if (showFeedtitle) {
- holder.feedtitle.setVisibility(View.VISIBLE);
- holder.feedtitle.setText(item.getFeed().getTitle());
- }
- if (!item.isRead()) {
- holder.title.setTypeface(Typeface.DEFAULT_BOLD);
- } else {
- holder.title.setTypeface(Typeface.DEFAULT);
- }
-
- holder.published.setText(convertView.getResources().getString(
- R.string.published_prefix)
- + DateUtils.formatSameDayTime(item.getPubDate().getTime(),
- System.currentTimeMillis(), DateFormat.SHORT,
- DateFormat.SHORT));
-
- if (item.getMedia() == null) {
- holder.encInfo.setVisibility(View.GONE);
- } else {
- holder.encInfo.setVisibility(View.VISIBLE);
- if (FeedManager.getInstance().isInQueue(item)) {
- holder.inPlaylist.setVisibility(View.VISIBLE);
+ if (!(getItemViewType(position) == Adapter.IGNORE_ITEM_VIEW_TYPE)) {
+ convertView.setVisibility(View.VISIBLE);
+ if (position == selectedItemIndex) {
+ convertView.setBackgroundColor(convertView.getResources()
+ .getColor(R.color.selection_background));
} else {
- holder.inPlaylist.setVisibility(View.GONE);
- }
- if (item.getMedia().isDownloaded()) {
- holder.lenSize.setText(convertView.getResources().getString(
- R.string.length_prefix)
- + Converter.getDurationStringLong(item.getMedia()
- .getDuration()));
- holder.downloaded.setVisibility(View.VISIBLE);
- } else {
- holder.lenSize.setText(convertView.getResources().getString(
- R.string.size_prefix)
- + Converter.byteToString(item.getMedia().getSize()));
- holder.downloaded.setVisibility(View.GONE);
+ convertView.setBackgroundResource(0);
}
- if (DownloadRequester.getInstance().isDownloadingFile(
- item.getMedia())) {
- holder.downloading.setVisibility(View.VISIBLE);
+ holder.title.setText(item.getTitle());
+ if (showFeedtitle) {
+ holder.feedtitle.setVisibility(View.VISIBLE);
+ holder.feedtitle.setText(item.getFeed().getTitle());
+ }
+ if (!item.isRead()) {
+ holder.title.setTypeface(Typeface.DEFAULT_BOLD);
} else {
- holder.downloading.setVisibility(View.GONE);
+ holder.title.setTypeface(Typeface.DEFAULT);
}
- String type = item.getMedia().getMime_type();
+ holder.published.setText(convertView.getResources().getString(
+ R.string.published_prefix)
+ + DateUtils.formatSameDayTime(item.getPubDate().getTime(),
+ System.currentTimeMillis(), DateFormat.SHORT,
+ DateFormat.SHORT));
- if (type.startsWith("audio")) {
- holder.type.setImageResource(R.drawable.type_audio);
- } else if (type.startsWith("video")) {
- holder.type.setImageResource(R.drawable.type_video);
+ if (item.getMedia() == null) {
+ holder.encInfo.setVisibility(View.GONE);
} else {
- holder.type.setImageBitmap(null);
+ holder.encInfo.setVisibility(View.VISIBLE);
+ if (FeedManager.getInstance().isInQueue(item)) {
+ holder.inPlaylist.setVisibility(View.VISIBLE);
+ } else {
+ holder.inPlaylist.setVisibility(View.GONE);
+ }
+ if (item.getMedia().isDownloaded()) {
+ holder.lenSize.setText(convertView.getResources()
+ .getString(R.string.length_prefix)
+ + Converter.getDurationStringLong(item.getMedia()
+ .getDuration()));
+ holder.downloaded.setVisibility(View.VISIBLE);
+ } else {
+ holder.lenSize
+ .setText(convertView.getResources().getString(
+ R.string.size_prefix)
+ + Converter.byteToString(item.getMedia()
+ .getSize()));
+ holder.downloaded.setVisibility(View.GONE);
+ }
+
+ if (DownloadRequester.getInstance().isDownloadingFile(
+ item.getMedia())) {
+ holder.downloading.setVisibility(View.VISIBLE);
+ } else {
+ holder.downloading.setVisibility(View.GONE);
+ }
+
+ String type = item.getMedia().getMime_type();
+
+ if (type.startsWith("audio")) {
+ holder.type.setImageResource(R.drawable.type_audio);
+ } else if (type.startsWith("video")) {
+ holder.type.setImageResource(R.drawable.type_video);
+ } else {
+ holder.type.setImageBitmap(null);
+ }
}
- }
-
- holder.butAction.setFocusable(false);
- holder.butAction.setOnClickListener(onButActionClicked);
+ holder.butAction.setFocusable(false);
+ holder.butAction.setOnClickListener(onButActionClicked);
+ } else {
+ convertView.setVisibility(View.GONE);
+ }
return convertView;
}
@@ -169,4 +179,22 @@ 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);
+ }
+ }
+
}