package com.banking.xc.utils; import skytv_com.banking.enjoymovie.MyApplication; import android.net.Uri; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.Checkable; import android.widget.ImageView; import android.widget.RatingBar; import android.widget.TextView; import com.banking.xc.utils.SimpleBeanAdapter.SubViewHolder; import com.banking.xc.utils.adapter.SimpleImageProcessor; import com.banking.xc.utils.cache.GlobalImageCache; import com.banking.xc.utils.cache.GlobalImageCache.BitmapDigest; import com.banking.xc.utils.cache.GlobalImageCache.ImageState; public class SimpleSubViewBinder implements SubViewBinder { private static final String TAG = "SimpleSubViewBinder"; private static final ExceptionDrawable noPictureDrawable = new ExceptionDrawable(MyApplication.getInstance(),"",ExceptionDrawable.NOPICTURE); private SimpleImageProcessor imageProcessor; public SimpleSubViewBinder(SimpleImageProcessor imageProcessor) { this.imageProcessor = imageProcessor; } @Override public boolean bind(SubViewHolder h) { if (Log.D) { Log.d(SimpleSubViewBinder.class.getName(), "bind() -->> "); } if (subBind(h)) { return true; } View v = h.getSubView(); Object data = h.getSubData(); if (v instanceof Checkable && data instanceof Boolean) { // Checkable 自动绑定 if (Log.D) { Log.d(SimpleSubViewBinder.class.getName(), "bind() checkable -->> "); } ((Checkable) v).setChecked((Boolean) data); return true; } else if (v instanceof TextView && data instanceof CharSequence) { // TextView 自动绑定 if (Log.D) { Log.d(SimpleSubViewBinder.class.getName(), "bind() text -->> "); } ((TextView) v).setText((CharSequence) data); return true; } //new added else if(v instanceof RatingBar&& data instanceof Float){ ((RatingBar)v).setRating((Float)data); } else if (v instanceof ImageView) { if(data == null){ ((ImageView) v).setImageDrawable(noPictureDrawable); return true; } if (Log.D) { Log.d(SimpleSubViewBinder.class.getName(), "bind() image data -->>"+data); } // ImageView 自动绑定 if (data instanceof Integer) { // id形式 if (Log.D) { Log.d(SimpleSubViewBinder.class.getName(), "bind() image id 1 -->> "); } ((ImageView) v).setImageResource((Integer) data); //((ImageView) v).setBackgroundResource(Integer.parseInt((String) data)); return true; } else if (data instanceof String) { try { // id形式 if (Log.D) { Log.d(SimpleSubViewBinder.class.getName(), "bind() image id 2 -->> "); } ((ImageView) v).setImageResource(Integer.parseInt((String) data)); //((ImageView) v).setBackgroundResource(Integer.parseInt((String) data)); return true; } catch (NumberFormatException e) { //还有汉字情况...搜索“都”,parser问题 //TODO String str = (String) data; if(Log.D){ Log.d(TAG, "String ImageData"+str); } if(str.startsWith("//")){ //处理拿到的数据少了http的情况 str = "http:"+str; } if (!str.startsWith("http")) { // uri形式 if (Log.D) { Log.d(SimpleSubViewBinder.class.getName(), "bind() image uri -->> "); } ((ImageView) v).setImageURI(Uri.parse(str)); return true; } else { // url形式 if (Log.D) { Log.d(SimpleSubViewBinder.class.getName(), "bind() image url -->> "); } BitmapDigest bitmapDigest = new GlobalImageCache.BitmapDigest(str); if (Log.D) { Log.d(SimpleSubViewBinder.class.getName(), "bind() bitmapDigest -->> " + bitmapDigest); } LayoutParams layoutParams = v.getLayoutParams(); if (layoutParams == null || layoutParams.width < 1 || layoutParams.height < 1) { v.measure(DPIUtil.dip2px(ImageUtil.IMAGE_MAX_WIDTH), DPIUtil.dip2px(ImageUtil.IMAGE_MAX_HEIGHT)); layoutParams = v.getLayoutParams(); } if (layoutParams.width > 0) { if (Log.D) { Log.d(SimpleSubViewBinder.class.getName(), "layoutParams.width -->> " + layoutParams.width); } bitmapDigest.setWidth(layoutParams.width); } if (layoutParams.height > 0) { if (Log.D) { Log.d(SimpleSubViewBinder.class.getName(), "layoutParams.height -->> " + layoutParams.height); } bitmapDigest.setHeight(layoutParams.height); } ImageState imageState = GlobalImageCache.getImageState(bitmapDigest); if (Log.D) { Log.d(SimpleSubViewBinder.class.getName(), "bind() imageState -->> " + imageState); } imageProcessor.show(h, imageState); return true; } } } } if (Log.D) { Log.d(SimpleSubViewBinder.class.getName(), "bind() return false -->> "); } return false; } public SimpleImageProcessor getSimpleImageProcessor() { return imageProcessor; } protected boolean subBind(SubViewHolder h) { return false; } }