账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    viewPager启动 如何实现指定默认加载页面,不同于以前创建viewpager之前有集合
    21
    0

    问题:当我从list点击启动pagerActivity时候,,此时pagerActivity构建的集合为空,随着viewPager启动页面的增加,集合逐个增加。问题是如何实现我点击list某个位置时,getItem获取的位置(此位置之前没加载过)position是该位置,而不是默认加载的??? 谢谢!!!

    //pagerActivity

    public void onCreate(Bundle savedInstanceState)

    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detailed_pager);
    
        mViewPager=(ViewPager)findViewById(R.id.activity_word_detailed_view_pager);
    
        final String word=(String)getIntent().getSerializableExtra(EXTRA_WORD);
    
        Log.d(TAG,"获得的Word为:"+word);
    
        FragmentManager fragmentManager=getSupportFragmentManager();
        mViewPager.setAdapter(new FragmentStatePagerAdapter(fragmentManager) {
    
            @Override
            public Fragment getItem(int position) {
                Log.d(TAG," getItem 被调用****"+position);
                return WordDetailedFragment.newInstance(position);
            }
    
            /*
             他会默认加载0.1 页,,所以当点击某一项时, position仍然为0.1 ? ????
             但是呢,,当已经加载过的viewpager  ,,从list打开建立活动时。,会有之前加载过的状态,
             此时,调用setCurrentItem 有用,
             因此,,解决,指定默认加载
             */
            @Override
            public int getCount() {
    
                Log.d(TAG,"getCount 被调用***");
    
                return 1530;
            }
        });
    
        mWordInfos=WordDetailedFragment.getWordInfos();
    
        for (int i=0;i<mWordInfos.size();i++)
        {
            if (mWordInfos.get(i).getWord().equals(word))
            {
                Log.d(TAG," setCurrentItem  的  i  :" +i);
                Log.d(TAG,"mWordInfos.get(i).getIndex()  ===  "+mWordInfos.get(i).getIndex());
                mViewPager.setCurrentItem(mWordInfos.get(i).getIndex());
                break;
            }
        }
    }
    

    //viewPager的fragment

    @Override

    public void onCreate(@Nullable Bundle savedInstanceState) {
    
        position=(int)getArguments().getSerializable(ARG_WORD);
    
        mWordItemInfos=VocabularyListFragment.getWordItemInfos();
        word=mWordItemInfos.get(position).getWord();
    
        Log.d(TAG,"getItem  传来的position :"+position+"对应的应该查询的单词是:    "+word);
    
        sUrl=sUri.buildUpon()
                .appendQueryParameter("w",word)
                .build().toString();
    
        new VocabularyItemTask().execute();
    
        super.onCreate(savedInstanceState);
    }
    
    public static Fragment newInstance(int positon)
    {
        Bundle args=new Bundle();
        args.putSerializable(ARG_WORD,positon);
    
        WordDetailedFragment wordDetailedFragment=new WordDetailedFragment();
        wordDetailedFragment.setArguments(args);
    
        return wordDetailedFragment;
    }
    

    * 自己看了日志,问题只是出在getItem 传来的position 上面,只是默认加载的。。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 心如荒岛 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部