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