位图图像未在viewpager android中显示

Posted

技术标签:

【中文标题】位图图像未在viewpager android中显示【英文标题】:bitmap Images not displaying in viewpager android 【发布时间】:2015-01-26 12:31:29 【问题描述】:

在我的 android 应用程序中,我正在使用一个标签滑动视图,其中有 4 个标签,前 2 个标签显示文本,在接下来的 2 个标签中,我需要显示经过一些后台处理后从服务器获取的位图图像。问题是位图对象可用于列表但不显示。

请看下面的代码

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);
            


      


请提供我卡在这里的输入。

【问题讨论】:

【参考方案1】:

如果您通过异步处理将onCreateView中的图像加载,它们暂时无法显示,因为它们尚未加载。如果你想在instantiateItem中设置它,你需要在图片加载后刷新你的adapter的item。

解决方法是删除所有图片加载代码,在instantiateItem中使用Picasso loader:

Picasso.with(context).load(/*your url*/url).into(/*ImageView*/imgView);

【讨论】:

以上是关于位图图像未在viewpager android中显示的主要内容,如果未能解决你的问题,请参考以下文章

比较 Android 中的位图图像

XML中的Android位图图像大小

如何在android中更改位图图像颜色?

将相机图像作为位图 Android 示例

如何从 android 中的 sdcard 图像创建位图?

Android:使用位图使用android studio显示图像时出错