/*
* Copyright (c) 2016 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com>
* All Rights Reserved.
*/
package me.zhanghai.android.douya.profile.ui;
import android.content.Context;
import android.content.Intent;
import android.support.v4.view.ViewCompat;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.Space;
import android.widget.TextView;
import butterknife.BindView;
import butterknife.ButterKnife;
import me.zhanghai.android.douya.R;
import me.zhanghai.android.douya.item.ui.ItemActivities;
import me.zhanghai.android.douya.link.UriHandler;
import me.zhanghai.android.douya.network.api.info.frodo.CollectableItem;
import me.zhanghai.android.douya.ui.RatioFrameLayout;
import me.zhanghai.android.douya.ui.SimpleAdapter;
import me.zhanghai.android.douya.util.DrawableUtils;
import me.zhanghai.android.douya.util.ImageUtils;
import me.zhanghai.android.douya.util.RecyclerViewUtils;
import me.zhanghai.android.douya.util.ViewUtils;
public class ProfileItemAdapter
extends SimpleAdapter<CollectableItem, ProfileItemAdapter.ViewHolder> {
public ProfileItemAdapter() {
setHasStableIds(true);
}
@Override
public long getItemId(int position) {
return getItem(position).id;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
ViewHolder holder = new ViewHolder(ViewUtils.inflate(R.layout.profile_item_item, parent));
ViewCompat.setBackground(holder.scrimView, DrawableUtils.makeScrimDrawable());
return holder;
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
final CollectableItem item = getItem(position);
float ratio = 1;
switch (item.getType()) {
case BOOK:
case EVENT:
case MOVIE:
case TV:
ratio = 2f / 3f;
break;
}
holder.itemLayout.setRatio(ratio);
final Context context = RecyclerViewUtils.getContext(holder);
holder.itemLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// TODO
Intent intent = ItemActivities.makeIntent(item, context);
if (intent != null) {
context.startActivity(intent);
} else {
UriHandler.open(item.url, context);
}
}
});
ImageUtils.loadImage(holder.coverImage, item.cover.getLarge());
holder.titleText.setText(item.title);
// FIXME: This won't work properly if items are changed.
ViewUtils.setVisibleOrGone(holder.dividerSpace, position != getItemCount() - 1);
}
static class ViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.item)
public RatioFrameLayout itemLayout;
@BindView(R.id.cover)
public ImageView coverImage;
@BindView(R.id.scrim)
public View scrimView;
@BindView(R.id.title)
public TextView titleText;
@BindView(R.id.divider)
public Space dividerSpace;
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
}