From 8297d03ef8b4a38d1bc385e6efa4a26dab8cfcc4 Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Tue, 6 Nov 2012 22:28:42 +0100 Subject: [PATCH] Ignore invalid chapters --- .../activity/AudioplayerActivity.java | 2 +- .../adapter/ChapterListAdapter.java | 40 ++++++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/de/danoeh/antennapod/activity/AudioplayerActivity.java b/src/de/danoeh/antennapod/activity/AudioplayerActivity.java index 8d0b4a0f5..d6299e602 100644 --- a/src/de/danoeh/antennapod/activity/AudioplayerActivity.java +++ b/src/de/danoeh/antennapod/activity/AudioplayerActivity.java @@ -140,7 +140,7 @@ public class AudioplayerActivity extends MediaplayerActivity { }; sCChapterFragment.setListAdapter(new ChapterListAdapter( - activity, 0, media.getItem().getChapters())); + activity, 0, media.getItem().getChapters(), media)); return sCChapterFragment; default: diff --git a/src/de/danoeh/antennapod/adapter/ChapterListAdapter.java b/src/de/danoeh/antennapod/adapter/ChapterListAdapter.java index 16a868437..9357d0659 100644 --- a/src/de/danoeh/antennapod/adapter/ChapterListAdapter.java +++ b/src/de/danoeh/antennapod/adapter/ChapterListAdapter.java @@ -21,15 +21,21 @@ import android.widget.ArrayAdapter; import android.widget.TextView; import de.danoeh.antennapod.R; import de.danoeh.antennapod.feed.Chapter; +import de.danoeh.antennapod.feed.FeedMedia; import de.danoeh.antennapod.util.Converter; public class ChapterListAdapter extends ArrayAdapter { private static final String TAG = "ChapterListAdapter"; + private List chapters; + private FeedMedia media; + public ChapterListAdapter(Context context, int textViewResourceId, - List objects) { + List objects, FeedMedia media) { super(context, textViewResourceId, objects); + this.chapters = objects; + this.media = media; } @Override @@ -181,4 +187,36 @@ public class ChapterListAdapter extends ArrayAdapter { } }; + + @Override + public int getCount() { + // ignore invalid chapters + int counter = 0; + for (Chapter chapter : chapters) { + if (!ignoreChapter(chapter)) { + counter++; + } + } + return counter; + } + + private boolean ignoreChapter(Chapter c) { + return media.getDuration() > 0 && media.getDuration() < c.getStart(); + } + + @Override + public Chapter getItem(int position) { + int i = 0; + for (Chapter chapter : chapters) { + if (!ignoreChapter(chapter)) { + if (i == position) { + return chapter; + } else { + i++; + } + } + } + return super.getItem(position); + } + }