gradle
dependencies {
implementation 'me.drakeet.multitype:multitype:4.3.0'
}
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
RecyclerView recyclerView = findViewById(R.id.recyclerView);
MultiTypeAdapter adapter = new MultiTypeAdapter();
recyclerView.setAdapter(adapter);
public class TextItem {
public String text;
}
public class ImageItem {
public int imageRes;
}
adapter.register(TextItem.class, new TextItemViewBinder());
adapter.register(ImageItem.class, new ImageItemViewBinder());
public class TextItemViewBinder extends ItemViewBinder<TextItem, TextItemViewBinder.ViewHolder> {
@NonNull
@Override
protected ViewHolder onCreateViewHolder(@NonNull LayoutInflater inflater, @NonNull ViewGroup parent) {
View view = inflater.inflate(R.layout.item_text, parent, false);
return new ViewHolder(view);
}
@Override
protected void onBindViewHolder(@NonNull ViewHolder holder, @NonNull TextItem item) {
holder.textView.setText(item.text);
}
static class ViewHolder extends RecyclerView.ViewHolder {
TextView textView;
ViewHolder(View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.textView);
}
}
}
public class ImageItemViewBinder extends ItemViewBinder<ImageItem, ImageItemViewBinder.ViewHolder> {
@NonNull
@Override
protected ViewHolder onCreateViewHolder(@NonNull LayoutInflater inflater, @NonNull ViewGroup parent) {
View view = inflater.inflate(R.layout.item_image, parent, false);
return new ViewHolder(view);
}
@Override
protected void onBindViewHolder(@NonNull ViewHolder holder, @NonNull ImageItem item) {
holder.imageView.setImageResource(item.imageRes);
}
static class ViewHolder extends RecyclerView.ViewHolder {
ImageView imageView;
ViewHolder(View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.imageView);
}
}
}
TextItem textItem = new TextItem();
textItem.text = "Hello MultiType!";
adapter.addItem(textItem);
ImageItem imageItem = new ImageItem();
imageItem.imageRes = R.drawable.image;
adapter.addItem(imageItem);