package cn.flightfeather.thirdapp.adapter; import android.content.Context; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.support.v4.view.PagerAdapter; import android.view.View; import android.view.ViewGroup; import com.bm.library.PhotoView; import java.io.File; import java.util.ArrayList; import java.util.List; import cn.flightfeather.thirdapp.util.ScreenUtils; import cn.flightfeather.thirdapp.util.photo.PhotoUtil; /** * Created by hyhb01 on 2018/3/26. */ public class CommonPagerAdapter extends PagerAdapter { private List fileList; private List viewList; private List titleList; private Context context; private View currentView; private boolean hasAdd = false; public CommonPagerAdapter(List viewList, List titleList, Context context) { this.viewList = viewList; this.titleList = titleList; this.fileList = new ArrayList<>(); } public CommonPagerAdapter(List fileList, Context context) { this.fileList = fileList; this.context = context; this.viewList = new ArrayList(); this.titleList = new ArrayList<>(); for (int i = 0; i < fileList.size(); i++) { viewList.add(new PhotoView(context)); } } @Override public int getCount() { return fileList.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) { Bitmap bm = PhotoUtil.decodeSampledBitmapFromResource(fileList.get(position).getAbsolutePath(), ScreenUtils.getScreenWidth(context), ScreenUtils.getScreenHeight(context)); viewList.get(position).setImageBitmap(bm); container.addView(viewList.get(position)); return viewList.get(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) { BitmapDrawable bitmapDrawable = (BitmapDrawable) viewList.get(position).getDrawable(); viewList.get(position).setImageDrawable(null); if (bitmapDrawable != null) { Bitmap bitmap = bitmapDrawable.getBitmap(); if (bitmap != null) { bitmap.recycle(); System.gc(); } } container.removeView(viewList.get(position)); } @Override public CharSequence getPageTitle(int position) { return titleList.get(position); } }