Guest User

Untitled

a guest
Jan 17th, 2020
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.46 KB | None | 0 0
  1. public class ChatRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
  2.     private static final int VIEW_TYPE_SYSTEM = 0;
  3.     private static final int VIEW_TYPE_OUTGOING = 1;
  4.     private static final int VIEW_TYPE_INBOX = 2;
  5.  
  6.     private List<ChatMessageModel> mMessages;
  7.     public ChatRecyclerAdapter(List<ChatMessageModel> messages) {
  8.         mMessages = messages;
  9.     }
  10.  
  11.     public void add(ChatMessageModel chatMessage) {
  12.         mMessages.add(chatMessage);
  13.         notifyItemInserted(mMessages.size() - 1);
  14.     }
  15.  
  16.     @Override
  17.     public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  18.         LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
  19.         RecyclerView.ViewHolder viewHolder = null;
  20.  
  21.         switch (viewType) {
  22.             case VIEW_TYPE_OUTGOING:
  23.                 View viewMessageOutgoing = layoutInflater.inflate(R.layout.item_chat_outgoing, parent, false);
  24.                 viewHolder = new OutgoingMessageViewHolder(viewMessageOutgoing);
  25.                 break;
  26.             case VIEW_TYPE_INBOX:
  27.                 View viewMessageInbox = layoutInflater.inflate(R.layout.item_chat_inbox, parent, false);
  28.                 viewHolder = new InboxMessageViewHolder(viewMessageInbox);
  29.                 break;
  30.         }
  31.         return viewHolder;
  32.     }
  33.  
  34.     @Override
  35.     public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
  36.         if (mMessages.get(position).getSenderId().equals(UserSession.getInstance().getCurrentUid())) {
  37.             configureOutgoingMessageViewHolder((OutgoingMessageViewHolder) holder, position);
  38.         } else {
  39.             configureInboxMessageViewHolder((InboxMessageViewHolder) holder, position);
  40.         }
  41.     }
  42.  
  43.     private void configureOutgoingMessageViewHolder(OutgoingMessageViewHolder outgoingMessageViewHolder, int position) {
  44.         ChatMessageModel chatMessage = mMessages.get(position);
  45.         Log.i("TEST", chatMessage.getMessage());
  46.  
  47.         outgoingMessageViewHolder.txtMessageText.setText(chatMessage.getMessage());
  48.     }
  49.  
  50.     private void configureInboxMessageViewHolder(InboxMessageViewHolder inboxMessageViewHolder, int position) {
  51.         ChatMessageModel chatMessage = mMessages.get(position);
  52.  
  53.         Log.i("TEST", chatMessage.getMessage());
  54.  
  55.         inboxMessageViewHolder.txtMessageText.setText(chatMessage.getMessage());
  56.     }
  57.  
  58.     @Override
  59.     public int getItemCount() {
  60.         if (mMessages != null) {
  61.             return mMessages.size();
  62.         }
  63.         return 0;
  64.     }
  65.  
  66.     @Override
  67.     public int getItemViewType(int position) {
  68.         if (mMessages.get(position).getSenderId().equals(UserSession.getInstance().getCurrentUid())) {
  69.             return VIEW_TYPE_OUTGOING;
  70.         } else {
  71.             return VIEW_TYPE_INBOX;
  72.         }
  73.     }
  74.  
  75.     private static class OutgoingMessageViewHolder extends RecyclerView.ViewHolder {
  76.         private TextView txtMessageText;
  77.         public OutgoingMessageViewHolder(View itemView) {
  78.             super(itemView);
  79.             txtMessageText = (TextView) itemView.findViewById(R.id.text_view_message_text);
  80.         }
  81.     }
  82.  
  83.     private static class InboxMessageViewHolder extends RecyclerView.ViewHolder {
  84.         private TextView txtMessageText;
  85.  
  86.         public InboxMessageViewHolder(View itemView) {
  87.             super(itemView);
  88.             txtMessageText = (TextView) itemView.findViewById(R.id.text_view_message_text);
  89.         }
  90.     }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment