notify profile list adapter when the currently selected profile changes
authorDamyan Ivanov <dam+mobileledger@ktnx.net>
Fri, 29 Mar 2019 11:45:44 +0000 (13:45 +0200)
committerDamyan Ivanov <dam+mobileledger@ktnx.net>
Fri, 29 Mar 2019 11:45:44 +0000 (13:45 +0200)
this seems to work when the profiles use a different theme because
in this case the activity is restarted (and adapter re-initializes)
but when the changed profiles use the same theme the change was not
reflected in the profile list

app/src/main/java/net/ktnx/mobileledger/ui/activity/MainActivity.java

index 86463aa..f61ebb0 100644 (file)
@@ -169,6 +169,20 @@ public class MainActivity extends ProfileThemedActivity {
                     fab.hide();
                 }
 
+                int old_index = -1;
+                int new_index = -1;
+                if (arg != null) {
+                    MobileLedgerProfile old = (MobileLedgerProfile) arg;
+                    old_index = Data.getProfileIndex(old);
+                    new_index = Data.getProfileIndex(profile);
+                }
+
+                if ((old_index != -1) && (new_index != -1)) {
+                    mProfileListAdapter.notifyItemChanged(old_index);
+                    mProfileListAdapter.notifyItemChanged(new_index);
+                }
+                else mProfileListAdapter.notifyDataSetChanged();
+
                 int newProfileTheme = profile.getThemeId();
                 if (newProfileTheme != Colors.profileThemeId) {
                     Log.d("profiles", String.format("profile theme %d → %d", Colors.profileThemeId,