package com.beloo.chipslayoutmanager.sample.ui.adapter; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.TextView; import java.util.List; import com.beloo.chipslayoutmanager.sample.ui.OnRemoveListener; import com.beloo.chipslayoutmanager.sample.R; public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> { private static String TAG = RecyclerViewAdapter.class.getSimpleName(); private int viewHolderCount; private final int ITEM_TYPE_DEFAULT = 0; private final int ITEM_TYPE_INCREASED = 1; private List<String> items; private OnRemoveListener onRemoveListener; public RecyclerViewAdapter(List<String> items, OnRemoveListener onRemoveListener) { this.items = items; this.onRemoveListener = onRemoveListener; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView; switch (viewType) { case ITEM_TYPE_INCREASED: itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_increased, parent, false); break; default: itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_simple, parent, false); break; } viewHolderCount++; // Timber.w(TAG, "created holders = " + viewHolderCount); return new ViewHolder(itemView); } @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.bindItem(items.get(position)); } @Override public int getItemViewType(int position) { String item = items.get(position); if (item.startsWith("!")) { return ITEM_TYPE_INCREASED; } return ITEM_TYPE_DEFAULT; } @Override public int getItemCount() { return items.size(); } class ViewHolder extends RecyclerView.ViewHolder { private TextView tvText; private ImageButton ibClose; ViewHolder(View itemView) { super(itemView); tvText = (TextView) itemView.findViewById(R.id.tvText); ibClose = (ImageButton) itemView.findViewById(R.id.ibClose); ibClose.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int position = getAdapterPosition(); if (position != -1) { onRemoveListener.onItemRemoved(position); } } }); } void bindItem(String text) { tvText.setText(text); } } }