BaseLayoutManagerActivity.java revision 4fa1fe35a2e2f6aa8973bbb698f5191b7acc8d95
11f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar/* 21f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar * Copyright (C) 2014 The Android Open Source Project 31f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar * 41f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar * Licensed under the Apache License, Version 2.0 (the "License"); 51f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar * you may not use this file except in compliance with the License. 61f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar * You may obtain a copy of the License at 71f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar * 81f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar * http://www.apache.org/licenses/LICENSE-2.0 91f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar * 101f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar * Unless required by applicable law or agreed to in writing, software 111f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar * distributed under the License is distributed on an "AS IS" BASIS, 121f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar * See the License for the specific language governing permissions and 141f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar * limitations under the License. 151f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar */ 161f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 171f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyarpackage com.example.android.supportv7.widget; 181f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 191f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyarimport com.example.android.supportv7.Cheeses; 201f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyarimport com.example.android.supportv7.R; 211f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyarimport com.example.android.supportv7.widget.adapter.SimpleStringAdapter; 221f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 231f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyarimport android.app.Activity; 241f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyarimport android.content.Context; 251f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyarimport android.os.Bundle; 261f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyarimport android.support.v7.widget.LinearLayoutManager; 271f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyarimport android.support.v7.widget.RecyclerView; 281f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyarimport android.view.View; 291f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyarimport android.view.ViewGroup; 301f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyarimport android.widget.BaseAdapter; 311f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyarimport android.widget.CheckBox; 321f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyarimport android.widget.CompoundButton; 331f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyarimport android.widget.EditText; 341f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyarimport android.widget.Spinner; 351f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyarimport android.widget.TextView; 361f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 371f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar/** 381f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar * A simple activity that can be extended to demonstrate LayoutManagers. 391f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar * <p> 401f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar * It initializes a sample adapter and a list of configuration options. Extending activities can 411f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar * define the {@link ConfigToggle} list depending on its functionality. 421f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar */ 431f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyarabstract public class BaseLayoutManagerActivity<T extends RecyclerView.LayoutManager> 441f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar extends Activity { 451f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 461f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar protected T mLayoutManager; 471f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 481f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar protected RecyclerView mRecyclerView; 491f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 501f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar private ConfigToggle[] mConfigToggles; 511f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 521f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar @Override 531f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar protected void onCreate(Bundle savedInstanceState) { 541f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar super.onCreate(savedInstanceState); 551f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar setContentView(R.layout.activity_base_layout_manager); 561f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar initToggles(); 571f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar initRecyclerView(); 581f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar initSpinner(); 591f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 601f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 611f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar abstract protected T createLayoutManager(); 621f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 631f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar private void initRecyclerView() { 641f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view); 651f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar mRecyclerView.setHasFixedSize(true); 661f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar mLayoutManager = createLayoutManager(); 671f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar mRecyclerView.setLayoutManager(mLayoutManager); 681f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar mRecyclerView.setAdapter(createAdapter()); 691f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar mRecyclerView.getItemAnimator().setSupportsChangeAnimations(true); 701f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar onRecyclerViewInit(mRecyclerView); 711f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 721f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 731f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar protected void onRecyclerViewInit(RecyclerView recyclerView) { 741f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 751f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 761f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 771f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar protected RecyclerView.Adapter createAdapter() { 781f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar return new SimpleStringAdapter(this, Cheeses.sCheeseStrings) { 791f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar @Override 801f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar public SimpleStringAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, 811f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar int viewType) { 821f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar final SimpleStringAdapter.ViewHolder vh = super 831f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar .onCreateViewHolder(parent, viewType); 841f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar vh.itemView.setOnClickListener(new View.OnClickListener() { 851f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar @Override 861f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar public void onClick(View v) { 874fa1fe35a2e2f6aa8973bbb698f5191b7acc8d95Yigit Boyar final int pos = vh.getAdapterPosition(); 884fa1fe35a2e2f6aa8973bbb698f5191b7acc8d95Yigit Boyar if (pos != RecyclerView.NO_POSITION && pos + 1 < getItemCount()) { 891f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar swap(pos, pos + 1); 901f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 911f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 921f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar }); 931f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar return vh; 941f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 951f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar }; 961f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 971f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 981f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar private void initToggles() { 991f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar mConfigToggles = createConfigToggles(); 1001f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar RecyclerView configView = (RecyclerView) findViewById(R.id.config_recycler_view); 1011f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar configView.setAdapter(mConfigAdapter); 1021f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar configView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, 1031f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar false)); 1041f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar configView.setHasFixedSize(true); 1051f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 1061f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 1071f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar public void onScrollClicked(View view) { 1081f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar final EditText scrollOffset = (EditText) findViewById(R.id.scroll_offset); 1091f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar final CheckBox checkBox = (CheckBox) findViewById(R.id.enable_smooth_scroll); 1101f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar final Spinner spinner = (Spinner) findViewById(R.id.spinner); 1111f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 1121f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar Integer offset = null; 1131f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar String offsetString = scrollOffset.getText().toString(); 1141f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar try { 1151f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar offset = Integer.parseInt(offsetString); 1161f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } catch (NumberFormatException ex) { 1171f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 1181f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 1191f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar final boolean smooth = checkBox.isChecked(); 1201f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar if (offset == null) { 1211f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar scrollToPosition(smooth, spinner.getSelectedItemPosition()); 1221f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } else { 1231f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar scrollToPositionWithOffset(smooth, spinner.getSelectedItemPosition(), offset); 1241f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 1251f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 1261f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 1271f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar private void initSpinner() { 1281f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar final Spinner spinner = (Spinner) findViewById(R.id.spinner); 1291f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar spinner.setAdapter(new BaseAdapter() { 1301f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar @Override 1311f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar public int getCount() { 1321f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar return mRecyclerView.getAdapter().getItemCount(); 1331f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 1341f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 1351f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar @Override 1361f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar public Integer getItem(int position) { 1371f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar return position; 1381f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 1391f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 1401f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar @Override 1411f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar public long getItemId(int position) { 1421f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar return position; 1431f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 1441f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 1451f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar @Override 1461f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar public View getView(int position, View convertView, ViewGroup parent) { 1471f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar if (convertView == null) { 1481f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar convertView = new TextView(parent.getContext()); 1491f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 1501f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar ((TextView) convertView).setText(" " + position + " "); 1511f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar return convertView; 1521f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 1531f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar }); 1541f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 1551f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 1561f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar protected void scrollToPosition(boolean smooth, int position) { 1571f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar if (smooth) { 1581f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar mRecyclerView.smoothScrollToPosition(position); 1591f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } else { 1601f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar mRecyclerView.scrollToPosition(position); 1611f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 1621f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 1631f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 1641f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar protected void scrollToPositionWithOffset(boolean smooth, int position, int offset) { 1651f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar scrollToPosition(smooth, position); 1661f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 1671f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 1681f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar abstract ConfigToggle[] createConfigToggles(); 1691f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 1701f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar private class ConfigViewHolder extends RecyclerView.ViewHolder 1711f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar implements CompoundButton.OnCheckedChangeListener { 1721f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 1731f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar private CheckBox mCheckBox; 1741f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 1751f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar private ConfigToggle mConfigToggle; 1761f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 1771f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar public ConfigViewHolder(View itemView) { 1781f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar super(itemView); 1791f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar mCheckBox = (CheckBox) itemView; 1801f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar mCheckBox.setOnCheckedChangeListener(this); 1811f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 1821f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 1831f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar public void bind(ConfigToggle toggle) { 1841f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar mConfigToggle = toggle; 1851f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar mCheckBox.setText(toggle.getText()); 1861f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar mCheckBox.setChecked(toggle.isChecked()); 1871f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 1881f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 1891f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar @Override 1901f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 1911f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar if (mConfigToggle != null) { 1921f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar mConfigToggle.onChange(isChecked); 1931f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 1941f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 1951f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 1961f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 1971f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 1981f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar public abstract static class ConfigToggle { 1991f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 2001f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar private String mLabel; 2011f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 2021f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar protected ConfigToggle(Context context, int labelId) { 2031f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar mLabel = context.getResources().getString(labelId); 2041f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 2051f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 2061f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar public String getText() { 2071f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar return mLabel; 2081f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 2091f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 2101f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar abstract public boolean isChecked(); 2111f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 2121f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar abstract public void onChange(boolean newValue); 2131f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 2141f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 2151f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 2161f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar private RecyclerView.Adapter mConfigAdapter = new RecyclerView.Adapter<ConfigViewHolder>() { 2171f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar @Override 2181f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar public ConfigViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 2191f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar return new ConfigViewHolder(new CheckBox(parent.getContext())); 2201f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 2211f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 2221f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar @Override 2231f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar public void onBindViewHolder(ConfigViewHolder holder, int position) { 2241f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar ConfigToggle toggle = mConfigToggles[position]; 2251f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar holder.bind(toggle); 2261f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 2271f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar 2281f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar @Override 2291f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar public int getItemCount() { 2301f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar return mConfigToggles.length; 2311f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar } 2321f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar }; 2331f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar} 234