package com.likebamboo.osa.android.ui.adapter;
import android.content.Context;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.ImageLoader;
import com.etsy.android.grid.util.DynamicHeightImageView;
import com.likebamboo.osa.android.R;
import com.likebamboo.osa.android.entity.CategoryList;
import com.likebamboo.osa.android.interfaces.IOnItemClickListener;
import com.likebamboo.osa.android.request.RequestManager;
import com.likebamboo.osa.android.request.RequestUrl;
import java.util.ArrayList;
import butterknife.ButterKnife;
import butterknife.InjectView;
/**
* Created by wentaoli on 2015/5/12.
*/
public class CategoryAdapter extends BaseAdapter<CategoryList.Category> {
private IOnItemClickListener mItemClickListener = null;
/**
* 设置回调
*
* @param l
*/
public void setOnItemClickListener(IOnItemClickListener l) {
this.mItemClickListener = l;
}
public CategoryAdapter(Context ctx) {
super(ctx);
}
public CategoryAdapter(Context ctx, ArrayList<CategoryList.Category> datas) {
super(ctx, datas);
}
@Override
public View getView(int position, View view, ViewGroup parent) {
final ViewHolder holder;
if (view != null) {
holder = (ViewHolder) view.getTag();
} else {
view = LayoutInflater.from(mContext).inflate(R.layout.item_category, parent, false);
holder = new ViewHolder(view);
view.setTag(holder);
}
CategoryList.Category item = getItem(position);
if (item == null) {
return view;
}
// 图片
holder.coverIv.setImageResource(R.drawable.ic_launcher);
// 加载图片
ImageLoader imageLoader = RequestManager.getImageLoader();
holder.coverIv.setHeightRatio(0.8);
if (!TextUtils.isEmpty(item.getCover())) {
String url = RequestUrl.BASE_URL + item.getCover();
holder.coverIv.setTag(url);
imageLoader.get(url, new ImageLoader.ImageListener() {
@Override
public void onResponse(ImageLoader.ImageContainer imageContainer, boolean b) {
if (imageContainer == null || imageContainer.getBitmap() == null) {
onErrorResponse(null);
return;
}
if (("" + holder.coverIv.getTag()).equals(imageContainer.getRequestUrl())) {
holder.coverIv.setHeightRatio(imageContainer.getBitmap().getHeight() / (double) imageContainer.getBitmap().getWidth());
holder.coverIv.setImageBitmap(imageContainer.getBitmap());
}
}
@Override
public void onErrorResponse(VolleyError volleyError) {
holder.coverIv.setImageResource(R.drawable.ic_launcher);
}
});
}
view.setId(position);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int pos = view.getId();
if (mItemClickListener != null) {
mItemClickListener.onItemClick(pos, getItem(pos));
}
}
});
// set data
holder.titleTv.setText(item.getName());
holder.descTv.setText(item.getDescription());
return view;
}
public static class ViewHolder {
@InjectView(R.id.category_title_tv)
public TextView titleTv;
@InjectView(R.id.category_desc_tv)
public TextView descTv;
@InjectView(R.id.category_cover_iv)
public DynamicHeightImageView coverIv;
public ViewHolder(View view) {
ButterKnife.inject(this, view);
}
}
}