diff options
Diffstat (limited to 'app/src')
3 files changed, 40 insertions, 10 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 67d248033..0b8bf09ec 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="de.danoeh.antennapod" - android:versionCode="1060009" - android:versionName="1.6.0.9"> + android:versionCode="1060101" + android:versionName="1.6.1.0"> <!-- Version code schema: "1.2.3-SNAPSHOT" -> 1020300 diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java index 3d259c285..6d19bfa6c 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java @@ -30,8 +30,8 @@ public class SubscriptionsAdapter extends BaseAdapter implements AdapterView.OnI /** placeholder object that indicates item should be added */ public static final Object ADD_ITEM_OBJ = new Object(); - /** the position in the view that holds the add item */ - private static final int ADD_POSITION = 0; + /** the position in the view that holds the add item; 0 is the first, -1 is the last position */ + private static final int ADD_POSITION = -1; private static final String TAG = "SubscriptionsAdapter"; private final WeakReference<MainActivity> mainActivityRef; @@ -42,8 +42,16 @@ public class SubscriptionsAdapter extends BaseAdapter implements AdapterView.OnI this.itemAccess = itemAccess; } + private int getAddTilePosition() { + if(ADD_POSITION < 0) { + return ADD_POSITION + getCount(); + } + return ADD_POSITION; + } + private int getAdjustedPosition(int origPosition) { - return origPosition - 1; + assert(origPosition != getAddTilePosition()); + return origPosition < getAddTilePosition() ? origPosition : origPosition - 1; } @Override @@ -53,15 +61,20 @@ public class SubscriptionsAdapter extends BaseAdapter implements AdapterView.OnI @Override public Object getItem(int position) { - if (position == ADD_POSITION) { + if (position == getAddTilePosition()) { return ADD_ITEM_OBJ; } return itemAccess.getItem(getAdjustedPosition(position)); } @Override + public boolean hasStableIds() { + return true; + } + + @Override public long getItemId(int position) { - if (position == ADD_POSITION) { + if (position == getAddTilePosition()) { return 0; } return itemAccess.getItem(getAdjustedPosition(position)).getId(); @@ -87,13 +100,17 @@ public class SubscriptionsAdapter extends BaseAdapter implements AdapterView.OnI holder = (Holder) convertView.getTag(); } - if (position == ADD_POSITION) { + if (position == getAddTilePosition()) { holder.feedTitle.setText("{md-add 500%}\n\n" + mainActivityRef.get().getString(R.string.add_feed_label)); holder.feedTitle.setVisibility(View.VISIBLE); // prevent any accidental re-use of old values (not sure how that would happen...) holder.count.setPrimaryText(""); // make it go away, we don't need it for add feed holder.count.setVisibility(View.INVISIBLE); + + // when this holder is reused, we could else end up with a cover image + Glide.clear(holder.imageView); + return convertView; } @@ -122,7 +139,7 @@ public class SubscriptionsAdapter extends BaseAdapter implements AdapterView.OnI @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { - if (position == ADD_POSITION) { + if (position == getAddTilePosition()) { mainActivityRef.get().loadChildFragment(new AddFeedFragment()); } else { Fragment fragment = ItemlistFragment.newInstance(getItemId(position)); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java index a314419ac..069aed9fd 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java @@ -27,6 +27,7 @@ import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; import de.danoeh.antennapod.core.util.FeedItemUtil; import rx.Observable; +import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; @@ -46,6 +47,7 @@ public class SubscriptionFragment extends Fragment { private int mPosition = -1; + private Subscription subscription; public SubscriptionFragment() { } @@ -88,8 +90,19 @@ public class SubscriptionFragment extends Fragment { EventDistributor.getInstance().register(contentUpdate); } + @Override + public void onDestroy() { + super.onDestroy(); + if(subscription != null) { + subscription.unsubscribe(); + } + } + private void loadSubscriptions() { - Observable.fromCallable(() -> DBReader.getNavDrawerData()) + if(subscription != null) { + subscription.unsubscribe(); + } + subscription = Observable.fromCallable(() -> DBReader.getNavDrawerData()) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(result -> { |