summaryrefslogtreecommitdiff
path: root/app/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main')
-rw-r--r--app/src/main/AndroidManifest.xml4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java31
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java15
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 -> {