package com.xiaomi.xms.sales.adapter; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import com.xiaomi.xms.sales.R; import com.xiaomi.xms.sales.ShopApp; import com.xiaomi.xms.sales.model.ProductInfo; import com.xiaomi.xms.sales.ui.ProductListItem; import com.xiaomi.xms.sales.util.LogUtil; import java.util.ArrayList; public class ProductAdapter extends BaseDataAdapter<ProductInfo> { public static final int HEADER_ITEM_NUM = 2; private boolean mWithExtraHeader; public ProductAdapter(Context context, boolean withExtraHeader) { super(context); mWithExtraHeader = withExtraHeader; } public boolean isHeaderItem(int position) { return mWithExtraHeader && position < HEADER_ITEM_NUM; } @Override public void updateData(ArrayList<ProductInfo> data) { if (mWithExtraHeader && data != null && !data.isEmpty()) { ArrayList<ProductInfo> wrappedData = new ArrayList<ProductInfo>(); ProductInfo header = new ProductInfo("", "", "", "", "", false, null); wrappedData.add(header); wrappedData.add(header); wrappedData.addAll(data); super.updateData(wrappedData); } else { super.updateData(data); } } @Override public View getView(int position, View convertView, ViewGroup parent) { LogUtil.d("ProductAdapter", "getView: " + position); if (!mDataValid) { throw new IllegalStateException( "this should only be called when the data is valid"); } if (position < 0 || position >= mData.size()) { throw new IllegalStateException( "couldn't get view at this position " + position); } if (isHeaderItem(position)) { Button b = new Button(mContext); b.setHeight((int) ShopApp.getContext().getResources() .getDimension(R.dimen.product_grid_header_view_height)); b.setBackgroundColor(0x00000000); return b; } ProductInfo data = mData.get(position); View v = newView(mContext, data, parent); bindView(v, position, data); bindBackground(v, position); return v; } @Override public View newView(Context context, ProductInfo data, ViewGroup parent) { return (ProductListItem) LayoutInflater.from(context).inflate(R.layout.product_grid_item, parent, false); } @Override public void bindView(View view, int position, ProductInfo data) { if (view instanceof ProductListItem) { ((ProductListItem) view).bind(data); } } @Override protected void bindBackground(View view, int position) { } }