A small libray help you ceate multiple type ViewHolders in RecyclerView
Beasue define TYPE is boring
https://jitpack.io/#imlunacat/MultiAdapter
RecyclerView rv = (RecyclerView) findViewById(R.id.activity_recyclerview);
rv.setLayoutManager(new LinearLayoutManager(this));
List<ITableCell> items = getCell();
MultiAdapter<ITableCell> adapter = new MultiAdapter<>();
adapter.addAll(items);
adapter.add(TextCell.class,
TextCellViewHolder.class,
R.layout.item_text,
new OnItemClickListener<TextCell>() {
@Override
public void onItemClick(TextCell item, int position) {
Toast.makeText(MainActivity.this, item.getText(), Toast.LENGTH_SHORT).show();
}
});
adapter.add(ImageCell.class,
ImageCellViewHolder.class,
R.layout.item_image,
new OnItemClickListener<ImageCell>() {
@Override
public void onItemClick(ImageCell item, int position) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(item.getPageUrl()));
startActivity(browserIntent);
}
});
rv.setAdapter(adapter);
(see full code in sample) MultipleAdapter use reflection to reduce boilerplate. Proguard
-keepclassmembers class * extends me.lunacat.multiadapter.MultiViewHolder {
public <init>(...);
}