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.R;
import cl.monsoon.s1next.data.api.model.Favourite;
import cl.monsoon.s1next.databinding.ItemFavouriteBinding;
import cl.monsoon.s1next.viewmodel.FavouriteViewModel;
public final class FavouriteAdapterDelegate extends AbsAdapterDelegate<List<Object>> {
private final LayoutInflater mLayoutInflater;
public FavouriteAdapterDelegate(Activity activity, int viewType) {
super(viewType);
mLayoutInflater = activity.getLayoutInflater();
}
@Override
public boolean isForViewType(@NonNull List<Object> items, int position) {
return items.get(position) instanceof Favourite;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent) {
ItemFavouriteBinding binding = DataBindingUtil.inflate(mLayoutInflater,
R.layout.item_favourite, parent, false);
binding.setFavouriteViewModel(new FavouriteViewModel());
return new BindingViewHolder(binding);
}
@Override
public void onBindViewHolder(@NonNull List<Object> items, int position, @NonNull RecyclerView.ViewHolder holder) {
ItemFavouriteBinding binding = ((BindingViewHolder) holder).itemFavouriteBinding;
binding.getFavouriteViewModel().favourite.set((Favourite) items.get(position));
binding.executePendingBindings();
}
private static final class BindingViewHolder extends RecyclerView.ViewHolder {
private final ItemFavouriteBinding itemFavouriteBinding;
public BindingViewHolder(ItemFavouriteBinding itemFavouriteBinding) {
super(itemFavouriteBinding.getRoot());
this.itemFavouriteBinding = itemFavouriteBinding;
}
}
}