我试图通过 getchildat(index) 从 pageviewer 获取当前视图,然后从视图中获取位图,但它总是返回 null 我从 MyPageChangeListener 获取我的索引,我试图设置索引的手动值但仍然返回 null
public class ImagePagerActivity extends Activity {
private static final String STATE_POSITION = "STATE_POSITION";
DisplayImageOptions options1;
public static ViewPager pager;
ImageLoader imageLoader;
InputStream inputStream2;
List<String> lol;
private Bitmap bitmapz;
int pagerPosition;
int positions;
boolean _isJustAfterResume = false;
int zpositions;
int width;
int height;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fullimage);
Intent i = getIntent();
List<String> lol = i.getStringArrayListExtra("lol");
this.lol = lol;
pagerPosition = i.getExtras().getInt("id");
if (savedInstanceState != null) {
pagerPosition = savedInstanceState.getInt(STATE_POSITION);
}
options1 = new DisplayImageOptions.Builder()
.showImageForEmptyUri(R.drawable.ic_stub)
.showImageOnFail(R.drawable.ic_stub)
.resetViewBeforeLoading()
.cacheOnDisc()
.imageScaleType(ImageScaleType.EXACTLY)
.bitmapConfig(Bitmap.Config.RGB_565)
.displayer(new FadeInBitmapDisplayer(300))
.build();
ImagePagerAdapter imagePagerAdapter = new ImagePagerAdapter(lol);
pager = (ViewPager) findViewById(R.id.myfivepanelpager);
pager.setAdapter(imagePagerAdapter);
pager.setCurrentItem(pagerPosition);
registerForContextMenu(pager);
View child = pager.getChildAt(zpositions); // always returns null
ImageView currentImageView = (ImageView) child.findViewById(R.id.image1);
BitmapDrawable bd = (BitmapDrawable) currentImageView.getDrawable();
Bitmap bmp = bd.getBitmap();
pager.setOnPageChangeListener(new MyPageChangeListener(){
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
}
});
}
private class ImagePagerAdapter extends PagerAdapter {
private List<String> images;
private LayoutInflater inflater;
private ImageLoader imageLoader;
private int nposition;
private Bitmap zBitmap;
private View imageLayout;
ViewPager viewPager;
ImagePagerAdapter(List<String> lol) {
this.images = lol;
inflater = getLayoutInflater();
ImageLoader imageLoader = ImageLoader.getInstance();
this.imageLoader = imageLoader;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((View) object);
}
@Override
public void finishUpdate(View container) {
}
@Override
public int getCount() {
return images.size();
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
viewPager = (ViewPager) container;
View imageLayout = inflater.inflate(R.layout.item_pager_image, container, false);
this.imageLayout = imageLayout;
ImageView imageView = (ImageView) imageLayout.findViewById(R.id.image1);
String imString = images.get(position);
String imageUria = "assets://"+imString;
this.nposition = position;
imageLoader.displayImage(imageUria, imageView, options1 );
viewPager.addView(imageLayout, 0);
return imageLayout;
}
public boolean isViewFromObject(View view, Object object) {
return view.equals(object);
}
public void restoreState(Parcelable state, ClassLoader loader) {
}
public Parcelable saveState() {
return null;
}
public void startUpdate(View container) {
}
}
}