package cn.mutils.app.ui; import android.content.Context; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.ImageView.ScaleType; import com.lidroid.xutils.BitmapUtils; import java.util.List; import cn.mutils.core.IPhotoItem; @SuppressWarnings({"UnnecessaryInterfaceModifier", "unused"}) public class ImagePager extends ViewPager { public static interface OnImageItemClickListener { void onItemClick(ImagePager pager, View v, int position, IPhotoItem item); } protected BitmapUtils mBitmapUtils; protected ImagePagerAdapter mAdapter; protected OnImageItemClickListener mOnImageItemClickListener; public ImagePager(Context context) { super(context); init(context, null); } public ImagePager(Context context, AttributeSet attrs) { super(context, attrs); init(context, attrs); } protected void init(Context context, AttributeSet attrs) { mBitmapUtils = new BitmapUtils(context); mAdapter = new ImagePagerAdapter(); super.setAdapter(mAdapter); } public int getCount() { return mAdapter.getCount(); } @Override public void setAdapter(PagerAdapter adapter) { throw new UnsupportedOperationException(); } public void setDataProvider(List<? extends IPhotoItem> dataProvider) { mAdapter.setDataProvider(dataProvider); if (mAdapter.getCount() > 0) { super.setCurrentItem(0); } } public List<? extends IPhotoItem> getDataProvider() { return mAdapter.getDataProvider(); } public void setOnImageItemClickListener(OnImageItemClickListener listener) { mOnImageItemClickListener = listener; } protected void onClickItem(View v, int position) { if (mOnImageItemClickListener == null) { return; } IPhotoItem item = mAdapter.getDataProvider().get(position); mOnImageItemClickListener.onItemClick(this, v, position, item); } class ImagePagerAdapter extends PagerAdapter { protected List<? extends IPhotoItem> mDataProvider; @Override public int getCount() { if (mDataProvider == null) { return 0; } return mDataProvider.size(); } public List<? extends IPhotoItem> getDataProvider() { return mDataProvider; } public void setDataProvider(List<? extends IPhotoItem> dataProvider) { mDataProvider = dataProvider; notifyDataSetChanged(); } @Override public View instantiateItem(ViewGroup container, int position) { ImageView imageView = new ImageView(getContext()); imageView.setId(position); imageView.setScaleType(ScaleType.CENTER_CROP); imageView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); imageView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { onClickItem(v, v.getId()); } }); mBitmapUtils.display(imageView, mDataProvider.get(position).photoUrl()); container.addView(imageView); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } } }