MessageAdapter uses ViewHolder for better performance