ViewPager无法使用Picasso懒洋洋地加载图片

时间:2014-02-08 14:59:19

标签: android android-fragments android-viewpager fragmentpageradapter picasso

我在FragmentActivity的第一个标签中有TabHostFragmentActivity本身包含ViewPager

ViewPager的{​​{1}}方法设置setAdapter()一组FragmentPagerAdapter s。目标是在Fragment的第一个窗格中显示可滑动的图像。

为了测试它,我正在加载一堆我在本地项目的TabHost目录中保存的图像。 一切都很美好。

在测试了这个初始设置之后,我从REST Web服务下载了一堆图像URL。我希望这些图片在drawable中延迟加载,我尝试在三个地方调用Picasso的ViewPager方法:

  1. load() onCreateView()的{​​{1}}方法(我之前从本地ViewPager目录加载图片的地方)。< / p>

    Fragment
  2. drawable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View myFragmentView = inflater.inflate(R.layout.layout_fragment, container, false); ImageView imageView = (ImageView)getView().findViewById(R.id.fragment_image); String url = getArguments().getString(IMAGE_RESOURCE_URL); Context context = getActivity(); Picasso.with(context).load(url).fit().into(imageView); return myFragmentView; } 的{​​{1}}方法。

    onViewCreated()
  3. ViewPager的{​​{1}}方法。

    Fragment
  4. 这些方法都不起作用。我知道这不是毕加索的问题,因为有一天我尝试在@Override public void onViewCreated(View view, Bundle savedInstanceState){ Context context = getActivity(); String url = getArguments().getString(IMAGE_RESOURCE_URL); ImageView imageView = (ImageView)view.findViewById(R.id.fragment_image); Picasso.with(context).load(url).fit().into(imageView); } 中使用毕加索,它就像一个魅力。我做错了什么?

2 个答案:

答案 0 :(得分:1)

您的第一种方法应该可以正常工作......如果您正确实施它。我希望你的代码会崩溃NullPointerException

替换:

ImageView imageView = (ImageView)getView().findViewById(R.id.fragment_image);

使用:

ImageView imageView = (ImageView)myFragmentView.findViewById(R.id.fragment_image);

答案 1 :(得分:0)

您的延迟加载程序应该在

的上下文中工作

Fragment.createView()

其中Fragment是由ViewPager和FragmentpagerAdapter分页的集合之一

这是你的选择之一。

我使用另一个lazyloader来管理加载图像所需的位图的本地memcache和本地filesys缓存。在“OnCreateView()”时,如果位图尚未缓存,它将进入网络以获取加载器的URL。