package com.yqritc.recyclerviewflexibledivider.sample; import com.yqritc.recyclerviewflexibledivider.FlexibleDividerDecoration; import com.yqritc.recyclerviewflexibledivider.HorizontalDividerItemDecoration; import android.content.Context; import android.graphics.Color; import android.graphics.DashPathEffect; import android.graphics.Paint; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; /** * Created by yqritc on 2015/01/08. */ public class ComplexAdapter extends RecyclerView.Adapter<ComplexAdapter.ViewHolder> implements FlexibleDividerDecoration.PaintProvider, // FlexibleDividerDecoration.SizeProvider, // FlexibleDividerDecoration.ColorProvider, FlexibleDividerDecoration.VisibilityProvider, HorizontalDividerItemDecoration.MarginProvider { private static final int ITEM_SIZE = 20; private LayoutInflater mLayoutInflater; public ComplexAdapter(Context context) { super(); mLayoutInflater = LayoutInflater.from(context); } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = mLayoutInflater.inflate(R.layout.layout_sample_item, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.mSampleText.setText(String.valueOf(position)); } @Override public int getItemCount() { return ITEM_SIZE; } @Override public Paint dividerPaint(int position, RecyclerView parent) { Paint paint = new Paint(); switch (position % 10) { case 0: paint.setColor(Color.RED); paint.setStrokeWidth(30); break; case 1: paint.setColor(Color.MAGENTA); paint.setStrokeWidth(10); break; default: if (position % 2 == 0) { paint.setColor(Color.BLUE); paint.setAntiAlias(true); paint.setPathEffect(new DashPathEffect(new float[]{25.0f, 25.0f}, 0)); } else { paint.setColor(Color.GREEN); } paint.setStrokeWidth(2 + position); break; } return paint; } // @Override // public int dividerColor(int position, RecyclerView parent) { // switch (position % 10) { // case 0: // return Color.RED; // case 1: // return Color.MAGENTA; // default: // if (position % 2 == 0) { // return Color.BLUE; // } else { // return Color.GREEN; // } // } // } // // @Override // public int dividerSize(int position, RecyclerView parent) { // switch (position % 10) { // case 0: // return 30; // case 1: // return 10; // default: // return 2+position; // } // } @Override public boolean shouldHideDivider(int position, RecyclerView parent) { if (position == 14 || position == 15) { return true; } return false; } @Override public int dividerLeftMargin(int position, RecyclerView parent) { if (position < 10) { return position * 20; } else { return (20 - position) * 20; } } @Override public int dividerRightMargin(int position, RecyclerView parent) { if (position < 10) { return position * 20 + 20; } else { return (20 - position) * 20 + 20; } } static class ViewHolder extends RecyclerView.ViewHolder { TextView mSampleText; public ViewHolder(View view) { super(view); mSampleText = (TextView) view.findViewById(R.id.text_sample); } } }