gpt4 book ai didi

android - ViewPager onPageSelected 用于第一页

转载 作者:IT老高 更新时间:2023-10-28 23:00:56 26 4
gpt4 key购买 nike

所以看起来当使用 ViewPager 时,onPageSelected 监听器不会被调用为第一页与 this 相同的问题.

我有一些逻辑可以为当前选定的页面填充一些更昂贵的 UI 元素,并且在页面更改时可以使用,但 它不适用于第一页。

如果我在监听器之后设置当前项,则第一页会触发回调,但 View 尚未初始化,因此我无法对其进行操作:

// Inside PagerAdapter.instantiateItem

ViewHolder vh = new ViewHolder();
cursor.moveToPosition(position);
vh.view = adapter.newView(context, cursor, null);
// Set position as tag so we can retrieve it with findViewByTag
vh.view.setTag(position);

((ViewPager) collection).addView(vh.view,0);

return vh;

// Inside MyActivity.onCreate

pagerAdapter = new SingleMessagePagerAdapter(this, cursor);
pager = (ViewPager)findViewById(R.id.message_pager);
pager.setAdapter(pagerAdapter);
pager.setOnPageSelectedListener(this);
pager.setCurrentItem(selectedItem);

// Inside MyActivity.onPageSelected

// Retrieve tagged view
View view = pager.findViewWithTag(position);

这里 view 最终为 null,因为 PagerAdapter.instantiateItem 尚未运行。所以我想我的问题是,在 Activity 生命周期的哪个阶段,我可以确定 ViewPager 已经初始化了 View ?我尝试在 Activity.onAttachedToWindowActivity.onResume 中执行此操作,但似乎这两个都在 PagerAdapter.instantiateItem 之前被触发。

最佳答案

我想知道为什么您不只是在 Fragment 本身而不是在托管 Activity 中提到的逻辑。 ViewPager 在当前 fragment 的任一侧缓冲几个 fragment ,因此它们在后台设置,并在用户滑动到它们时准备就绪。将逻辑放入 onPageSelected 将意味着绕过此功能,并且在用户滑动到页面之前不会执行繁重的工作。

假设由于某种原因您不能执行上述操作,为什么不使用 Interface with a callback function .在 fragment 的 onCreateView 函数中触发回调,让 Activity 知道它已完全实例化。

关于android - ViewPager onPageSelected 用于第一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12154870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com