ViewPager onPageSelected第一页 [英] ViewPager onPageSelected for first page

查看:1698
本文介绍了ViewPager onPageSelected第一页的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这样看来,使用ViewPager时,该onPageSelected监听器不会被调用的第一页相同的问题的这个

So it appears that when using a ViewPager, the onPageSelected listener does not get called for the first page same issue as this.

我有一些逻辑来填充一些更昂贵的UI元素当前选定的页面,这个工程时,页面被更改,但不为第一页的工作。

I have some logic that populates some more expensive UI elements for the currently selected page and this works when page is changed, but it doesn't work for the first page.

如果我聆听后设置当前项目,则回调被炒鱿鱼的第一页,但认为还没有被初始化,所以我不能操纵它:

If I set the current item after the listener, the callback gets fired for the first page, but the view has not been initialized yet, so I can't manipulate it:

// 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); 

下面视图最终被空,因为 PagerAdapter.instantiateItem 至今尚未运行。所以我想我的问题是,此时在活动周期我可以肯定的是,ViewPager已初始化的看法?我试图做这里面的 Activity.onAttachedToWindow Activity.onResume 但现在看来这两个前<$ C被解雇$ C> PagerAdapter.instantiateItem 。

Here view ends up being null because PagerAdapter.instantiateItem has not yet been run. So I guess my question is, at which point in the activity lifecycle can I be certain that the ViewPager has initialized the view? I tried doing this inside Activity.onAttachedToWindow and Activity.onResume but it appears both of these get fired before PagerAdapter.instantiateItem.

推荐答案

尝试使用碎片!

public class SectionsPagerAdapter extends FragmentPagerAdapter {

    public SectionsPagerAdapter() {
        super(getSupportFragmentManager());
    }

    @Override
    public Fragment getItem(int i) {
        Fragment fr = null;
        if (i==0)
           fr = new sec0frag();
        else if (i==1)
           fr = new sec1frag();
        else if (i==2)
           fr = new sec2frag();
        return fr;
    }

    @Override
    public int getCount() {
        return 3;
    }
}

和创建3个片段班

例如。

    public static class sec0frag extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
                     // here is initialize for first time to view pages.!
        }
    }

这篇关于ViewPager onPageSelected第一页的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆