ViewPager unable to load images lazily with Picasso(ViewPager 无法使用 Picasso 懒惰地加载图像)
问题描述
我在 TabHost
的第一个选项卡中有一个 FragmentActivity
,而 FragmentActivity
本身包含一个 ViewPager
.
I have a FragmentActivity
in the first tab of a TabHost
, and the FragmentActivity
itself holds a ViewPager
.
ViewPager
的 setAdapter()
方法使用一组 Fragment
设置 FragmentPagerAdapter
.目标是在 TabHost
的第一个窗格中显示可滑动的图像.
The ViewPager
's setAdapter()
method sets a FragmentPagerAdapter
with a set of Fragment
s. The goal is to have swipeable images in the first pane of the TabHost
.
为了测试它,我加载了我在项目的 drawable
目录中本地保存的一堆图像.一切都很顺利.
To test it, I was loading a bunch of images that I had kept locally in the project's drawable
directory. Everything worked beautifully.
在测试了这个初始设置之后,我正在从 REST Web 服务下载一堆图像 URL.我希望这些图像在 ViewPager
中延迟加载,我尝试在三个地方调用 Picasso 的 load()
方法:
After having tested this initial setup, I'm downloading a bunch of image URLs' off a REST web service. I want these images to load lazily in the ViewPager
, and I tried calling Picasso's load()
method in three places:
ViewPager
的Fragment
的onCreateView()
方法(与我之前从中加载图像的位置相同)本地drawable
目录).
The
onCreateView()
method of theViewPager
'sFragment
s (the same place where I was earlier loading images from the localdrawable
directory).
@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;
}
ViewPager
的Fragment
s的onViewCreated()
方法.
@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);
}
FragmentPagerAdapter
的onInstantiateItem()
方法.
@Override
public Object instantiateItem(ViewGroup container, int position) {
View v = inflater.inflate(R.layout.layout_fragment, container, false);
Context context = Tab1Activity.this;
String url = getItem(position).getArguments().getString("IMAGE_RESOURCE_URL");
ImageView imageView = (ImageView)v.findViewById(R.id.fragment_image);
Picasso.with(context).load(url).fit().into(imageView);
return v;
}
这些方法都不起作用.我知道毕加索不是问题,因为前几天我尝试在 ListView
中使用毕加索,它就像一个魅力.我做错了什么?
None of these methods worked. I know that its not a problem with Picasso because the other day I tried using Picasso in a ListView
and it worked like a charm. What am I doing wrong ?
推荐答案
您的第一种方法应该可以正常工作...如果您正确实施它.我希望您的代码会因 NullPointerException
而崩溃.
Your first approach should work fine... if you implement it correctly. I would expect your code to crash with a NullPointerException
.
替换:
ImageView imageView = (ImageView)getView().findViewById(R.id.fragment_image);
与:
ImageView imageView = (ImageView)myFragmentView.findViewById(R.id.fragment_image);
这篇关于ViewPager 无法使用 Picasso 懒惰地加载图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:ViewPager 无法使用 Picasso 懒惰地加载图像
基础教程推荐
- Android:对话框关闭而不调用关闭 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01