/*
* Copyright (c) 2017 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com>
* All Rights Reserved.
*/
package me.zhanghai.android.douya.item.ui;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import butterknife.BindView;
import butterknife.ButterKnife;
import me.zhanghai.android.douya.R;
import me.zhanghai.android.douya.network.api.info.frodo.CollectableItem;
import me.zhanghai.android.douya.network.api.info.frodo.ItemCollectionState;
import me.zhanghai.android.douya.network.api.info.frodo.Movie;
import me.zhanghai.android.douya.ui.RatioImageView;
import me.zhanghai.android.douya.util.ImageUtils;
import me.zhanghai.android.douya.util.StringUtils;
import me.zhanghai.android.douya.util.ViewUtils;
public class MovieAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int ITEM_HEADER = 0;
private static final int ITEM_COUNT = 1;
private Data mData;
public MovieAdapter() {
setHasStableIds(true);
}
public void setData(Data data) {
mData = data;
notifyDataSetChanged();
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
return position;
}
@Override
public int getItemCount() {
return mData != null ? ITEM_COUNT : 0;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case ITEM_HEADER:
return new HeaderHolder(ViewUtils.inflate(R.layout.movie_header_item, parent));
default:
return null;
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
Context context = holder.itemView.getContext();
switch (position) {
case ITEM_HEADER: {
HeaderHolder headerHolder = (HeaderHolder) holder;
ImageUtils.loadImageWithRatio(headerHolder.mPosterImage, mData.movie.poster);
headerHolder.mTitleText.setText(mData.movie.title);
headerHolder.mOriginalTitleText.setText(mData.movie.originalTitle);
String detail = StringUtils.joinNonEmpty("\t", mData.movie.getYearMonth(context),
mData.movie.getEpisodeCountString(), mData.movie.getDurationString());
headerHolder.mDetailText.setText(detail);
headerHolder.mGenresText.setText(CollectableItem.getListAsString(
mData.movie.genres));
headerHolder.mTodoButton.setText(ItemCollectionState.TODO.getString(
CollectableItem.Type.MOVIE, context));
headerHolder.mDoingButton.setText(ItemCollectionState.DOING.getString(
CollectableItem.Type.MOVIE, context));
headerHolder.mDoneButton.setText(ItemCollectionState.DONE.getString(
CollectableItem.Type.MOVIE, context));
break;
}
}
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
recyclerView.setClipChildren(false);
}
public static class Data {
public Movie movie;
public Data(Movie movie) {
this.movie = movie;
}
}
static class HeaderHolder extends RecyclerView.ViewHolder {
@BindView(R.id.poster)
RatioImageView mPosterImage;
@BindView(R.id.title)
TextView mTitleText;
@BindView(R.id.original_title)
TextView mOriginalTitleText;
@BindView(R.id.detail)
TextView mDetailText;
@BindView(R.id.genres)
TextView mGenresText;
@BindView(R.id.todo)
Button mTodoButton;
@BindView(R.id.doing)
Button mDoingButton;
@BindView(R.id.done)
Button mDoneButton;
public HeaderHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
}