From 7ab8aadc8a2fdf48bcc6a6b749b30c798aa7d377 Mon Sep 17 00:00:00 2001 From: Sam Mortimer Date: Sun, 10 Dec 2017 15:10:38 -0800 Subject: [PATCH] Revert "Revert "lineage-sdk self-removing prefs: move reap from onBindViewHolder to onAttached"" This reverts commit 9f648b7046d1f921707c749b02b911ae126fd0fa. Change-Id: Ia102cfb55c16eb52e1412e815abd081d504fc96f --- .../lineageos/preference/ConstraintsHelper.java | 16 +++++----------- .../SelfRemovingDropDownPreference.java | 6 ++++++ .../preference/SelfRemovingListPreference.java | 6 ++++++ .../preference/SelfRemovingPreference.java | 6 ++++++ .../preference/SelfRemovingSwitchPreference.java | 6 ++++++ 5 files changed, 29 insertions(+), 11 deletions(-) diff --git a/sdk/src/java/lineageos/preference/ConstraintsHelper.java b/sdk/src/java/lineageos/preference/ConstraintsHelper.java index 35e1d5d1..b48b00ee 100644 --- a/sdk/src/java/lineageos/preference/ConstraintsHelper.java +++ b/sdk/src/java/lineageos/preference/ConstraintsHelper.java @@ -300,7 +300,7 @@ public class ConstraintsHelper { return fallbackAttr; } - public void onBindViewHolder(PreferenceViewHolder holder) { + public void onAttached() { checkIntent(); if (isAvailable() && mReplacesKey != null) { @@ -308,7 +308,9 @@ public class ConstraintsHelper { } Graveyard.get(mContext).summonReaper(mPref.getPreferenceManager()); + } + public void onBindViewHolder(PreferenceViewHolder holder) { if (!isAvailable()) { return; } @@ -325,7 +327,7 @@ public class ConstraintsHelper { * If we want to keep this at the preference level vs the fragment level, we need to * collate all the preferences that need to be removed when attached to the * hierarchy, then purge them all when loading is complete. The Graveyard keeps track - * of this, and will reap the dead during the first call to onBindViewHolder. + * of this, and will reap the dead when onAttached is called. */ private static class Graveyard { @@ -370,20 +372,12 @@ public class ConstraintsHelper { return null; } - private void removePreference(PreferenceManager mgr, Preference pref) { - final PreferenceGroup group = getParent(pref, pref); - group.removePreference(pref); - if (group.getPreferenceCount() == 0) { - getParent(pref, group).removePreference(group); - } - } - public void summonReaper(PreferenceManager mgr) { synchronized (mDeathRow) { for (String dead : mDeathRow) { Preference deadPref = mgr.findPreference(dead); if (deadPref != null) { - removePreference(mgr, deadPref); + deadPref.setVisible(false); } } mDeathRow.clear(); diff --git a/sdk/src/java/lineageos/preference/SelfRemovingDropDownPreference.java b/sdk/src/java/lineageos/preference/SelfRemovingDropDownPreference.java index 76e73461..03097cfe 100644 --- a/sdk/src/java/lineageos/preference/SelfRemovingDropDownPreference.java +++ b/sdk/src/java/lineageos/preference/SelfRemovingDropDownPreference.java @@ -43,6 +43,12 @@ public class SelfRemovingDropDownPreference extends DropDownPreference { mConstraints = new ConstraintsHelper(context, null, this); } + @Override + public void onAttached() { + super.onAttached(); + mConstraints.onAttached(); + } + @Override public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); diff --git a/sdk/src/java/lineageos/preference/SelfRemovingListPreference.java b/sdk/src/java/lineageos/preference/SelfRemovingListPreference.java index d1d3ec5a..0b8c7985 100644 --- a/sdk/src/java/lineageos/preference/SelfRemovingListPreference.java +++ b/sdk/src/java/lineageos/preference/SelfRemovingListPreference.java @@ -43,6 +43,12 @@ public class SelfRemovingListPreference extends ListPreference { mConstraints = new ConstraintsHelper(context, null, this); } + @Override + public void onAttached() { + super.onAttached(); + mConstraints.onAttached(); + } + @Override public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); diff --git a/sdk/src/java/lineageos/preference/SelfRemovingPreference.java b/sdk/src/java/lineageos/preference/SelfRemovingPreference.java index a148a09c..5271f561 100644 --- a/sdk/src/java/lineageos/preference/SelfRemovingPreference.java +++ b/sdk/src/java/lineageos/preference/SelfRemovingPreference.java @@ -48,6 +48,12 @@ public class SelfRemovingPreference extends Preference { this(context, null); } + @Override + public void onAttached() { + super.onAttached(); + mConstraints.onAttached(); + } + @Override public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); diff --git a/sdk/src/java/lineageos/preference/SelfRemovingSwitchPreference.java b/sdk/src/java/lineageos/preference/SelfRemovingSwitchPreference.java index c8663227..a637f220 100644 --- a/sdk/src/java/lineageos/preference/SelfRemovingSwitchPreference.java +++ b/sdk/src/java/lineageos/preference/SelfRemovingSwitchPreference.java @@ -43,6 +43,12 @@ public class SelfRemovingSwitchPreference extends SwitchPreference { mConstraints = new ConstraintsHelper(context, null, this); } + @Override + public void onAttached() { + super.onAttached(); + mConstraints.onAttached(); + } + @Override public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder);