package com.mozu.mozuandroidinstoreassistant.app.category.adapters;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.mozu.api.contracts.productruntime.Category;
import com.mozu.mozuandroidinstoreassistant.app.R;
import com.mozu.mozuandroidinstoreassistant.app.adapters.GridToggleArrayAdapter;
import com.mozu.mozuandroidinstoreassistant.app.models.ImageURLConverter;
import com.mozu.mozuandroidinstoreassistant.app.views.RoundedTransformation;
import com.squareup.picasso.Callback;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.RequestCreator;
public class CategoryAdapter extends GridToggleArrayAdapter<Category> {
private ImageURLConverter mUrlConverter;
public CategoryAdapter(Context context, Integer tenantId, Integer siteId, String siteDomain) {
super(context, R.layout.category_grid_item, R.layout.category_list_item);
mUrlConverter = new ImageURLConverter(tenantId, siteId, siteDomain);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final CategoryViewHolder viewHolder;
if (convertView == null ||
(isGrid() && convertView.getId() != getGridResource()) ||
(!isGrid() && convertView.getId() != getListResource())) {
convertView = LayoutInflater.from(getContext()).inflate(getCurrentResource(), null);
viewHolder = new CategoryViewHolder(convertView);
convertView.setTag(viewHolder);
} else {
viewHolder = (CategoryViewHolder) convertView.getTag();
}
Category category = getItem(position);
viewHolder.categoryName.setText(category.getContent().getName());
viewHolder.categoryImage.setImageResource(R.drawable.icon_nocategoryphoto);
viewHolder.categoryImage.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
//load image asynchronously into the view
if (category.getContent().getCategoryImages() != null && category.getContent().getCategoryImages().size() > 0) {
String url = category.getContent().getCategoryImages().get(0).getImageUrl();
if (!TextUtils.isEmpty(url)) {
RequestCreator creator = Picasso.with(getContext())
.load(mUrlConverter.getFullImageUrl(url));
if (!isGrid()) {
int dimenWidth = getContext().getResources().getDimensionPixelSize(R.dimen.category_list_item_width);
int dimenHeight = getContext().getResources().getDimensionPixelSize(R.dimen.category_list_item_height);
creator = creator.transform(new RoundedTransformation()).placeholder(R.drawable.icon_nocategoryphoto).resize(dimenWidth, dimenHeight).centerCrop();
viewHolder.categoryLoading.success();
} else {
int dimenWidth = getContext().getResources().getDimensionPixelSize(R.dimen.category_grid_image_width);
int dimenHeight = getContext().getResources().getDimensionPixelSize(R.dimen.category_grid_image_width);
creator = creator.placeholder(R.drawable.icon_nocategoryphoto).resize(dimenWidth, dimenHeight).centerInside();
}
creator.into(viewHolder.categoryImage, new Callback() {
@Override
public void onSuccess() {
Bitmap bitmap = ((BitmapDrawable) viewHolder.categoryImage.getDrawable()).getBitmap();
viewHolder.categoryImage.setBackgroundColor(bitmap.getPixel(0, 0));
viewHolder.categoryLoading.success();
}
@Override
public void onError() {
viewHolder.categoryLoading.success();
viewHolder.categoryImage.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
}
});
}
} else {
viewHolder.categoryLoading.success();
viewHolder.categoryImage.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
}
return convertView;
}
}