package com.fancl.iloyalty.adapter; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.graphics.Bitmap; import android.os.Handler; import android.os.Parcelable; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.RelativeLayout; import com.fancl.iloyalty.AndroidProjectApplication; import com.fancl.iloyalty.ApiConstant; import com.fancl.iloyalty.Constants; import com.fancl.iloyalty.R; import com.fancl.iloyalty.factory.GeneralServiceFactory; import com.fancl.iloyalty.pojo.IchannelMagazine; import com.fancl.iloyalty.runnable.ImageReceiver; import com.fancl.iloyalty.runnable.ImageReceiverCallback; import com.fancl.iloyalty.service.ThreadService; import com.fancl.iloyalty.util.DataUtil; import com.fancl.iloyalty.util.DeviceUtil; import com.fancl.iloyalty.util.ImageCahceController; import com.fancl.iloyalty.util.LogController; import com.viewpagerindicator.IconPagerAdapter; public class BeautyTipsDetailViewPagerAdapter extends PagerAdapter implements ImageReceiverCallback, IconPagerAdapter { private Handler handler; private Activity activity; private List<RelativeLayout> mainLayoutList = new ArrayList<RelativeLayout>(); private List<ImageView> shopImageList = new ArrayList<ImageView>(); private List<String> tagList = new ArrayList<String>(); private IchannelMagazine ichannelMagazine; // For Bitmap private ImageReceiver imageReceiver; private ThreadService threadService; private ImageCahceController imageCahceController; private int padding = (int)DataUtil.dip2px(AndroidProjectApplication.application, 3); public BeautyTipsDetailViewPagerAdapter(Activity activity, IchannelMagazine ichannelMagazine, Handler handler) { // this.pictureLinkList = pictureLinkList; this.ichannelMagazine = ichannelMagazine; this.activity = activity; this.handler = handler; imageCahceController = new ImageCahceController(10); threadService = GeneralServiceFactory.getThreadService(); setUpViews(); } @Override public void destroyItem(View arg0, int arg1, Object arg2) { ((ViewPager) arg0).removeView(mainLayoutList.get(arg1)); } @Override public void finishUpdate(View arg0) { } @Override public int getCount() { return mainLayoutList.size(); } @Override public Object instantiateItem(View arg0, int arg1) { ((ViewPager) arg0).addView(mainLayoutList.get(arg1), 0); return mainLayoutList.get(arg1); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == (arg1); } @Override public void restoreState(Parcelable arg0, ClassLoader arg1) { } @Override public Parcelable saveState() { return null; } @Override public void startUpdate(View arg0) { } private void setUpViews() { int shopImageListIndex = 0; // for (int i = 0; i < 5; i++) { // String imageStr = ""; // if (i == 0) { // imageStr = ichannelMagazine.getImage1(); // } else if (i == 1) { // imageStr = hotItem.getImage2(); // } else if (i == 2) { // imageStr = hotItem.getImage3(); // } else if (i == 3) { // imageStr = hotItem.getImage4(); // } else if (i == 4) { // imageStr = hotItem.getImage5(); // } // if (!StringUtil.isStringEmpty(imageStr)) { // this.addImageToView(shopImageListIndex, imageStr); // shopImageListIndex++; // } // } } private void addImageToView(int position, String imageStr) { shopImageList.add(getImageView()); RelativeLayout relativeLayout = new RelativeLayout(activity); relativeLayout.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); relativeLayout.setPadding(padding, 0, padding, 0); relativeLayout.addView(shopImageList.get(position)); mainLayoutList.add(relativeLayout); shopImageList.get(position).setTag(imageStr); tagList.add(imageStr); getBitmapFromURL(position, (ApiConstant.getAPI(ApiConstant.HOT_ITEM_IMAGE_PATH) + imageStr)); } private ImageView getImageView() { int width = DeviceUtil.getDeviceWidth(activity); int height = 0; width = Math.round(width*0.95F); height = Math.round(((float)width/308F)*176F); ImageView imageView = new ImageView(activity); imageView.setScaleType(ScaleType.FIT_XY); // imageView.setBackgroundDrawable(activity.getResources().getDrawable(R.drawable.detail_default_pic_directory)); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(width, height); params.addRule(RelativeLayout.CENTER_IN_PARENT); imageView.setLayoutParams(params); imageView.setPadding(padding, padding, padding, padding); return imageView; } private void getBitmapFromURL(int position, String src) { imageReceiver = new ImageReceiver(activity, src, Constants.IMAGE_FOLDER, this, position, false); threadService.executImageRunnable(imageReceiver); } @Override public void updateToView(final Bitmap bitmap, final int position, final String url) { imageCahceController.thumbnailCacheController(url, bitmap); if (bitmap != null) { handler.post(new Runnable() { @Override public void run() { ImageView imageView = shopImageList.get(position); imageView.setImageBitmap(null); if (imageView != null && imageView.getTag().equals(tagList.get(position))) { LogController.log("updateToView: pos " + position + " , url " + url); imageView.setImageBitmap(bitmap); } } }); } } public void destory() { if (imageCahceController != null) { imageCahceController.clearThumbnailCache(); } } @Override public int getIconResId(int index) { // return -1; return R.drawable.shop_detail_view_pager_indicator_dots; } }