Created
August 26, 2019 06:43
-
-
Save NikitiJ/072c96fbe349f0c77c97f07cff051ccf to your computer and use it in GitHub Desktop.
MessageItemAdapter
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class MessageItemAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { | |
private List<MessageModel> messages; | |
private String managerPhotoUrl; | |
public MessageItemAdapter(List<MessageModel> messages) { | |
this.messages = messages; | |
} | |
public void setManagerPhotoUrl(String url) { | |
if (!StringUtils.isBlank(url)) | |
this.managerPhotoUrl = url; | |
} | |
@Override | |
public int getItemViewType(int position) { | |
return messages.get(position).author; | |
} | |
@NonNull | |
@Override | |
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) { | |
View view; | |
switch (viewType) { | |
case 0: | |
view = LayoutInflater.from(viewGroup.getContext()) | |
.inflate(R.layout.layout_message_outgoing, viewGroup, false); | |
return new MessageOutgoingItemViewHolder(view); | |
case 1: | |
view = LayoutInflater.from(viewGroup.getContext()) | |
.inflate(R.layout.layout_message_incoming, viewGroup, false); | |
return new MessageIncomingItemViewHolder(view); | |
default: | |
view = LayoutInflater.from(viewGroup.getContext()) | |
.inflate(R.layout.layout_message_outgoing, viewGroup, false); | |
break; | |
} | |
return new MessageIncomingItemViewHolder(view); | |
} | |
@Override | |
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { | |
MessageModel messageModel = messages.get(position); | |
switch (holder.getItemViewType()) { | |
case 0: | |
MessageOutgoingItemViewHolder messageOutgoingItemViewHolder = (MessageOutgoingItemViewHolder) holder; | |
messageOutgoingItemViewHolder.bind(messageModel); | |
break; | |
case 1: | |
MessageIncomingItemViewHolder messageIncomingItemViewHolder = (MessageIncomingItemViewHolder) holder; | |
messageIncomingItemViewHolder.bind(messageModel, managerPhotoUrl); | |
break; | |
} | |
} | |
@Override | |
public int getItemCount() { | |
return messages.size(); | |
} | |
public void addItems(List<MessageModel> newMessages) { | |
if (newMessages != null && newMessages.size() != 0) { | |
messages.addAll(newMessages); | |
notifyDataSetChanged(); | |
} | |
} | |
public void refreshMessages(List<MessageModel> newMessages) { | |
if (newMessages != null && newMessages.size() != 0) { | |
messages.clear(); | |
messages.addAll(newMessages); | |
notifyDataSetChanged(); | |
} | |
} | |
public class MessageIncomingItemViewHolder extends RecyclerView.ViewHolder { | |
@BindView(R.id.imageView_managerAvatar) | |
ImageView managerAvatar; | |
@BindView(R.id.textView_incoming_message) | |
TextView incomingMsgText; | |
@BindView(R.id.textView_incoming_messageSendTime) | |
TextView incomingMsgSendTime; | |
public MessageIncomingItemViewHolder(@NonNull View itemView) { | |
super(itemView); | |
ButterKnife.bind(this, itemView); | |
} | |
public void bind(MessageModel messageModel, String managerPhotoUrl) { | |
if (!StringUtils.isBlank(managerPhotoUrl)) { | |
GlideApp.with(managerAvatar.getContext()) | |
.load(managerPhotoUrl) | |
.placeholder(R.drawable.chat_avatar_default) | |
.circleCrop() | |
.into(managerAvatar); | |
} | |
incomingMsgText.setText(messageModel.text); | |
incomingMsgSendTime.setText(messageModel.dateSend); | |
} | |
} | |
public class MessageOutgoingItemViewHolder extends RecyclerView.ViewHolder { | |
@BindView(R.id.textView_message_outgoing) | |
TextView outgoingMsgText; | |
@BindView(R.id.textView_outgoing_messageSendTime) | |
TextView outgoingMsgSendTime; | |
public MessageOutgoingItemViewHolder(@NonNull View itemView) { | |
super(itemView); | |
ButterKnife.bind(this, itemView); | |
} | |
public void bind(MessageModel messageModel) { | |
outgoingMsgText.setText(messageModel.text); | |
outgoingMsgSendTime.setText(messageModel.dateSend); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment