Make onBindViewHolder public and hide the click listener

Change-Id: I76787d9243250b8c23a7a6aa694cfc6120d3c889
diff --git a/v14/preference/src/android/support/v14/preference/SwitchPreference.java b/v14/preference/src/android/support/v14/preference/SwitchPreference.java
index 330f81b..048bc6c 100644
--- a/v14/preference/src/android/support/v14/preference/SwitchPreference.java
+++ b/v14/preference/src/android/support/v14/preference/SwitchPreference.java
@@ -133,7 +133,7 @@
     }
 
     @Override
-    protected void onBindViewHolder(PreferenceViewHolder holder) {
+    public void onBindViewHolder(PreferenceViewHolder holder) {
         super.onBindViewHolder(holder);
 
         View checkableView = holder.findViewById(R.id.switchWidget);
diff --git a/v7/preference/src/android/support/v7/preference/CheckBoxPreference.java b/v7/preference/src/android/support/v7/preference/CheckBoxPreference.java
index 0e2219e..f49b0d6 100644
--- a/v7/preference/src/android/support/v7/preference/CheckBoxPreference.java
+++ b/v7/preference/src/android/support/v7/preference/CheckBoxPreference.java
@@ -68,7 +68,7 @@
     }
 
     @Override
-    protected void onBindViewHolder(PreferenceViewHolder holder) {
+    public void onBindViewHolder(PreferenceViewHolder holder) {
         super.onBindViewHolder(holder);
 
         View checkboxView = holder.findViewById(R.id.checkbox);
diff --git a/v7/preference/src/android/support/v7/preference/Preference.java b/v7/preference/src/android/support/v7/preference/Preference.java
index 90c495a..13373fd 100644
--- a/v7/preference/src/android/support/v7/preference/Preference.java
+++ b/v7/preference/src/android/support/v7/preference/Preference.java
@@ -76,7 +76,7 @@
  * @attr ref android.R.styleable#Preference_defaultValue
  * @attr ref android.R.styleable#Preference_shouldDisableView
  */
-public class Preference implements Comparable<Preference>, View.OnClickListener {
+public class Preference implements Comparable<Preference> {
     /**
      * Specify for {@link #setOrder(int)} if a specific order is not required.
      */
@@ -130,6 +130,13 @@
 
     private boolean mBaseMethodCalled;
 
+    private final View.OnClickListener mClickListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            performClick();
+        }
+    };
+
     /**
      * Interface definition for a callback to be invoked when the value of this
      * {@link Preference} has been changed by the user and is
@@ -461,8 +468,8 @@
      *               will be recycled, so you should not hold a reference to them after this method
      *               returns.
      */
-    protected void onBindViewHolder(PreferenceViewHolder holder) {
-        holder.itemView.setOnClickListener(this);
+    public void onBindViewHolder(PreferenceViewHolder holder) {
+        holder.itemView.setOnClickListener(mClickListener);
 
         final TextView titleView = (TextView) holder.findViewById(android.R.id.title);
         if (titleView != null) {
@@ -910,11 +917,6 @@
         return mOnClickListener;
     }
 
-    @Override
-    public void onClick(View v) {
-        performClick();
-    }
-
     /**
      * Called when a click should be performed.
      *
diff --git a/v7/preference/src/android/support/v7/preference/SwitchPreferenceCompat.java b/v7/preference/src/android/support/v7/preference/SwitchPreferenceCompat.java
index 4b8f99f..2e0e38b 100644
--- a/v7/preference/src/android/support/v7/preference/SwitchPreferenceCompat.java
+++ b/v7/preference/src/android/support/v7/preference/SwitchPreferenceCompat.java
@@ -131,7 +131,7 @@
     }
 
     @Override
-    protected void onBindViewHolder(PreferenceViewHolder holder) {
+    public void onBindViewHolder(PreferenceViewHolder holder) {
         super.onBindViewHolder(holder);
 
         View checkableView = holder.findViewById(R.id.switchWidget);