我们来实现页面标题文字的更新。Android SDK提供了针对ViewPager页面切换的监听器组件OnPageChangeListener
类,它是作为ViewPager
类的内部类定义的。首先为MainActivity
定义监听器成员mPageListener
:
注意这里的Java语言特性。在这里对
OnPageChangeListener
类进行了匿名的扩展并生成新的对象而由成员mPageListener
来引用。
其次,要使用异步任务获取到的天气数据对象,所以要进行一点改造。定义天气对象列表作为MainActivity
类的成员:
然后修改异步任务RequestWeatherTask
的onPostExecute()
方法,将其获取到的全部天气数据对象填入mWeathers
列表:
现在我们的注意力回到监听器对象。页面切换事件由回调方法onPageSelected()
来处理。它的参数即表示当前切换到的页面序号。我们只需要在其被调用时取出对应的天气对象,用对应的位置信息设置标题文字即可。
先定义一个根据当前页面序号来设置标题上的位置文字的函数setTitleAddress()
:
然后再监听器对象的onPageSelected()
方法中调用:
这样即实现了当用户切换不同城市页面时,页面标题上的地址也跟随变化。但是还有个问题:如果用户不进行页面切换,此时如果重新加载数据且地址文字发生变化,则此种变化仍然无法反应到用户界面上。所以还需要在加载数据之后主动刷新一下页面标题。修改RequestWeatherTask
的onPostExecute()
方法:
运行程序查看效果如下:
最后,我们来实现背景大图的加载和显示。
网友评论