Eliminate duplicated code in Settings for category headers

Change-Id: I5bdba2ad4f9e1987f9e818af9d5aa96a9d558f6b
diff --git a/src/com/android/settings/DataUsageSummary.java b/src/com/android/settings/DataUsageSummary.java
index 9a20882..3ee9e07 100644
--- a/src/com/android/settings/DataUsageSummary.java
+++ b/src/com/android/settings/DataUsageSummary.java
@@ -1811,8 +1811,8 @@
             final AppItem item = mItems.get(position);
             if (getItemViewType(position) == 1) {
                 if (convertView == null) {
-                    convertView = inflateCategoryHeader(LayoutInflater.from(parent.getContext()),
-                            parent);
+                    convertView = Utils.inflateCategoryHeader(LayoutInflater.from(
+                            parent.getContext()), parent);
                 }
 
                 final TextView title = (TextView) convertView.findViewById(android.R.id.title);
@@ -2503,14 +2503,6 @@
         return view;
     }
 
-    private static View inflateCategoryHeader(LayoutInflater inflater, ViewGroup root) {
-        final TypedArray a = inflater.getContext().obtainStyledAttributes(null,
-                com.android.internal.R.styleable.Preference,
-                com.android.internal.R.attr.preferenceCategoryStyle, 0);
-        final int resId = a.getResourceId(com.android.internal.R.styleable.Preference_layout, 0);
-        return inflater.inflate(resId, root, false);
-    }
-
     /**
      * Test if any networks are currently limited.
      */
diff --git a/src/com/android/settings/DeviceAdminSettings.java b/src/com/android/settings/DeviceAdminSettings.java
index 334d18f..0e3dc42 100644
--- a/src/com/android/settings/DeviceAdminSettings.java
+++ b/src/com/android/settings/DeviceAdminSettings.java
@@ -303,7 +303,7 @@
                 bindView(convertView, (DeviceAdminInfo) o);
             } else {
                 if (convertView == null) {
-                    convertView = newTitleView(parent);
+                    convertView = Utils.inflateCategoryHeader(mInflater, parent);
                 }
                 final TextView title = (TextView) convertView.findViewById(android.R.id.title);
                 title.setText((String)o);
@@ -322,15 +322,6 @@
             return v;
         }
 
-        private View newTitleView(ViewGroup parent) {
-            final TypedArray a = mInflater.getContext().obtainStyledAttributes(null,
-                    com.android.internal.R.styleable.Preference,
-                    com.android.internal.R.attr.preferenceCategoryStyle, 0);
-            final int resId = a.getResourceId(com.android.internal.R.styleable.Preference_layout,
-                    0);
-            return mInflater.inflate(resId, parent, false);
-        }
-
         private void bindView(View view, DeviceAdminInfo item) {
             final Activity activity = getActivity();
             ViewHolder vh = (ViewHolder) view.getTag();
diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java
index 2b086a6..18b51d9 100644
--- a/src/com/android/settings/MasterClear.java
+++ b/src/com/android/settings/MasterClear.java
@@ -209,7 +209,7 @@
                     .getAuthenticatorTypesAsUser(profileId);
             final int M = descs.length;
 
-            View titleView = newTitleView(contents, inflater);
+            View titleView = Utils.inflateCategoryHeader(inflater, contents);
             final TextView titleText = (TextView) titleView.findViewById(android.R.id.title);
             titleText.setText(userInfo.isManagedProfile() ? R.string.category_work
                     : R.string.category_personal);
@@ -275,13 +275,4 @@
         establishInitialState();
         return mContentView;
     }
-
-    private View newTitleView(ViewGroup parent, LayoutInflater inflater) {
-        final TypedArray a = inflater.getContext().obtainStyledAttributes(null,
-                com.android.internal.R.styleable.Preference,
-                com.android.internal.R.attr.preferenceCategoryStyle, 0);
-        final int resId = a.getResourceId(com.android.internal.R.styleable.Preference_layout,
-                0);
-        return inflater.inflate(resId, parent, false);
-    }
 }
diff --git a/src/com/android/settings/TrustedCredentialsSettings.java b/src/com/android/settings/TrustedCredentialsSettings.java
index e2b49d6..95a6bf4 100644
--- a/src/com/android/settings/TrustedCredentialsSettings.java
+++ b/src/com/android/settings/TrustedCredentialsSettings.java
@@ -321,7 +321,7 @@
             if (convertView == null) {
                 LayoutInflater inflater = (LayoutInflater) getActivity()
                         .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-                convertView = inflateCategoryHeader(inflater, parent);
+                convertView = Utils.inflateCategoryHeader(inflater, parent);
             }
 
             final TextView title = (TextView) convertView.findViewById(android.R.id.title);
@@ -354,15 +354,6 @@
         public int getListViewId(Tab tab) {
             return tab.mExpandableList;
         }
-        private View inflateCategoryHeader(LayoutInflater inflater, ViewGroup parent) {
-            final TypedArray a = inflater.getContext().obtainStyledAttributes(null,
-                    com.android.internal.R.styleable.Preference,
-                    com.android.internal.R.attr.preferenceCategoryStyle, 0);
-            final int resId = a.getResourceId(com.android.internal.R.styleable.Preference_layout,
-                    0);
-            return inflater.inflate(resId, parent, false);
-        }
-
     }
 
     private class TrustedCertificateAdapter extends BaseAdapter implements
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 6517ffe..5bc1a60 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -37,6 +37,7 @@
 import android.content.pm.Signature;
 import android.content.pm.UserInfo;
 import android.content.res.Resources;
+import android.content.res.TypedArray;
 import android.content.res.Resources.NotFoundException;
 import android.database.Cursor;
 import android.graphics.Bitmap;
@@ -65,6 +66,7 @@
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.util.Log;
+import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ListView;
@@ -1095,4 +1097,14 @@
         return null;
     }
 
+    public static View inflateCategoryHeader(LayoutInflater inflater, ViewGroup parent) {
+        final TypedArray a = inflater.getContext().obtainStyledAttributes(null,
+                com.android.internal.R.styleable.Preference,
+                com.android.internal.R.attr.preferenceCategoryStyle, 0);
+        final int resId = a.getResourceId(com.android.internal.R.styleable.Preference_layout,
+                0);
+        a.recycle();
+        return inflater.inflate(resId, parent, false);
+    }
+
 }