RecycleView建立不同item

众所周知,现在recycleview也已经退出好久了。各种封装库也出现好多了。这里推荐下hongyang大神的。
http://blog.csdn.net/lmj623565791/article/details/51854533

这里是自己实现的一个小demo

看效果图:

使用过listview的都知道,就是根据不同的viewtype 加载不同的xml布局。接下来实现。

    //这里注意  泛型的类型
    public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    private final Context context;
    private static final int ITEM_COUNT = 10;//这里模拟10个item布局

    private static final int TYPE_HEADER = 0;//header头部
    private static final int TYPE_ITEM = 1;//item布局
    private static final int TYPE_FOOTER = 2;//根布局

    public RecyclerViewAdapter(Context context) {
        this.context = context;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        if (viewType == TYPE_HEADER) {
            return new HeaderHolder(LayoutInflater.from(context).inflate(R.layout.recyclerview_header, parent, false));
        } else if (viewType == TYPE_FOOTER) {
            return new FooterHolder(LayoutInflater.from(context).inflate(R.layout.recycle_footer, parent, false));
        } else {
            return new ViewHolder(LayoutInflater.from(context).inflate(R.layout.recyclerview_item, parent, false));
        }
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        //这里没使用数据
    }

    @Override
    public int getItemCount() {
        return ITEM_COUNT;
    }

    /**
     * recycleview增加header什么的感觉确实比listview方便了好多
     *
     * @param position
     * @return
     */
    @Override
    public int getItemViewType(int position) {
        if (position == 0) {
            //第一个加载headerview
            return TYPE_HEADER;
        } else if (position == 9) {
            // 最后一个加载footerview
            return TYPE_FOOTER;
        } else {

            return TYPE_ITEM;
        }
    }

    /**
     * item的viewholder
     */
    public class ViewHolder extends RecyclerView.ViewHolder {
        //TextView tv1;
        //TextView tv2;

        public ViewHolder(View itemView) {
            super(itemView);
          //  tv1 = (TextView) itemView.findViewById(R.id.tv1_item);
          //  tv2 = (TextView) itemView.findViewById(R.id.tv2_item);
        }
    }

    /**
     * 头部viewholder
     */
    private class HeaderHolder extends RecyclerView.ViewHolder {
        //TextView tvHeader;

        public HeaderHolder(View itemView) {
            super(itemView);
            //tvHeader = (TextView) itemView.findViewById(R.id.tv_header);
        }
    }

    /**
     * 根部viewholder
     */
    private class FooterHolder extends RecyclerView.ViewHolder {

        public FooterHolder(View itemView) {
            super(itemView);
        }
    }
}

三个布局就不添加了。很简单。