package com.pinthecloud.athere.adapter;
import java.util.List;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.ViewHolder;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.pinthecloud.athere.AhApplication;
import com.pinthecloud.athere.R;
import com.pinthecloud.athere.fragment.AhFragment;
import com.pinthecloud.athere.helper.BlobStorageHelper;
import com.pinthecloud.athere.helper.CachedBlobStorageHelper;
import com.pinthecloud.athere.model.Square;
public class SquareListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private enum TYPE{
NORMAL,
ADMIN
}
private AhFragment frag;
private List<Square> squareList;
private OnClickListener itemClickListener;
private CachedBlobStorageHelper blobStorageHelper;
public SquareListAdapter(AhFragment frag, List<Square> squareList, OnClickListener itemClickListener) {
this.frag = frag;
this.squareList = squareList;
this.itemClickListener = itemClickListener;
this.blobStorageHelper = AhApplication.getInstance().getBlobStorageHelper();
}
private static class AdminViewHolder extends RecyclerView.ViewHolder {
public View view;
public TextView squareNameText;
public ImageView background;
public ImageView lockImage;
public AdminViewHolder(View view) {
super(view);
this.view = view;
this.squareNameText = (TextView)view.findViewById(R.id.row_square_list_admin_name);
this.background = (ImageView)view.findViewById(R.id.row_square_list_admin_background);
this.lockImage = (ImageView)view.findViewById(R.id.row_square_list_admin_lock);
}
}
private static class NormalViewHolder extends RecyclerView.ViewHolder {
public View view;
public TextView squareNameText;
public NormalViewHolder(View view) {
super(view);
this.view = view;
this.squareNameText = (TextView)view.findViewById(R.id.row_square_list_normal_name);
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = null;
ViewHolder viewHolder = null;
if(viewType == TYPE.ADMIN.ordinal()){
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_square_list_admin, parent, false);
viewHolder = new AdminViewHolder(view);
}else if(viewType == TYPE.NORMAL.ordinal()){
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_square_list_normal, parent, false);
viewHolder = new NormalViewHolder(view);
}
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Square square = squareList.get(position);
int viewType = getItemViewType(position);
if(viewType == TYPE.ADMIN.ordinal()){
AdminViewHolder viewHolder = (AdminViewHolder)holder;
setAdminComponent(viewHolder, square);
}else if(viewType == TYPE.NORMAL.ordinal()){
NormalViewHolder viewHolder = (NormalViewHolder)holder;
setNormalComponent(viewHolder, square);
}
}
@Override
public int getItemCount() {
return this.squareList.size();
}
@Override
public int getItemViewType(int position) {
Square square = squareList.get(position);
if(square.isAdmin()){
return TYPE.ADMIN.ordinal();
} else{
return TYPE.NORMAL.ordinal();
}
}
private void setNormalComponent(NormalViewHolder holder, Square square){
holder.squareNameText.setText(square.getName());
holder.view.setOnClickListener(itemClickListener);
}
private void setAdminComponent(AdminViewHolder holder, Square square){
holder.squareNameText.setText(square.getName());
holder.view.setOnClickListener(itemClickListener);
blobStorageHelper.setImageViewAsync(frag, BlobStorageHelper.SQUARE_PROFILE,
square.getId(), R.drawable.ground_premium_pic_default, holder.background, false);
if(!square.getCode().equals("")){
holder.lockImage.setVisibility(View.VISIBLE);
} else{
holder.lockImage.setVisibility(View.GONE);
}
}
}