I would like to use RecyclerView like a carousel for display 3 items at the same time on the screen.
So first, on the the screen, it display the items #1 #2 and #3. When I swipe the RecyclerView (like a ViewPager) I would like to display items #4 #5 et #6 like this :
- The first screen
- The screen after the scroll
How to achieve this workflow ? Thanks you for your help !
Here is my Activity
public class CarouselActivity extends BaseActivity {
private RecyclerView recyclerView;
@Override
protected int getLayoutResourceId() {
return R.layout.carousel_activity;
}
@Override
protected void setupViews()
{
recyclerView = (RecyclerView)findViewById(R.id.recyclerview);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayList<CarouselItem> items = new ArrayList<>();
items.add(new CarouselItem());
items.add(new CarouselItem());
items.add(new CarouselItem());
items.add(new CarouselItem());
items.add(new CarouselItem());
items.add(new CarouselItem());
recyclerView.setLayoutManager(new LinearLayoutManager(context,LinearLayoutManager.HORIZONTAL,false));
recyclerView.setHasFixedSize(true);
recyclerView.setAdapter(new CarouselAdapter(context,activity,items));
}
}
And my Adapter
public class CarouselAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
protected ArrayList<CarouselItem> listItems;
protected Context context;
protected Activity activity;
protected LayoutInflater inflater;
public CarouselAdapter(Context context,
Activity activity,
ArrayList<CarouselItem> listItems)
{
this.context = context;
this.activity = activity;
this.inflater = LayoutInflater.from (context);
this.listItems = listItems;
}
@Override
public int getItemCount()
{
return listItems.size();
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
View v = inflater.inflate(R.layout.carousel_item, parent, false);
return new ItemHolder(v);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position)
{
ItemHolder itemHolder = (ItemHolder)holder;
itemHolder.itemView.getLayoutParams().width = ScreenHelper.getScreenWidthRatio(activity,33);
itemHolder.itemView.getLayoutParams().height = ScreenHelper.getScreenWidthRatio(activity,50);
itemHolder.itemView.setBackgroundColor((position % 2 == 0 ) ? Color.RED : Color.BLUE);
int page = position + 1;
itemHolder.tvPage.setText("" + page);
}
protected static class ItemHolder extends RecyclerView.ViewHolder
{
private TextView tvPage;
public ItemHolder(View itemView)
{
super(itemView);
tvPage = (TextView)itemView.findViewById(R.id.tv_page);
}
}
}