ChatRoomAdpter.java 6.81 KB
package com.cnlive.im.adapter;

import android.content.Context;
import android.database.Cursor;
import android.graphics.Color;
import android.net.Uri;
import android.provider.ContactsContract;
import android.provider.MediaStore;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.cnlive.im.R;
import com.cnlive.im.adapter.base.BaseRecyclerAdapter;
import com.cnlive.im.adapter.base.VoiceItemClickListener;
import com.cnlive.im.mode.ImagMessage;
import com.cnlive.im.mode.StringMessage;
import com.cnlive.im.mode.VoiceMessage;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;

/**
 * @author 陈硕
 * @time 2017/7/14  14:35
 * @desc ${TODD}
 */
public class ChatRoomAdpter extends BaseRecyclerAdapter {

    private int stringUser = 1;
    private int stringOppsite = 2;
    private int imaUser = 3;
    private int imaOppsite = 4;
    private int voiceUser = 5;
    private int voiceOppsite = 6;
    private Context mContext;
    private VoiceItemClickListener mVoiceItemClickListener;

    public ChatRoomAdpter(Context context) {
        super(context);
        this.mContext = context;

    }


    public void setonVoiceItemClickListener(VoiceItemClickListener voiveItemClickListener) {
        this.mVoiceItemClickListener = voiveItemClickListener;
    }

    @Override
    public int getItemViewType(int position) {
        Object o = mItems.get(position);
        if (o instanceof StringMessage) {
            StringMessage o1 = (StringMessage) o;
            boolean userSend = o1.isUserSend();
            if (userSend) return stringUser;
            else return stringOppsite;
        } else if (o instanceof ImagMessage) {
            ImagMessage o1 = (ImagMessage) o;
            if (o1.isUserSend()) return imaUser;
            else return imaOppsite;
        } else if (o instanceof VoiceMessage) {
            VoiceMessage o1 = (VoiceMessage) o;
            if (o1.isUserSend())
                return voiceUser;
            else return voiceOppsite;

        }
        return 0;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        if (viewType == imaUser) {
            return new ImaMessageHolder(LayoutInflater.from(mContext).inflate(R.layout.imag_layout_item_user, null));
        } else if (viewType == imaOppsite) {
            return new ImaMessageHolder(LayoutInflater.from(mContext).inflate(R.layout.imag_layout_item_oppsite, null));
        } else if (viewType == stringUser) {
            return new StringMessageHolder(LayoutInflater.from(mContext).inflate(R.layout.string_layout_item_user, null));
        } else if (viewType == stringOppsite) {
            return new StringMessageHolder(LayoutInflater.from(mContext).inflate(R.layout.string_layout_item_oppsite, null));
        } else if (viewType == voiceUser) {
            return new VoiceMessageHolder(LayoutInflater.from(mContext).inflate(R.layout.voice_layout_item_user, null));
        } else if (viewType == voiceOppsite) {
            return new VoiceMessageHolder(LayoutInflater.from(mContext).inflate(R.layout.voice_layout_item_oppsite, null));
        }
        return null;
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        if (holder instanceof StringMessageHolder) {
            StringMessageHolder holder1 = (StringMessageHolder) holder;
            Object o = mItems.get(position);
            StringMessage o1 = (StringMessage) o;
            holder1.msg_text.setText(o1.getCnMessage().getContent());
            holder1.user_name.setText(o1.getCnMessage().getUserInfo().getUserName());
            holder1.user_name.setTextColor(Color.parseColor("#d61d0c"));
            holder1.msg_text.setTextColor(Color.BLACK);
        } else if (holder instanceof ImaMessageHolder) {
            ImaMessageHolder holder1 = (ImaMessageHolder) holder;
            Object o = mItems.get(position);
            ImagMessage o1 = (ImagMessage) o;
            holder1.ima_user_name.setTextColor(Color.parseColor("#d61d0c"));
            holder1.img_content.getLayoutParams().height = 200;
            holder1.img_content.getLayoutParams().width = 200;
            holder1.img_content.setLayoutParams(holder1.img_content.getLayoutParams());
            Glide.with(mContext).load(o1.getCnImgMessage().getRemoteUri()).into(holder1.img_content);
            holder1.ima_user_name.setText(o1.getCnImgMessage().getUserInfo().getUserName());
        } else if (holder instanceof VoiceMessageHolder) {
            VoiceMessageHolder holder1 = (VoiceMessageHolder) holder;
            Object o = mItems.get(position);
            VoiceMessage o1 = (VoiceMessage) o;
            holder1.voice_user_name.setText(o1.getCnVoiceMessage().getUserInfo().getUserName());
            final Uri voiceUri = o1.getCnVoiceMessage().getVoiceUri();
            int duration = o1.getCnVoiceMessage().getVoiceTime();
            holder1.voice_duration.setText(String.valueOf(duration).concat("\""));
            holder1.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    mVoiceItemClickListener.onItemClick(voiceUri);
                }
            });
        }

    }

    public class StringMessageHolder extends RecyclerView.ViewHolder {
        private TextView user_name;
        private TextView msg_text;

        public StringMessageHolder(View itemView) {
            super(itemView);
            user_name = (TextView) itemView.findViewById(R.id.user_name);
            msg_text = (TextView) itemView.findViewById(R.id.msg_text);

        }
    }

    public class ImaMessageHolder extends RecyclerView.ViewHolder {

        private TextView ima_user_name;
        private ImageView img_content;

        public ImaMessageHolder(View itemView) {
            super(itemView);
            ima_user_name = (TextView) itemView.findViewById(R.id.img_user_name);
            img_content = (ImageView) itemView.findViewById(R.id.img_content);
        }
    }

    public class VoiceMessageHolder extends RecyclerView.ViewHolder {


        private TextView voice_user_name;
        private TextView voice_content;
        private TextView voice_duration;

        public VoiceMessageHolder(View itemView) {
            super(itemView);
            voice_user_name = (TextView) itemView.findViewById(R.id.voice_user_name);
            voice_content = (TextView) itemView.findViewById(R.id.voice_content);
            voice_duration = (TextView) itemView.findViewById(R.id.voice_duration);
        }
    }

}