package com.cusnews.app.adapters; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.databinding.DataBindingUtil; import android.databinding.ViewDataBinding; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.ViewGroup; import com.cusnews.BR; import com.cusnews.R; import com.cusnews.ds.Bookmark; import com.cusnews.ds.Entry; import com.cusnews.utils.Prefs; import com.cusnews.widgets.ViewTypeActionProvider.ViewType; /** * The adapter for the list of {@link com.cusnews.ds.Bookmark}s. * * @author Xinyue Zhao */ public final class BookmarksAdapter extends RecyclerView.Adapter<BookmarksAdapter.ViewHolder> { /** * The view-type, {@link ViewType}. */ private int mLayoutResId; /** * Data-source. */ private List<Bookmark> mBookmarks; /** * Constructor of {@link BookmarksAdapter} * * @param viewType * The view-type, {@link ViewType}. */ public BookmarksAdapter( ViewType viewType ) { setData( new ArrayList<Bookmark>() ); mLayoutResId = viewType.getLayoutResId(); } /** * Constructor of {@link BookmarksAdapter} * * @param viewType * The view-type, {@link ViewType}. * @param bookmarks * Data-source. */ public BookmarksAdapter( ViewType viewType, List<Bookmark> bookmarks ) { setData( bookmarks ); mLayoutResId = viewType.getLayoutResId(); } /** * @return Data-source. */ public List<Bookmark> getData() { return mBookmarks; } /** * Set data-source. * * @param bookmarks */ public void setData( List<Bookmark> bookmarks ) { mBookmarks = bookmarks; } @Override public ViewHolder onCreateViewHolder( ViewGroup parent, int viewType ) { Context cxt = parent.getContext(); // boolean landscape = cxt.getResources().getBoolean(R.bool.landscape); LayoutInflater inflater = LayoutInflater.from( cxt ); if( !Prefs.getInstance().showAllImages() ) { mLayoutResId = R.layout.item_vertical_no_image_entry; } ViewDataBinding binding = DataBindingUtil.inflate( inflater, mLayoutResId, parent, false ); return new BookmarksAdapter.ViewHolder( binding ); } @Override public void onBindViewHolder( final ViewHolder holder, final int position ) { final Entry entry = getData().get( position ); holder.mBinding.setVariable( BR.entry, entry ); holder.mBinding.executePendingBindings(); } @Override public int getItemCount() { return mBookmarks == null ? 0 : mBookmarks.size(); } public static class ViewHolder extends RecyclerView.ViewHolder { private ViewDataBinding mBinding; public ViewHolder( ViewDataBinding binding ) { super( binding.getRoot() ); mBinding = binding; } } }