Skip to content

Instantly share code, notes, and snippets.

@nathanjones
Last active April 26, 2016 16:21
Show Gist options
  • Save nathanjones/570ad61d6a040b37118fa2be6257bfbe to your computer and use it in GitHub Desktop.
Save nathanjones/570ad61d6a040b37118fa2be6257bfbe to your computer and use it in GitHub Desktop.
public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.MessageViewHolder> {
// Edit your onCreateViewHolder method to use different layouts for each view type
@Override
public MessageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
MessageType type = MessageType.values()[viewType];
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View itemView;
switch (type) {
case Text:
default:
itemView = inflater.inflate(R.layout.item_message_text, parent, false);
return new TextMessageViewHolder(itemView);
case Image:
itemView = inflater.inflate(R.layout.item_message_image, parent, false);
return new ImageMessageViewHolder(itemView);
case Location:
itemView = inflater.inflate(R.layout.item_message_location, parent, false);
return new LocationMessageViewHolder(itemView);
}
}
// ...
// Then add additional ViewHolders
private class TextMessageViewHolder extends MessageViewHolder {
final TextView messageText;
public TextMessageViewHolder(View itemView) {
super(itemView);
messageText = (TextView) itemView.findViewById(R.id.message_text);
}
@Override
void bind(int position) {
Message msg = messages.get(position);
messageText.setText(msg.text);
}
}
private class ImageMessageViewHolder extends MessageViewHolder {
final ImageView messageImage;
public ImageMessageViewHolder(View itemView) {
super(itemView);
messageImage = (ImageView) itemView.findViewById(R.id.message_image);
}
@Override
void bind(int position) {
Message msg = messages.get(position);
messageImage.setImageDrawable(msg.image);
}
}
private class LocationMessageViewHolder extends MessageViewHolder {
public LocationMessageViewHolder(View itemView) {
super(itemView);
}
@Override
void bind(int position) {
Message msg = messages.get(position);
Location location = msg.location;
// TODO: Load location into MapView
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment