0

在我的 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);
            }


      }

}

请提供我被困在这里的输入。

4

1 回答 1

0

如果您onCreateView通过异步处理加载图像,它们暂时无法显示,因为它们尚未加载。如果要将其设置为instantiateItem,则需要在加载图像后刷新适配器的项目。

解决方案是删除所有图像加载代码并使用Picasso 加载instantiateItem

Picasso.with(context).load(/*your url*/url).into(/*ImageView*/imgView);
于 2015-01-26T12:47:11.327 回答