FragmentStatePagerAdapter没有调用getItem方法

6
问题:我有一个ViewPager,使用FragmentStatePagerAdapter进行设置,并使用全局arraylist作为其fragment的内容。当我想要更新这个全局array时,我只需调用arraylist.add()方法,实例化一个新的FragmentStatePagerAdapter和一个新的ViewPager。然而,出于某种原因,Adapter根本没有调用getItem。并不是因为它的数据集为空(它不是),也不是其他任何原因...它只是没有被调用。我甚至设置了一个日志来测试它。以下是我的代码:
// Create the adapter that will return a fragment for event
SectionsPagerAdapter adapter = new SectionsPagerAdapter(getFragmentManager());

// Set up the ViewPager with the sections adapter.
ViewPager pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(adapter);

/**
 * A FragmentStatePagerAdapter that returns a fragment corresponding to
 * an index of the global events array
 */
public class SectionsPagerAdapter extends FragmentStatePagerAdapter {

    public SectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    /**
     * Called to instantiate the fragment for the given page
     */
    @Override
    public Fragment getItem(int position) {
        Log.v("Miles", "getItem called");
        // getItem is called to instantiate the fragment for the given page.
        return EventFragment.newInstance(events.get(position));
    }

    /**
     * Total number of pages (fragments) there are
     * Given by size of the global events array minus 1
     */
    @Override
    public int getCount() {
        return events.size() - 1;
    }
}

这种设置可能会有什么问题吗?我可以验证全局arraylist中有数据,但没有片段被实例化以反映出来。


3
你不需要创建一个新的适配器。将条目添加到你的列表中,并在现有适配器上调用“notifyDataSetChanged”。当ViewPager需要下一页时才会调用“getItem”,当你更改适配器数据时,它不会立即被调用。 - Karakuri
好的,当我将项目添加到ArrayList中,然后返回到持有ViewPager的活动时,没有显示任何内容。也就是说,我刚刚添加到ArrayList中的项目不在那里。通过调用“getCount()”确认适配器中没有添加新片段。 - Miles Peele
1
你正在调用 notifyDataSetChanged 吗? - Karakuri
我在,是的。抱歉回复晚了,我在开会。 - Miles Peele
所以,我通过将我的适配器设为全局变量来解决了这个问题。我一开始有点犹豫,因为我觉得这样看起来很丑,但是它确实起作用了。谢谢你的帮助。 - Miles Peele
1个回答

0

你可以尝试重写getItemPosition

override fun getItemPosition(object: Any): Int { return POSITION_NONE }


这并没有回答问题。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - configbug

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接