package cl.monsoon.s1next.view.adapter;
import android.app.Activity;
import android.databinding.DataBindingUtil;
import android.net.Uri;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import com.bumptech.glide.DrawableRequestBuilder;
import com.bumptech.glide.Glide;
import java.util.List;
import cl.monsoon.s1next.App;
import cl.monsoon.s1next.R;
import cl.monsoon.s1next.data.api.model.Emoticon;
import cl.monsoon.s1next.databinding.ItemEmoticonBinding;
import cl.monsoon.s1next.viewmodel.EmoticonViewModel;
import cl.monsoon.s1next.widget.EventBus;
public final class EmoticonGridRecyclerAdapter
extends RecyclerView.Adapter<EmoticonGridRecyclerAdapter.BindingViewHolder> {
private final LayoutInflater mLayoutInflater;
private final List<Emoticon> mEmoticons;
private final DrawableRequestBuilder<Uri> mEmoticonRequestBuilder;
private final EventBus mEventBus;
public EmoticonGridRecyclerAdapter(Activity activity, List<Emoticon> emoticons) {
mLayoutInflater = activity.getLayoutInflater();
this.mEmoticons = emoticons;
mEmoticonRequestBuilder = Glide.with(activity).from(Uri.class);
mEventBus = App.getAppComponent(activity).getEventBus();
setHasStableIds(true);
}
@Override
public BindingViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
ItemEmoticonBinding binding = DataBindingUtil.inflate(mLayoutInflater,
R.layout.item_emoticon, parent, false);
binding.setEventBus(mEventBus);
binding.setDrawableRequestBuilder(mEmoticonRequestBuilder);
binding.setEmoticonViewModel(new EmoticonViewModel());
return new BindingViewHolder(binding);
}
@Override
public void onBindViewHolder(BindingViewHolder holder, int position) {
holder.itemEmoticonBinding.getEmoticonViewModel().emoticon.set(mEmoticons.get(position));
holder.itemEmoticonBinding.executePendingBindings();
}
@Override
public int getItemCount() {
return mEmoticons.size();
}
@Override
public long getItemId(int position) {
return position;
}
public static final class BindingViewHolder extends RecyclerView.ViewHolder {
private final ItemEmoticonBinding itemEmoticonBinding;
public BindingViewHolder(ItemEmoticonBinding itemEmoticonBinding) {
super(itemEmoticonBinding.getRoot());
this.itemEmoticonBinding = itemEmoticonBinding;
}
}
}