1bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler/* 2bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler * Copyright (C) 2015 The Android Open Source Project 3bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler * 4bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler * Licensed under the Apache License, Version 2.0 (the "License"); 5bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler * you may not use this file except in compliance with the License. 6bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler * You may obtain a copy of the License at 7bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler * 8bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler * http://www.apache.org/licenses/LICENSE-2.0 9bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler * 10bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler * Unless required by applicable law or agreed to in writing, software 11bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler * distributed under the License is distributed on an "AS IS" BASIS, 12bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler * See the License for the specific language governing permissions and 14bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler * limitations under the License 15bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler */ 16bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 17bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantlerpackage android.support.v17.preference; 18bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 19bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantlerimport android.os.Bundle; 20bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantlerimport android.support.annotation.NonNull; 21bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantlerimport android.support.annotation.Nullable; 22bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantlerimport android.support.v14.preference.MultiSelectListPreference; 23bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantlerimport android.support.v17.leanback.widget.VerticalGridView; 24bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantlerimport android.support.v7.preference.DialogPreference; 25bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantlerimport android.support.v7.preference.ListPreference; 26bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantlerimport android.support.v7.widget.RecyclerView; 27bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantlerimport android.text.TextUtils; 28bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantlerimport android.view.LayoutInflater; 29bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantlerimport android.view.View; 30bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantlerimport android.view.ViewGroup; 31bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantlerimport android.widget.Checkable; 32bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantlerimport android.widget.TextView; 33bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 34bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantlerimport java.util.HashSet; 35bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantlerimport java.util.Set; 36bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 37bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantlerpublic class LeanbackListPreferenceDialogFragment extends LeanbackPreferenceDialogFragment { 38bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 39bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public static LeanbackListPreferenceDialogFragment newInstanceSingle(String key) { 40bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final Bundle args = new Bundle(5); 41bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler args.putString(ARG_KEY, key); 42bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 43bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final LeanbackListPreferenceDialogFragment 44bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler fragment = new LeanbackListPreferenceDialogFragment(); 45bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler fragment.setArguments(args); 46bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 47bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler return fragment; 48bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 49bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 50bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public static LeanbackListPreferenceDialogFragment newInstanceMulti(String key) { 51bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final Bundle args = new Bundle(5); 52bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler args.putString(ARG_KEY, key); 53bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 54bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final LeanbackListPreferenceDialogFragment 55bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler fragment = new LeanbackListPreferenceDialogFragment(); 56bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler fragment.setArguments(args); 57bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 58bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler return fragment; 59bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 60bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 61bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler @Override 62bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public void onCreate(Bundle savedInstanceState) { 63bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler super.onCreate(savedInstanceState); 64bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 65bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final DialogPreference preference = getPreference(); 66bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler if (!(preference instanceof ListPreference) && 67bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler !(preference instanceof MultiSelectListPreference)) { 68bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler throw new IllegalArgumentException("Preference must be a ListPreference or " + 69bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler "MultiSelectListPreference"); 70bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 71bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 72bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 73bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler @Override 74bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public @Nullable View onCreateView(LayoutInflater inflater, ViewGroup container, 75bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler Bundle savedInstanceState) { 76bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final View view = inflater.inflate(R.layout.leanback_list_preference_fragment, container, 77bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler false); 78bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final VerticalGridView verticalGridView = 79bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler (VerticalGridView) view.findViewById(android.R.id.list); 80bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 81bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler verticalGridView.setWindowAlignment(VerticalGridView.WINDOW_ALIGN_BOTH_EDGE); 82bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler verticalGridView.setFocusScrollStrategy(VerticalGridView.FOCUS_SCROLL_ALIGNED); 83bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler verticalGridView.setAdapter(onCreateAdapter()); 8442dc570def1b218404c5199b161a3ea90250af88Tony Mantler verticalGridView.requestFocus(); 85bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 86bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final DialogPreference preference = getPreference(); 87bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final CharSequence title = preference.getDialogTitle(); 88bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler if (!TextUtils.isEmpty(title)) { 89bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final TextView titleView = (TextView) view.findViewById(R.id.decor_title); 90bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler titleView.setText(title); 91bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 92bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 93bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final CharSequence message = preference.getDialogMessage(); 94bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler if (!TextUtils.isEmpty(message)) { 95bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final TextView messageView = (TextView) view.findViewById(android.R.id.message); 96bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler messageView.setVisibility(View.VISIBLE); 97bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler messageView.setText(message); 98bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 99bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 100bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler return view; 101bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 102bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 103bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public RecyclerView.Adapter onCreateAdapter() { 104bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final DialogPreference preference = getPreference(); 105bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler if (preference instanceof MultiSelectListPreference) { 106bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final MultiSelectListPreference pref = (MultiSelectListPreference) preference; 107bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final CharSequence[] entries = pref.getEntries(); 108bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final CharSequence[] entryValues = pref.getEntryValues(); 109bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final Set<String> initialSelections = pref.getValues(); 110bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler return new AdapterMulti(entries, entryValues, initialSelections); 111bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } else if (preference instanceof ListPreference) { 112bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final ListPreference pref = (ListPreference) preference; 113bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final CharSequence[] entries = pref.getEntries(); 114bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final CharSequence[] entryValues = pref.getEntryValues(); 115bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final String initialSelection = pref.getValue(); 116bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler return new AdapterSingle(entries, entryValues, initialSelection); 117bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } else { 118bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler throw new IllegalStateException("Unknown preference type"); 119bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 120bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 121bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 122bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public class AdapterSingle extends RecyclerView.Adapter<ViewHolder> 123bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler implements ViewHolder.OnItemClickListener { 124bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 125bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler private final CharSequence[] mEntries; 126bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler private final CharSequence[] mEntryValues; 127bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler private CharSequence mSelectedValue; 128bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 129bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public AdapterSingle(CharSequence[] entries, CharSequence[] entryValues, 130bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler CharSequence selectedValue) { 131bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler mEntries = entries; 132bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler mEntryValues = entryValues; 133bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler mSelectedValue = selectedValue; 134bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 135bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 136bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler @Override 137bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 138bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 139bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final View view = inflater.inflate(R.layout.leanback_list_preference_item_single, 140bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler parent, false); 141bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler return new ViewHolder(view, this); 142bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 143bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 144bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler @Override 145bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public void onBindViewHolder(ViewHolder holder, int position) { 146bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler holder.getWidgetView().setChecked(mEntryValues[position].equals(mSelectedValue)); 147bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler holder.getTitleView().setText(mEntries[position]); 148bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 149bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 150bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler @Override 151bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public int getItemCount() { 152bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler return mEntries.length; 153bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 154bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 155bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler @Override 156bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public void onItemClick(ViewHolder viewHolder) { 157bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final int index = viewHolder.getAdapterPosition(); 158bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final CharSequence entry = mEntryValues[index]; 159bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler mSelectedValue = entry; 160bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler ((ListPreference) getPreference()).setValue(entry.toString()); 161bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler getFragmentManager().popBackStack(); 162bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler notifyDataSetChanged(); 163bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 164bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 165bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 166bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public class AdapterMulti extends RecyclerView.Adapter<ViewHolder> 167bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler implements ViewHolder.OnItemClickListener { 168bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 169bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler private final CharSequence[] mEntries; 170bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler private final CharSequence[] mEntryValues; 171bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler private final Set<String> mSelections; 172bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 173bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public AdapterMulti(CharSequence[] entries, CharSequence[] entryValues, 174bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler Set<String> initialSelections) { 175bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler mEntries = entries; 176bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler mEntryValues = entryValues; 177bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler mSelections = new HashSet<>(initialSelections); 178bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 179bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 180bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler @Override 181bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 182bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 183bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final View view = inflater.inflate(R.layout.leanback_list_preference_item_multi, parent, 184bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler false); 185bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler return new ViewHolder(view, this); 186bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 187bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 188bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler @Override 189bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public void onBindViewHolder(ViewHolder holder, int position) { 190bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler holder.getWidgetView().setChecked( 191bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler mSelections.contains(mEntryValues[position].toString())); 192bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler holder.getTitleView().setText(mEntries[position]); 193bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 194bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 195bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler @Override 196bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public int getItemCount() { 197bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler return mEntries.length; 198bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 199bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 200bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler @Override 201bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public void onItemClick(ViewHolder viewHolder) { 202bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final int index = viewHolder.getAdapterPosition(); 203bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler final String entry = mEntryValues[index].toString(); 204bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler if (mSelections.contains(entry)) { 205bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler mSelections.remove(entry); 206bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } else { 207bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler mSelections.add(entry); 208bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 209bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler ((MultiSelectListPreference) getPreference()).setValues(mSelections); 210bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler notifyDataSetChanged(); 211bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 212bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 213bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 214bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 215bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 216bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public interface OnItemClickListener { 217bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler void onItemClick(ViewHolder viewHolder); 218bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 219bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 220bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler private final Checkable mWidgetView; 221bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler private final TextView mTitleView; 222bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler private final ViewGroup mContainer; 223bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler private final OnItemClickListener mListener; 224bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 225bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public ViewHolder(@NonNull View view, @NonNull OnItemClickListener listener) { 226bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler super(view); 227bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler mWidgetView = (Checkable) view.findViewById(R.id.button); 228bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler mContainer = (ViewGroup) view.findViewById(R.id.container); 229bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler mTitleView = (TextView) view.findViewById(android.R.id.title); 230bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler mContainer.setOnClickListener(this); 231bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler mListener = listener; 232bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 233bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 234bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public Checkable getWidgetView() { 235bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler return mWidgetView; 236bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 237bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 238bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public TextView getTitleView() { 239bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler return mTitleView; 240bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 241bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 242bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public ViewGroup getContainer() { 243bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler return mContainer; 244bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 245bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler 246bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler @Override 247bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler public void onClick(View v) { 248bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler mListener.onItemClick(this); 249bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 250bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler } 251bd4cbab53c68c95f62407cf872b7155a520748a0Tony Mantler} 252