package cl.monsoon.s1next.view.adapter.delegate; import android.app.Activity; import android.databinding.DataBindingUtil; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.ViewGroup; import com.hannesdorfmann.adapterdelegates.AbsAdapterDelegate; import java.util.List; import cl.monsoon.s1next.App; import cl.monsoon.s1next.R; import cl.monsoon.s1next.data.api.model.Forum; import cl.monsoon.s1next.databinding.ItemForumBinding; import cl.monsoon.s1next.viewmodel.ForumViewModel; public final class ForumAdapterDelegate extends AbsAdapterDelegate<List<Object>> { private final LayoutInflater mLayoutInflater; private final int mGentleAccentColor; public ForumAdapterDelegate(Activity activity, int viewType) { super(viewType); mLayoutInflater = activity.getLayoutInflater(); mGentleAccentColor = App.getAppComponent(activity).getThemeManager().getGentleAccentColor(); } @Override public boolean isForViewType(@NonNull List<Object> items, int position) { return items.get(position) instanceof Forum; } @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent) { ItemForumBinding binding = DataBindingUtil.inflate(mLayoutInflater, R.layout.item_forum, parent, false); binding.setGentleAccentColor(mGentleAccentColor); binding.setForumViewModel(new ForumViewModel()); return new BindingViewHolder(binding); } @Override public void onBindViewHolder(@NonNull List<Object> items, int position, @NonNull RecyclerView.ViewHolder holder) { ItemForumBinding binding = ((BindingViewHolder) holder).itemForumBinding; binding.getForumViewModel().forum.set((Forum) items.get(position)); binding.executePendingBindings(); } private static final class BindingViewHolder extends RecyclerView.ViewHolder { private final ItemForumBinding itemForumBinding; public BindingViewHolder(ItemForumBinding itemForumBinding) { super(itemForumBinding.getRoot()); this.itemForumBinding = itemForumBinding; } } }