dependencies {
implementation 'me.drakeet.multitype:multitype:VERSION'
}
public class User {
private String name;
}
public class Post {
private String content;
}
public class UserItemViewBinder extends ItemViewBinder<User, UserItemViewBinder.ViewHolder> {
@NonNull @Override
protected ViewHolder onCreateViewHolder(@NonNull LayoutInflater inflater, @NonNull ViewGroup parent) {
View view = inflater.inflate(R.layout.item_user, parent, false);
return new ViewHolder(view);
}
@Override
protected void onBindViewHolder(@NonNull ViewHolder holder, @NonNull User user) {
holder.nameTextView.setText(user.getName());
}
static class ViewHolder extends RecyclerView.ViewHolder {
TextView nameTextView;
ViewHolder(@NonNull View itemView) {
super(itemView);
nameTextView = itemView.findViewById(R.id.text_name);
}
}
}
MultiTypeAdapter adapter = new MultiTypeAdapter();
adapter.register(User.class, new UserItemViewBinder());
List<Object> items = new ArrayList<>();
items.add(new User("John"));
items.add(new User("Jane"));
items.add(new Post("Hello, world!"));
adapter.setItems(items);
RecyclerView recyclerView = findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);