package com.hitherejoe.bourbon.ui.browse;
import android.content.Context;
import android.support.wearable.view.GridPagerAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.hitherejoe.bourbon.R;
import com.hitherejoe.bourboncorecommon.data.model.Shot;
import com.hitherejoe.bourbon.ui.shot.ShotActivity;
import java.text.DecimalFormat;
import java.util.Collections;
import java.util.List;
public class BrowseAdapter extends GridPagerAdapter {
private Context mContext;
private List<Shot> mShots;
public BrowseAdapter(Context context) {
mContext = context;
mShots = Collections.emptyList();
}
public void setShots(List<Shot> shots) {
mShots = shots;
}
@Override
public int getRowCount() {
return mShots.size();
}
@Override
public int getColumnCount(int i) {
return 4;
}
@Override
public Object instantiateItem(ViewGroup viewGroup, int i, int i1) {
Shot shot = mShots.get(i);
if (i1 == 0) {
// View child = viewGroup.getChildAt(i);
// if (child == null) {
FrameLayout view = (FrameLayout) LayoutInflater.from(mContext).inflate(R.layout.item_shot, viewGroup, false);
ViewHolder viewHolder = new ViewHolder(view);
viewHolder.bind(shot);
view.setTag(viewHolder);
viewGroup.addView(view);
// } else {
// viewHolder = (ViewHolder) child.getTag();
// viewHolder.bind(shot);
// }
return viewHolder.frameLayout;
} else if (i1 == 1) {
View view = (View) LayoutInflater.from(mContext).inflate(R.layout.item_user, viewGroup, false);
UserViewHolder viewHolder = new UserViewHolder(view);
viewHolder.bind(shot);
view.setTag(viewHolder);
viewGroup.addView(view);
return viewHolder.frameLayout;
} else if (i1 == 2) {
View view = (View) LayoutInflater.from(mContext).inflate(R.layout.item_detail, viewGroup, false);
DetailViewHolder viewHolder = new DetailViewHolder(view);
viewHolder.bind(shot.likes_count, R.drawable.ic_favorite_accent_48dp);
view.setTag(viewHolder);
viewGroup.addView(view);
return viewHolder.frameLayout;
} else if (i1 == 3) {
View view = (View) LayoutInflater.from(mContext).inflate(R.layout.item_detail, viewGroup, false);
DetailViewHolder viewHolder = new DetailViewHolder(view);
viewHolder.bind(shot.views_count, R.drawable.ic_visibility_accent_48dp);
view.setTag(viewHolder);
viewGroup.addView(view);
return viewHolder.frameLayout;
}
return null;
}
@Override
public void destroyItem(ViewGroup viewGroup, int i, int i1, Object o) {
viewGroup.removeView((View) o);
}
@Override
public boolean isViewFromObject(View view, Object o) {
return view.equals(o);
}
class ViewHolder {
ImageView imageView;
FrameLayout frameLayout;
public ViewHolder(FrameLayout frameLayout) {
this.frameLayout = frameLayout;
imageView = (ImageView) frameLayout.findViewById(R.id.image_shot);
}
void bind(final Shot shot) {
Glide.with(mContext).load(shot.images.getImage()).into(imageView);
frameLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mContext.startActivity(ShotActivity.newIntent(mContext, shot));
}
});
}
}
class UserViewHolder {
TextView titleView;
ImageView userImage;
TextView userName;
View frameLayout;
public UserViewHolder(View frameLayout) {
this.frameLayout = frameLayout;
titleView = (TextView) frameLayout.findViewById(R.id.text_title);
userImage = (ImageView) frameLayout.findViewById(R.id.image_avatar);
userName = (TextView) frameLayout.findViewById(R.id.text_user);
}
void bind(final Shot shot) {
titleView.setText(shot.title);
userName.setText(shot.user.username);
Glide.with(mContext).load(shot.user.avatarUrl).into(userImage);
}
}
class DetailViewHolder {
TextView countText;
View frameLayout;
public DetailViewHolder(View frameLayout) {
this.frameLayout = frameLayout;
countText = (TextView) frameLayout.findViewById(R.id.text_count);
}
void bind(String text, int iconRes) {
countText.setText(formatString(text));
countText.setCompoundDrawablesWithIntrinsicBounds(0, iconRes, 0, 0);
}
}
private String formatString(String number) {
DecimalFormat formatter = new DecimalFormat("#,###,###");
int n = Integer.valueOf(number);
return formatter.format(n);
}
}