Least amount of effort to add multiple views in a recyclerview.
//adapter builder
LeastAdapter adapter = new LeastAdapter.Builder()
// 1) bind the view types you want to display
.binder(new UserBinder(User.class, UserViewHolderHolder.class, R.layout.layout_user))
.binder(new BannerBinder(Banner.class, BannerViewHolderHolder.class, R.layout.layout_banner))
.binder(new HeaderBinder(String.class, HeaderViewHolder.class, R.layout.layout_header))
// 2) add your list items
.item("Section 1")
.items(getUsers())
.item("Section 2")
.items(getBanners())
.item("Section 3")
.items(getUsers())
// 3) done
.build(this);
The idea is that you bind an object class to a viewholder. The object class is your typical list item e.g User.class
Let's say you want to display 3 different kind of views. A user view, a banner view and a header view.
Create a binder for each view type by extending the Binder class, like so:
//Extend the binder by adding the viewholder and list item class of your view
public class UserBinder extends Binder<UserViewHolderHolder, User> {
@Override
public void onBindViewHolder(UserViewHolderHolder holder, User user, int position) {
holder.textView.setText(user.getName());
}
}
Do the same for your other views
That's pretty much it. Just use the binder to your adapter like so:
//set the list item class, viewholder class and the view layout id
UserBinder userBinder = new UserBinder(User.class, UserViewHolderHolder.class, R.layout.layout_user)
new LeastAdapter.Builder()
.binder(userBinder)
...
//add more views
Check the example for more
-keep class * extends io.c0nnector.github.least.Binder { *; }
1. Add it in your build.gradle at the end of repositories:
repositories { maven { url "https://jitpack.io" } }
2. Add the dependency in the form
implementation 'com.github.ArthurSav:Least:master-SNAPSHOT'