ChatAdapter.java 4.23 KB
package com.cnlive.goldenline.ui.adapter;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.cnlive.goldenline.R;
import com.cnlive.goldenline.model.chat.RecyclerChat;
import com.cnlive.goldenline.ui.adapter.viewholder.chat.HolderChatLandscape;
import com.cnlive.goldenline.ui.adapter.viewholder.chat.HolderChatLandscapeGift;
import com.cnlive.goldenline.ui.adapter.viewholder.chat.HolderChatOther;
import com.cnlive.goldenline.ui.adapter.viewholder.chat.HolderChatSelf;
import com.cnlive.goldenline.ui.adapter.viewholder.chat.HolderChatWelcome;
import com.cnlive.goldenline.ui.adapter.viewholder.chat.HolderOtherGift;
import com.cnlive.goldenline.ui.adapter.viewholder.chat.HolderSelfGift;
import com.cnlive.goldenline.ui.base.CNBaseRecyclerAdapter;


/**
 * Created by xiansong on 2015/9/9.
 */
public class ChatAdapter extends CNBaseRecyclerAdapter<RecyclerChat> {

    private LayoutInflater layoutInflater;

    public ChatAdapter(Context context) {
        super(context);
        layoutInflater = LayoutInflater.from(context);
    }

    @Override
    public int getItemViewType(int position) {
        return getItem(position).getType();
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        RecyclerView.ViewHolder holder = null;
        View view;
        switch (viewType) {
            case RecyclerConfig.ITEM_TYPE_CHAT_OTHERS:
                view = layoutInflater.inflate(R.layout.recycler_item_chat_others, parent, false);
                holder = new HolderChatOther(view);
                break;
            case RecyclerConfig.ITEM_TYPE_CHAT_SELF:
                view = layoutInflater.inflate(R.layout.recycler_item_chat_self, parent, false);
                holder = new HolderChatSelf(view);
                break;
            case RecyclerConfig.ITEM_TYPE_CHAT_GIFT_OTHERS:
                view = layoutInflater.inflate(R.layout.recycler_item_chat_others, parent, false);
                holder = new HolderOtherGift(view);
                break;
            case RecyclerConfig.ITEM_TYPE_CHAT_GIFT_SELF:
                view = layoutInflater.inflate(R.layout.recycler_item_chat_self, parent, false);
                holder = new HolderSelfGift(view);
                break;
            case RecyclerConfig.ITEM_TYPE_CHAT_WELCOME:
                view = layoutInflater.inflate(R.layout.recycler_item_chat_welcome, parent, false);
                holder = new HolderChatWelcome(view);
                break;
            case RecyclerConfig.ITEM_TYPE_CHAT_LANDSCAPE:
                view = layoutInflater.inflate(R.layout.lv_chat_item_landscape, parent, false);
                holder = new HolderChatLandscape(view);
                break;
            case RecyclerConfig.ITEM_TYPE_CHAT_LANDSCAPE_GIFT:
                view = layoutInflater.inflate(R.layout.lv_chat_item_landscape, parent, false);
                holder = new HolderChatLandscapeGift(view);
                break;
        }
        return holder;
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        RecyclerChat item = getItem(position);
        switch (getItemViewType(position)) {
            case RecyclerConfig.ITEM_TYPE_CHAT_OTHERS:
                ((HolderChatOther) holder).setData(item);
                break;
            case RecyclerConfig.ITEM_TYPE_CHAT_SELF:
                ((HolderChatSelf) holder).setData(item);
                break;
            case RecyclerConfig.ITEM_TYPE_CHAT_GIFT_OTHERS:
                ((HolderOtherGift) holder).setData(item);
                break;
            case RecyclerConfig.ITEM_TYPE_CHAT_GIFT_SELF:
                ((HolderSelfGift) holder).setData(item);
                break;
            case RecyclerConfig.ITEM_TYPE_CHAT_WELCOME:
                ((HolderChatWelcome) holder).setData(item);
                break;
            case RecyclerConfig.ITEM_TYPE_CHAT_LANDSCAPE:
                ((HolderChatLandscape) holder).setData(item);
                break;
            case RecyclerConfig.ITEM_TYPE_CHAT_LANDSCAPE_GIFT:
                ((HolderChatLandscapeGift) holder).setData(item);
                break;
        }
    }
}