package com.novoda.bonfire.channel.view; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.ViewGroup; import com.novoda.bonfire.R; import com.novoda.bonfire.channel.data.model.Channel; import com.novoda.bonfire.channel.data.model.Channels; import com.novoda.bonfire.channel.displayer.ChannelsDisplayer; import java.util.ArrayList; class ChannelsAdapter extends RecyclerView.Adapter<ChannelViewHolder> { private Channels channels = new Channels(new ArrayList<Channel>()); private ChannelsDisplayer.ChannelsInteractionListener channelsInteractionListener; private final LayoutInflater inflater; ChannelsAdapter(LayoutInflater inflater) { this.inflater = inflater; } public void update(Channels channels){ this.channels = channels; notifyDataSetChanged(); } @Override public ChannelViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new ChannelViewHolder((ChannelView) inflater.inflate(R.layout.channel_item_layout, parent, false)); } @Override public void onBindViewHolder(ChannelViewHolder holder, int position) { holder.bind(channels.getChannelAt(position), clickListener); } @Override public int getItemCount() { return channels.size(); } @Override public long getItemId(int position) { return channels.getChannelAt(position).hashCode(); } public void attach(ChannelsDisplayer.ChannelsInteractionListener channelsInteractionListener) { this.channelsInteractionListener = channelsInteractionListener; } public void detach(ChannelsDisplayer.ChannelsInteractionListener channelsInteractionListener) { this.channelsInteractionListener = null; } private final ChannelViewHolder.ChannelSelectionListener clickListener = new ChannelViewHolder.ChannelSelectionListener() { @Override public void onChannelSelected(Channel channel) { ChannelsAdapter.this.channelsInteractionListener.onChannelSelected(channel); } }; }