package com.fancl.iloyalty.adapter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import android.content.Context; import android.os.Handler; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.RelativeLayout; import com.fancl.iloyalty.ApiConstant; import com.fancl.iloyalty.Constants; import com.fancl.iloyalty.R; import com.fancl.iloyalty.item.AsyncImageView; import com.fancl.iloyalty.pojo.ProductChoice; public class ProductChoiceViewFlowAdapter extends BaseAdapter { private Handler mHandler; private Context mContext; private LayoutInflater mInflater; private List<ProductChoice> productChoiceList; private int pagesDisplay; private HashMap<String, List<ProductChoice>> productChoicesMap; private ChoiceItemClickedListener choiceItemClickedListener; private List<ImageView> imageBackgroundList; private final int NO_OF_CHOICES_IN_PAGE = 6; public interface ChoiceItemClickedListener { public void onChoiceItemClicked(ProductChoice productChoice); } public ProductChoiceViewFlowAdapter(Handler handler, Context context, List<ProductChoice> list, ChoiceItemClickedListener listener) { mHandler = handler; mContext = context; mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); productChoiceList = list; pagesDisplay = Math.round(((float)(productChoiceList.size() / NO_OF_CHOICES_IN_PAGE) + 0.5f)); productChoicesMap = new HashMap<String, List<ProductChoice>>(); choiceItemClickedListener = listener; imageBackgroundList = new ArrayList<ImageView>(); for (int i = 0; i < pagesDisplay; i++) { String hashMapKey = String.valueOf(i); List<ProductChoice> tmpList = new ArrayList<ProductChoice>(); for (int j = 0; j < NO_OF_CHOICES_IN_PAGE; j++) { if (i * NO_OF_CHOICES_IN_PAGE + j >= productChoiceList.size()) { break; } ProductChoice tmpChoice = productChoiceList.get(i * NO_OF_CHOICES_IN_PAGE + j); tmpList.add(tmpChoice); } productChoicesMap.put(hashMapKey, tmpList); } } @Override public int getCount() { // TODO Auto-generated method stub return pagesDisplay; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.product_detail_view_page_item, null); holder = new ViewHolder(); holder.imageLayout1 = (RelativeLayout) convertView.findViewById(R.id.image_layout1); holder.imageBg1 = (ImageView) convertView.findViewById(R.id.selective_image_1_bg); holder.image1 = (AsyncImageView) convertView.findViewById(R.id.selective_image_1); holder.imageLayout2 = (RelativeLayout) convertView.findViewById(R.id.image_layout2); holder.imageBg2 = (ImageView) convertView.findViewById(R.id.selective_image_2_bg); holder.image2 = (AsyncImageView) convertView.findViewById(R.id.selective_image_2); holder.imageLayout3 = (RelativeLayout) convertView.findViewById(R.id.image_layout3); holder.imageBg3 = (ImageView) convertView.findViewById(R.id.selective_image_3_bg); holder.image3 = (AsyncImageView) convertView.findViewById(R.id.selective_image_3); holder.imageLayout4 = (RelativeLayout) convertView.findViewById(R.id.image_layout4); holder.imageBg4 = (ImageView) convertView.findViewById(R.id.selective_image_4_bg); holder.image4 = (AsyncImageView) convertView.findViewById(R.id.selective_image_4); holder.imageLayout5 = (RelativeLayout) convertView.findViewById(R.id.image_layout5); holder.imageBg5 = (ImageView) convertView.findViewById(R.id.selective_image_5_bg); holder.image5 = (AsyncImageView) convertView.findViewById(R.id.selective_image_5); holder.imageLayout6 = (RelativeLayout) convertView.findViewById(R.id.image_layout6); holder.imageBg6 = (ImageView) convertView.findViewById(R.id.selective_image_6_bg); holder.image6 = (AsyncImageView) convertView.findViewById(R.id.selective_image_6); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } String hashMapKey = String.valueOf(position); List<ProductChoice> tmpList = productChoicesMap.get(hashMapKey); setUpViewHolderContent(holder, tmpList); return convertView; } private void setUpViewHolderContent(ViewHolder holder, List<ProductChoice> list) { for (int i = 0; i < list.size(); i++) { final ProductChoice choice = list.get(i); String url = ApiConstant.getAPI(ApiConstant.PRODUCT_IMAGE_PATH) + choice.getImage(); switch (i) { case 0: holder.imageLayout1.setVisibility(View.VISIBLE); holder.imageBg1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub choiceClicked(v, choice); } }); imageBackgroundList.add(holder.imageBg1); holder.imageBg1.setImageBitmap(null); holder.image1.setRequestingUrl(mHandler, url, Constants.IMAGE_FOLDER); break; case 1: holder.imageLayout2.setVisibility(View.VISIBLE); holder.imageBg2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub choiceClicked(v, choice); } }); imageBackgroundList.add(holder.imageBg2); holder.imageBg2.setImageBitmap(null); holder.image2.setRequestingUrl(mHandler, url, Constants.IMAGE_FOLDER); break; case 2: holder.imageLayout3.setVisibility(View.VISIBLE); holder.imageBg3.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub choiceClicked(v, choice); } }); imageBackgroundList.add(holder.imageBg3); holder.imageBg3.setImageBitmap(null); holder.image3.setRequestingUrl(mHandler, url, Constants.IMAGE_FOLDER); break; case 3: holder.imageLayout4.setVisibility(View.VISIBLE); holder.imageBg4.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub choiceClicked(v, choice); } }); imageBackgroundList.add(holder.imageBg4); holder.imageBg4.setImageBitmap(null); holder.image4.setRequestingUrl(mHandler, url, Constants.IMAGE_FOLDER); break; case 4: holder.imageLayout5.setVisibility(View.VISIBLE); holder.imageBg5.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub choiceClicked(v, choice); } }); imageBackgroundList.add(holder.imageBg5); holder.imageBg5.setImageBitmap(null); holder.image5.setRequestingUrl(mHandler, url, Constants.IMAGE_FOLDER); break; case 5: holder.imageLayout6.setVisibility(View.VISIBLE); holder.imageBg6.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub choiceClicked(v, choice); } }); imageBackgroundList.add(holder.imageBg6); holder.imageBg6.setImageBitmap(null); holder.image6.setRequestingUrl(mHandler, url, Constants.IMAGE_FOLDER); break; default: break; } } } public void autoSelectFirstItem() { if (imageBackgroundList.size() > 0) { choiceClicked(imageBackgroundList.get(0), productChoiceList.get(0)); } } private void choiceClicked(View view, ProductChoice choice) { for (int i = 0; i < imageBackgroundList.size(); i++) { ImageView tmpImageView = imageBackgroundList.get(i); tmpImageView.setImageDrawable(mContext.getResources().getDrawable(R.drawable.bg_option)); } ImageView imageBg = (ImageView) view; imageBg.setImageDrawable(mContext.getResources().getDrawable(R.drawable.bg_option_selected)); choiceItemClickedListener.onChoiceItemClicked(choice); } static class ViewHolder { RelativeLayout imageLayout1; ImageView imageBg1; AsyncImageView image1; RelativeLayout imageLayout2; ImageView imageBg2; AsyncImageView image2; RelativeLayout imageLayout3; ImageView imageBg3; AsyncImageView image3; RelativeLayout imageLayout4; ImageView imageBg4; AsyncImageView image4; RelativeLayout imageLayout5; ImageView imageBg5; AsyncImageView image5; RelativeLayout imageLayout6; ImageView imageBg6; AsyncImageView image6; } }