位图图像未在 viewpager 中显示 android
bitmap Images not displaying in viewpager android
在我的 android 应用程序中,我使用的是具有 4 个选项卡的选项卡滑动视图,前 2 个选项卡显示文本,在接下来的 2 个选项卡中,我需要显示一些背景后从服务器获取的位图图像 processing.Problem 是位图对象在列表中可用但未显示。
请看下面的代码
public class PhotoBeforeFoe extends Fragment {
ImageView imageView;
ExistingData existingData;
ArrayList<Bitmap> bitmaps = new ArrayList<Bitmap>();
int count;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.photos, container, false);
ViewPager viewPager = (ViewPager) rootView.findViewById(R.id.photo_pager);
imageView= new ImageView(getActivity());
String[] imagePath=getArguments().getStringArray("beforeImage");
ImageLoader imageLoader = new ImageLoader(getActivity());
bitmaps=imageLoader.getImageFromTheURL(imagePath,0,imageView);
/* int i=0;
for(Bitmap b :bitmaps){
if(bitmaps.get(i)!=null)
d[i]=new BitmapDrawable(getResources(),bitmaps.get(i));
else
break;
i++;
}*/
//Drawable d = new BitmapDrawable(getResources(),bitmaps.get(0));
System.out.println(d.length);
count=bitmaps.size();
ImagePagerAdapter adapter = new ImagePagerAdapter();
viewPager.setAdapter(adapter);
adapter.notifyDataSetChanged();
return rootView;
}
private class ImagePagerAdapter extends PagerAdapter {
@Override
public int getCount() {
//this.notifyDataSetChanged();
return d.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((ImageView) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Context context = PhotoBeforeFoeFragment.this.getActivity();
ImageView imageView = new ImageView(context);
imageView.setImageBitmap(bitmaps.get(position));
// imageView.setImageDrawable(d[position]);
((ViewPager) container).addView(imageView);
return imageView;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((ImageView) object);
}
}
}
请提供意见我卡在这里了。
如果您在onCreateView
中通过异步处理加载您的图片,它们暂时无法显示,因为它们还没有加载。如果您想在 instantiateItem
中设置它,您需要在图像加载后刷新适配器的项目。
解决方案是删除所有图像加载代码并在 instantiateItem
中使用 Picasso loader:
Picasso.with(context).load(/*your url*/url).into(/*ImageView*/imgView);
在我的 android 应用程序中,我使用的是具有 4 个选项卡的选项卡滑动视图,前 2 个选项卡显示文本,在接下来的 2 个选项卡中,我需要显示一些背景后从服务器获取的位图图像 processing.Problem 是位图对象在列表中可用但未显示。
请看下面的代码
public class PhotoBeforeFoe extends Fragment {
ImageView imageView;
ExistingData existingData;
ArrayList<Bitmap> bitmaps = new ArrayList<Bitmap>();
int count;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.photos, container, false);
ViewPager viewPager = (ViewPager) rootView.findViewById(R.id.photo_pager);
imageView= new ImageView(getActivity());
String[] imagePath=getArguments().getStringArray("beforeImage");
ImageLoader imageLoader = new ImageLoader(getActivity());
bitmaps=imageLoader.getImageFromTheURL(imagePath,0,imageView);
/* int i=0;
for(Bitmap b :bitmaps){
if(bitmaps.get(i)!=null)
d[i]=new BitmapDrawable(getResources(),bitmaps.get(i));
else
break;
i++;
}*/
//Drawable d = new BitmapDrawable(getResources(),bitmaps.get(0));
System.out.println(d.length);
count=bitmaps.size();
ImagePagerAdapter adapter = new ImagePagerAdapter();
viewPager.setAdapter(adapter);
adapter.notifyDataSetChanged();
return rootView;
}
private class ImagePagerAdapter extends PagerAdapter {
@Override
public int getCount() {
//this.notifyDataSetChanged();
return d.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((ImageView) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Context context = PhotoBeforeFoeFragment.this.getActivity();
ImageView imageView = new ImageView(context);
imageView.setImageBitmap(bitmaps.get(position));
// imageView.setImageDrawable(d[position]);
((ViewPager) container).addView(imageView);
return imageView;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((ImageView) object);
}
}
}
请提供意见我卡在这里了。
如果您在onCreateView
中通过异步处理加载您的图片,它们暂时无法显示,因为它们还没有加载。如果您想在 instantiateItem
中设置它,您需要在图像加载后刷新适配器的项目。
解决方案是删除所有图像加载代码并在 instantiateItem
中使用 Picasso loader:
Picasso.with(context).load(/*your url*/url).into(/*ImageView*/imgView);