package de.stephanlindauer.criticalmaps.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.TimeZone;
import butterknife.Bind;
import butterknife.ButterKnife;
import de.stephanlindauer.criticalmaps.R;
import de.stephanlindauer.criticalmaps.interfaces.IChatMessage;
import de.stephanlindauer.criticalmaps.utils.TimeToWordStringConverter;
import de.stephanlindauer.criticalmaps.vo.chat.ReceivedChatMessage;
public class ChatMessageAdapter extends RecyclerView.Adapter<ChatMessageAdapter.ChatMessageViewHolder> {
private final List<IChatMessage> chatMessages;
public ChatMessageAdapter(List<IChatMessage> chatMessages) {
this.chatMessages = chatMessages;
}
public class ChatMessageViewHolder extends RecyclerView.ViewHolder {
@Bind(R.id.firstLine)
TextView labelView;
@Bind(R.id.secondLine)
TextView valueView;
private final DateFormat dateFormatter = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.SHORT, Locale.getDefault());
private final Context context;
public ChatMessageViewHolder(View itemView) {
super(itemView);
context = itemView.getContext();
ButterKnife.bind(this, itemView);
}
public void bind(IChatMessage message) {
valueView.setText(message.getMessage());
if (message instanceof ReceivedChatMessage) {
dateFormatter.setTimeZone(TimeZone.getDefault());
labelView.setText(TimeToWordStringConverter.getTimeAgo(((ReceivedChatMessage) message).getTimestamp(), context));
} else {
labelView.setText(R.string.chat_sending);
}
}
}
@Override
public ChatMessageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
final LayoutInflater inflater = LayoutInflater.from(parent.getContext());
final View res;
if (viewType == 0) {
res = inflater.inflate(R.layout.view_chatmessage, parent, false);
} else {
res = inflater.inflate(R.layout.view_outgoing_chatmessage, parent, false);
}
return new ChatMessageViewHolder(res);
}
@Override
public void onBindViewHolder(ChatMessageViewHolder holder, int position) {
holder.bind(chatMessages.get(position));
}
@Override
public int getItemViewType(int position) {
if (chatMessages.get(position) instanceof ReceivedChatMessage) {
return 0;
} else {
return 1;
}
}
@Override
public int getItemCount() {
return chatMessages.size();
}
}