package org.rocko.demos.stff.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import org.rocko.demos.stff.R;
import org.rocko.demos.stff.adapter.viewholder.RecylerHeaderViewHolder;
import org.rocko.demos.stff.adapter.viewholder.RecylerItemViewHolder;
import java.util.List;
/**
* Created by Rocko on 2015/2/23 23:03
*/
public class RecyclerAdapter extends RecyclerView.Adapter {
private static final int TYPE_HEADER = 2;
private static final int TYPE_ITEM = 1;
private List<String> mItemList;
public RecyclerAdapter(List<String> itemList) {
mItemList = itemList;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Context context = parent.getContext();
if (viewType == TYPE_ITEM) {
View view = LayoutInflater.from(context).inflate(R.layout.item_recycler, parent, false);
return RecylerItemViewHolder.newInstance(view);
} else if (viewType == TYPE_HEADER) {
View header = LayoutInflater.from(context).inflate(R.layout.item_header, parent, false);
return new RecylerHeaderViewHolder(header);
}
throw new RuntimeException("There is no type that match the type " + viewType + "...");
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
if (getItemViewType(position) == TYPE_HEADER) {
return;
}
RecylerItemViewHolder holder = (RecylerItemViewHolder) viewHolder;
String itemText = mItemList.get(position - 1);
holder.setmItemText(itemText);
}
@Override
public int getItemCount() {
return getBaseCount() + 1;
}
private int getBaseCount() {
return mItemList == null ? 0 : mItemList.size();
}
@Override
public int getItemViewType(int position) {
if (position == 0) {
return TYPE_HEADER;
}
return TYPE_ITEM;
}
}