/* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.test.uibench.recyclerview; import android.content.Context; import android.graphics.Color; import android.support.v7.widget.RecyclerView; import android.util.TypedValue; import android.view.ViewGroup; import android.widget.TextView; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class RvBoxAdapter extends RecyclerView.Adapter<RvBoxAdapter.ViewHolder> { private int mBackground; private List<String> mValues; public static class ViewHolder extends RecyclerView.ViewHolder { public TextView mTextView; public ViewHolder(TextView v) { super(v); mTextView = v; } @Override public String toString() { return super.toString() + " '" + mTextView.getText(); } } public RvBoxAdapter(Context context, String[] strings) { TypedValue val = new TypedValue(); if (context.getTheme() != null) { context.getTheme().resolveAttribute( android.R.attr.selectableItemBackground, val, true); } mBackground = val.resourceId; mValues = new ArrayList<>(); Collections.addAll(mValues, strings); } @Override public RvBoxAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { final ViewHolder h = new ViewHolder(new TextView(parent.getContext())); h.mTextView.setMinimumHeight(128); h.mTextView.setPadding(20, 0, 20, 0); h.mTextView.setFocusable(true); h.mTextView.setBackgroundResource(mBackground); RecyclerView.LayoutParams lp = new RecyclerView.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); lp.leftMargin = 10; lp.rightMargin = 5; lp.topMargin = 20; lp.bottomMargin = 15; h.mTextView.setLayoutParams(lp); return h; } @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.mTextView.setText(position + ":" + mValues.get(position)); holder.mTextView.setMinHeight((200 + mValues.get(position).length() * 10)); holder.mTextView.setBackgroundColor(getBackgroundColor(position)); } private int getBackgroundColor(int position) { switch (position % 4) { case 0: return Color.LTGRAY; case 1: return Color.RED; case 2: return Color.DKGRAY; case 3: return Color.BLUE; } return Color.TRANSPARENT; } @Override public int getItemCount() { return mValues.size(); } }