不推荐使用PagerAdapter.instantiateItem()方法

Jua*_*ana 12 android android-pageradapter

我很好奇为什么instantiateItem被弃用以支持它的新版本.变化是它现在接受ViewGroup而不是更普遍View.

不推荐的方法

public Object instantiateItem (View container, int position)
Run Code Online (Sandbox Code Playgroud)

新方法

public Object instantiateItem (ViewGroup container, int position)
Run Code Online (Sandbox Code Playgroud)

注意:这种变化也发生在destroyItem,startUpdate,finishUpdatesetPrimaryItem.

Sco*_*t W 12

我的猜测是它完成了,因为这些方法总是用一个ViewGroup而不是更一般的方式来调用View.因此,将参数提供为ViewGroup便利,允许开发人员避免始终检查和转换输入.所以不要一遍又一遍地看到这些代码:

ViewGroup parent;
if (container instanceof ViewGroup) {
    parent = (ViewGroup) container;
}
else {
    throw new IllegalArgumentException("container must be a ViewGroup");
}
Run Code Online (Sandbox Code Playgroud)

实施者可以直接使用container.

而且,实际上,您可以看到这正是Adam Powell提交消息中的原因:

错误5327146 - ViewPager API调整和文档

PagerAdapter以前将View实例作为其几个方法的参数,导致在适配器实现中大量转换为ViewGroup.

更改这些以采用ViewGroups.默认实现使用现有签名调用已弃用的存根,允许当前适配器保持未修改的工作状态.