1e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar/*
2e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar * Copyright (C) 2014 The Android Open Source Project
3e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar *
4e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar * Licensed under the Apache License, Version 2.0 (the "License");
5e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar * you may not use this file except in compliance with the License.
6e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar * You may obtain a copy of the License at
7e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar *
8e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar *      http://www.apache.org/licenses/LICENSE-2.0
9e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar *
10e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar * Unless required by applicable law or agreed to in writing, software
11e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar * distributed under the License is distributed on an "AS IS" BASIS,
12e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar * See the License for the specific language governing permissions and
14e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar * limitations under the License.
15e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar */
16e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar
17e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyarpackage com.example.android.supportv7.widget.adapter;
18e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar
19e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyarimport android.content.Context;
201244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyarimport android.graphics.Color;
21e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyarimport android.support.v7.widget.RecyclerView;
22e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyarimport android.util.TypedValue;
23e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyarimport android.view.ViewGroup;
24e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyarimport android.widget.TextView;
25e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar
26e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyarimport java.util.ArrayList;
27e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyarimport java.util.Collections;
28a41c174e52ec211ef950259b274b120a705af438Yigit Boyarimport java.util.List;
29e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar
30e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyarpublic class SimpleStringAdapter extends RecyclerView.Adapter<SimpleStringAdapter.ViewHolder> {
31e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar
32e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar    private int mBackground;
33e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar
34a41c174e52ec211ef950259b274b120a705af438Yigit Boyar    private List<String> mValues;
35e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar
36e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar    public static class ViewHolder extends RecyclerView.ViewHolder {
371f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar        public String mBoundString;
381244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar        public TextView mTextView;
39e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar
40e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar        public ViewHolder(TextView v) {
41e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar            super(v);
421244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar            mTextView = v;
43e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar        }
44e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar
45e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar        @Override
46e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar        public String toString() {
471244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar            return super.toString() + " '" + mTextView.getText();
48e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar        }
49e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar    }
50e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar
511f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar    public String getValueAt(int position) {
521f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar        return mValues.get(position);
531f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar    }
541f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar
55e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar    public SimpleStringAdapter(Context context, String[] strings) {
56e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar        TypedValue val = new TypedValue();
57e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar        if (context.getTheme() != null) {
58e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar            context.getTheme().resolveAttribute(
59e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar                    android.R.attr.selectableItemBackground, val, true);
60e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar        }
61e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar        mBackground = val.resourceId;
62e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar        mValues = new ArrayList<String>();
63e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar        Collections.addAll(mValues, strings);
64e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar    }
65e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar
66e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar    public void swap(int pos1, int pos2) {
67e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar        String tmp = mValues.get(pos1);
68e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar        mValues.set(pos1, mValues.get(pos2));
69e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar        mValues.set(pos2, tmp);
70e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar        notifyItemRemoved(pos1);
71e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar        notifyItemInserted(pos2);
72e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar    }
73e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar
74e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar    @Override
75e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar    public SimpleStringAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
76e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar        final ViewHolder h = new ViewHolder(new TextView(parent.getContext()));
771244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar        h.mTextView.setMinimumHeight(128);
781244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar        h.mTextView.setPadding(20, 0, 20, 0);
791244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar        h.mTextView.setFocusable(true);
801244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar        h.mTextView.setBackgroundResource(mBackground);
811244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar        RecyclerView.LayoutParams lp = new RecyclerView.LayoutParams(
821244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar                ViewGroup.LayoutParams.WRAP_CONTENT,
831244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar                ViewGroup.LayoutParams.WRAP_CONTENT);
841244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar        lp.leftMargin = 10;
851244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar        lp.rightMargin = 5;
861244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar        lp.topMargin = 20;
871244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar        lp.bottomMargin = 15;
881244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar        h.mTextView.setLayoutParams(lp);
89e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar        return h;
90e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar    }
91e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar
92e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar    @Override
93e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar    public void onBindViewHolder(ViewHolder holder, int position) {
941f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar        holder.mBoundString = mValues.get(position);
951244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar        holder.mTextView.setText(position + ":" + mValues.get(position));
961244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar        holder.mTextView.setMinHeight((200 + mValues.get(position).length() * 10));
971244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar        holder.mTextView.setBackgroundColor(getBackgroundColor(position));
981244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar    }
991244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar
1001244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar    private int getBackgroundColor(int position) {
1011244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar        switch (position % 4) {
1021244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar            case 0: return Color.BLACK;
1031244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar            case 1: return Color.RED;
1041f30fc8732560027f364ad42bbc3f7db8aace8adYigit Boyar            case 2: return Color.DKGRAY;
1051244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar            case 3: return Color.BLUE;
1061244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar        }
1071244264d8066e64e90fa0b8088ffa50ae4624ca4Yigit Boyar        return Color.TRANSPARENT;
108e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar    }
109e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar
110e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar    @Override
111e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar    public int getItemCount() {
112e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar        return mValues.size();
113e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar    }
114a41c174e52ec211ef950259b274b120a705af438Yigit Boyar
115a41c174e52ec211ef950259b274b120a705af438Yigit Boyar    public List<String> getValues() {
116a41c174e52ec211ef950259b274b120a705af438Yigit Boyar        return mValues;
117a41c174e52ec211ef950259b274b120a705af438Yigit Boyar    }
118a41c174e52ec211ef950259b274b120a705af438Yigit Boyar
119a41c174e52ec211ef950259b274b120a705af438Yigit Boyar    public void setValues(List<String> values) {
120a41c174e52ec211ef950259b274b120a705af438Yigit Boyar        mValues = values;
121a41c174e52ec211ef950259b274b120a705af438Yigit Boyar    }
122e9f9a04c426e7423db0cd58ec8d2dc3ff2238a30Yigit Boyar}
123