private void initRecyclerView() { final LinearLayoutManager layoutManager = new LinearLayoutManager(getContext()); recyclerView.setHasFixedSize(true); recyclerView.setLayoutManager(layoutManager); recyclerView.addItemDecoration(getItemDecoration()); recyclerView.setAdapter(new MediaAdapter(getContext(), getItems())); }
@Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { ViewHolder vh; switch (viewType) { case BOOK_INFORMATION_VIEW_TYPE: vh = new BookInformationViewHolder(LayoutInflater.from(parent.getContext()) .inflate(R.layout.book_information, parent, false)); break; case BOOK_COVER_VIEW_TYPE: default: vh = new BookCoverViewHolder( LayoutInflater.from(parent.getContext()).inflate(R.layout.book_cover, parent, false)); } return vh; }
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.sample_list_fragment, container, false); ButterKnife.bind(this, view); initRecyclerView(); return view; }
@Override public void onBindViewHolder(ViewHolder holder, int position) { switch (getItemViewType(position)) { case BOOK_INFORMATION_VIEW_TYPE: BookInformation bookInformation = (BookInformation) medias.get(position); BookInformationViewHolder bookInformationViewHolder = (BookInformationViewHolder) holder; bookInformationViewHolder.titleView.setText(bookInformation.getTitle()); bookInformationViewHolder.authorView.setText(bookInformation.getAuthor()); break; case BOOK_COVER_VIEW_TYPE: default: BookCover bookCover = (BookCover) medias.get(position); BookCoverViewHolder bookCoverViewHolder = (BookCoverViewHolder) holder; Picasso.with(context) .load(bookCover.getCoverImageId()) .placeholder(R.drawable.placeholder) .into(bookCoverViewHolder.coverView); break; } }
private RecyclerView.ItemDecoration getItemDecoration() { Drawable blackDrawable = getResources().getDrawable(R.drawable.black_divider); Drawable greyDrawable = getResources().getDrawable(R.drawable.grey_divider); Collection<Layer> layers = LayersBuilder.with( new Layer(new AllItemsSelector(), DividerBuilder.get().with(greyDrawable).build()), new Layer(new EvenCellRowSelector(), DividerBuilder.get().with(blackDrawable).build())) .build(); return new DividerItemDecoration(layers); } }