package com.mirhoseini.marvel.character.cache.adapter;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.jakewharton.rxbinding.view.RxView;
import com.mirhoseini.marvel.R;
import com.mirhoseini.marvel.database.model.CharacterModel;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import rx.Observable;
import rx.subjects.PublishSubject;
/**
* Created by Mohsen on 20/10/2016.
*/
public class CharactersRecyclerViewAdapter extends RecyclerView.Adapter<CharacterViewHolder> {
private ArrayList<CharacterModel> characters = new ArrayList<>();
private PublishSubject<CharacterModel> notify = PublishSubject.create();
@Inject
public CharactersRecyclerViewAdapter() {
}
public void setCharacters(List<CharacterModel> characters) {
this.characters = new ArrayList<>(characters);
}
@Override
public CharacterViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_character, parent, false);
return new CharacterViewHolder(view);
}
@Override
public void onBindViewHolder(final CharacterViewHolder holder, int position) {
final CharacterModel character = characters.get(position);
holder.setCharacter(character);
RxView.clicks(holder.view)
.map(aVoid -> holder.getCharacter())
.subscribe(notify::onNext);
}
public Observable<CharacterModel> asObservable() {
return notify.asObservable();
}
@Override
public int getItemCount() {
return characters.size();
}
}