package com.topnews.adapter; import java.util.ArrayList; import com.topnews.view.imageshow.TouchImageView; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.assist.FailReason; import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; import com.topnews.R; import com.topnews.tool.Options; import com.topnews.view.imageshow.ImageShowViewPager; import android.content.Context; import android.graphics.Bitmap; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; import android.widget.TextView; /** * 图片浏览的PagerAdapter */ public class ImagePagerAdapter extends PagerAdapter { Context context; ArrayList<String> imgsUrl; LayoutInflater inflater = null; protected ImageLoader imageLoader = ImageLoader.getInstance(); DisplayImageOptions options; //view内控件 TouchImageView full_image; TextView progress_text; ProgressBar progress; TextView retry; public ImagePagerAdapter(Context context, ArrayList<String> imgsUrl) { this.context = context; this.imgsUrl = imgsUrl; inflater = LayoutInflater.from(context); options = Options.getListOptions(); } /** 动态加载数据 */ @Override public void setPrimaryItem(ViewGroup container, int position, Object object) { super.setPrimaryItem(container, position, object); ((ImageShowViewPager) container).mCurrentView = ((TouchImageView) ((View)object).findViewById(R.id.full_image)); } @Override public int getCount() { return imgsUrl == null ? 0 : imgsUrl.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public int getItemPosition(Object object) { // TODO Auto-generated method stub return super.getItemPosition(object); } @Override public Object instantiateItem(ViewGroup container, int position) { View view = inflater.from(context).inflate(R.layout.details_imageshow_item, null); full_image = (TouchImageView)view.findViewById(R.id.full_image); progress_text= (TextView)view.findViewById(R.id.progress_text); progress= (ProgressBar)view.findViewById(R.id.progress); retry= (TextView)view.findViewById(R.id.retry);//加载失败 progress_text.setText(String.valueOf(position)); imageLoader.displayImage(imgsUrl.get(position), full_image, options,new ImageLoadingListener() { @Override public void onLoadingStarted(String imageUri, View view) { // TODO Auto-generated method stub progress.setVisibility(View.VISIBLE); progress_text.setVisibility(View.VISIBLE); full_image.setVisibility(View.GONE); retry.setVisibility(View.GONE); } @Override public void onLoadingFailed(String imageUri, View view, FailReason failReason) { // TODO Auto-generated method stub progress.setVisibility(View.GONE); progress_text.setVisibility(View.GONE); full_image.setVisibility(View.GONE); retry.setVisibility(View.VISIBLE); } @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { progress.setVisibility(View.GONE); progress_text.setVisibility(View.GONE); full_image.setVisibility(View.VISIBLE); retry.setVisibility(View.GONE); } @Override public void onLoadingCancelled(String imageUri, View view) { progress.setVisibility(View.GONE); progress_text.setVisibility(View.GONE); full_image.setVisibility(View.GONE); retry.setVisibility(View.VISIBLE); } }); ((ViewPager) container).addView(view); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { ((ViewPager) container).removeView((View) object); } }