SimpleStringRecyclerViewAdapter.java revision 4a58e0859ab43f004d44868ff48589e329a80cb5
14a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes/*
24a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes * Copyright (C) 2015 The Android Open Source Project
34a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes *
44a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes * Licensed under the Apache License, Version 2.0 (the "License");
54a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes * you may not use this file except in compliance with the License.
64a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes * You may obtain a copy of the License at
74a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes *
84a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes *      http://www.apache.org/licenses/LICENSE-2.0
94a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes *
104a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes * Unless required by applicable law or agreed to in writing, software
114a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes * distributed under the License is distributed on an "AS IS" BASIS,
124a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes * See the License for the specific language governing permissions and
144a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes * limitations under the License.
154a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes */
164a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes
174a58e0859ab43f004d44868ff48589e329a80cb5Chris Banespackage com.example.android.support.design.widget;
184a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes
194a58e0859ab43f004d44868ff48589e329a80cb5Chris Banesimport com.example.android.support.design.R;
204a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes
214a58e0859ab43f004d44868ff48589e329a80cb5Chris Banesimport android.content.Context;
224a58e0859ab43f004d44868ff48589e329a80cb5Chris Banesimport android.graphics.Color;
234a58e0859ab43f004d44868ff48589e329a80cb5Chris Banesimport android.support.v7.widget.RecyclerView;
244a58e0859ab43f004d44868ff48589e329a80cb5Chris Banesimport android.text.Layout;
254a58e0859ab43f004d44868ff48589e329a80cb5Chris Banesimport android.util.TypedValue;
264a58e0859ab43f004d44868ff48589e329a80cb5Chris Banesimport android.view.LayoutInflater;
274a58e0859ab43f004d44868ff48589e329a80cb5Chris Banesimport android.view.ViewGroup;
284a58e0859ab43f004d44868ff48589e329a80cb5Chris Banesimport android.widget.TextView;
294a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes
304a58e0859ab43f004d44868ff48589e329a80cb5Chris Banesimport java.util.ArrayList;
314a58e0859ab43f004d44868ff48589e329a80cb5Chris Banesimport java.util.Collections;
324a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes
334a58e0859ab43f004d44868ff48589e329a80cb5Chris Banespublic class SimpleStringRecyclerViewAdapter
344a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes        extends RecyclerView.Adapter<SimpleStringRecyclerViewAdapter.ViewHolder> {
354a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes
364a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes    private int mBackground;
374a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes
384a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes    private ArrayList<String> mValues;
394a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes
404a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes    public static class ViewHolder extends RecyclerView.ViewHolder {
414a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes        public String mBoundString;
424a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes        public TextView mTextView;
434a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes
444a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes        public ViewHolder(TextView v) {
454a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes            super(v);
464a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes            mTextView = v;
474a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes        }
484a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes
494a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes        @Override
504a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes        public String toString() {
514a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes            return super.toString() + " '" + mTextView.getText();
524a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes        }
534a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes    }
544a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes
554a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes    public String getValueAt(int position) {
564a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes        return mValues.get(position);
574a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes    }
584a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes
594a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes    public SimpleStringRecyclerViewAdapter(Context context, String[] strings) {
604a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes        TypedValue val = new TypedValue();
614a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes        if (context.getTheme() != null) {
624a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes            context.getTheme().resolveAttribute(R.attr.selectableItemBackground, val, true);
634a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes        }
644a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes        mBackground = val.resourceId;
654a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes        mValues = new ArrayList<>();
664a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes        Collections.addAll(mValues, strings);
674a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes    }
684a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes
694a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes    @Override
704a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
714a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes        TextView textView = (TextView) LayoutInflater.from(parent.getContext())
724a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes                .inflate(android.R.layout.simple_list_item_1, parent, false);
734a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes        textView.setBackgroundResource(mBackground);
744a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes        return new ViewHolder(textView);
754a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes    }
764a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes
774a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes    @Override
784a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes    public void onBindViewHolder(ViewHolder holder, int position) {
794a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes        holder.mBoundString = mValues.get(position);
804a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes        holder.mTextView.setText(position + ": " + mValues.get(position));
814a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes    }
824a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes
834a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes    @Override
844a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes    public int getItemCount() {
854a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes        return mValues.size();
864a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes    }
874a58e0859ab43f004d44868ff48589e329a80cb5Chris Banes}
88