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