Created
November 16, 2017 18:25
-
-
Save ziginsider/3ee7474e58eb22ab4ce5180e8b35a31e to your computer and use it in GitHub Desktop.
This file contains hidden or 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 MultipleTypesAdapter extends RecyclerView.Adapter { | |
private List<RowType> dataSet; | |
public MultipleTypesAdapter(List<RowType> dataSet) { | |
this.dataSet = dataSet; | |
} | |
@Override | |
public int getItemViewType(int position) { | |
if (dataSet.get(position) instanceof ButtonRowType) { | |
return RowType.BUTTON_ROW_TYPE; | |
} else if (dataSet.get(position) instanceof ImageRowType) { | |
return RowType.IMAGE_ROW_TYPE; | |
} else if (dataSet.get(position) instanceof TextRowType) { | |
return RowType.TEXT_ROW_TYPE; | |
} else { | |
return -1; | |
} | |
} | |
@Override | |
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { | |
if (viewType == RowType.BUTTON_ROW_TYPE) { | |
View view = LayoutInflater.from(parent.getContext()) | |
.inflate(R.layout.row_type_button, parent, false); | |
return new ButtonViewHolder(view); | |
} else if (viewType == RowType.IMAGE_ROW_TYPE) { | |
View view = LayoutInflater.from(parent.getContext()) | |
.inflate(R.layout.row_type_image, parent, false); | |
return new ImageViewHolder(view); | |
} else if (viewType == RowType.TEXT_ROW_TYPE) { | |
View view = LayoutInflater.from(parent.getContext()) | |
.inflate(R.layout.row_type_text, parent, false); | |
return new TextViewHolder(view); | |
} else { | |
return null; | |
} | |
} | |
@Override | |
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) { | |
if (holder instanceof ButtonViewHolder) { | |
((ButtonViewHolder) holder).button | |
.setOnClickListener(((ButtonRowType) dataSet.get(position)).getOnClickListener()); | |
} else if (holder instanceof ImageViewHolder) { | |
((ImageViewHolder) holder).textView2 | |
.setText(((ImageRowType) dataSet.get(position)).getText()); | |
} else if (holder instanceof TextViewHolder) { | |
((TextViewHolder) holder).headerTextView | |
.setText(((TextRowType) dataSet.get(position)).getHeader()); | |
((TextViewHolder) holder).textView1 | |
.setText(((TextRowType) dataSet.get(position)).getText()); | |
} | |
} | |
@Override | |
public int getItemCount() { | |
return dataSet.size(); | |
} | |
public static class ButtonViewHolder extends RecyclerView.ViewHolder { | |
public Button button; | |
public ButtonViewHolder(View itemView) { | |
super(itemView); | |
button = (Button) itemView.findViewById(R.id.button); | |
} | |
} | |
public static class TextViewHolder extends RecyclerView.ViewHolder { | |
public TextView headerTextView; | |
public TextView textView1; | |
public TextViewHolder(View itemView) { | |
super(itemView); | |
headerTextView = (TextView) itemView.findViewById(R.id.header); | |
textView1 = (TextView) itemView.findViewById(R.id.text); | |
} | |
} | |
public static class ImageViewHolder extends RecyclerView.ViewHolder { | |
public ImageView imageView; | |
public TextView textView2; | |
public ImageViewHolder(View itemView) { | |
super(itemView); | |
imageView = (ImageView) itemView.findViewById(R.id.image); | |
textView2 = (TextView) itemView.findViewById(R.id.text_image); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment