[Settings] Avoid rendering hidden preferences
Under dashboards with expand button, preferences are renderred even
not been expanded.
Avoid from rendering un-expanded preference can improve the performance
of dashboard display.
Bug: 141833767
Test: manual
Change-Id: I00c6f827a0b7b7cec6a6fd8c809b94ca1dce88bb
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index 07ba28f..80e5706 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -258,6 +258,18 @@
return 0;
}
+ /**
+ * Whether preference is allowing to be displayed to the user.
+ *
+ * @param preference to check if it can be displayed to the user (not hidding in expand area).
+ * @return {@code true} when preference is allowing to be displayed to the user.
+ * {@code false} when preference is hidden in expand area and not been displayed to the user.
+ */
+ protected boolean isPreferenceExpanded(Preference preference) {
+ return ((mAdapter == null)
+ || (mAdapter.getPreferenceAdapterPosition(preference) != RecyclerView.NO_POSITION));
+ }
+
protected void onDataSetChanged() {
highlightPreferenceIfNeeded();
updateEmptyView();