Update ViewPager dynamically?

后端 未结 20 3459
时光说笑
时光说笑 2020-11-22 02:00

I can\'t update the content in ViewPager.

What is the correct usage of methods instantiateItem() and getItem() in FragmentPagerAdapter class?

I was using onl

20条回答
  •  暖寄归人
    2020-11-22 02:32

    I had been trying so many different approaches, none really sove my problem. Below are how I solve it with a mix of solutions provided by you all. Thanks everyone.

    class PagerAdapter extends FragmentPagerAdapter {
    
        public boolean flag_refresh=false;
    
        public PagerAdapter(FragmentManager fm) {
            super(fm);
        }
    
        @Override
        public Fragment getItem(int page) {
            FragmentsMain f;
            f=new FragmentsMain();
            f.page=page;
            return f;
        }
    
        @Override
        public int getCount() {
            return 4;
        }
    
        @Override
        public int getItemPosition(Object item) {
            int page= ((FragmentsMain)item).page;
    
            if (page == 0 && flag_refresh) {
                flag_refresh=false;
                return POSITION_NONE;
            } else {
                return super.getItemPosition(item);
            }
        }
    
        @Override
        public void destroyItem(View container, int position, Object object) {
    
            ((ViewPager) container).removeView((View) object);
        }
    }
    

    I only want to refresh page 0 after onResume().

     adapter=new PagerAdapter(getSupportFragmentManager());
     pager.setAdapter(adapter);
    
    @Override
    protected void onResume() {
        super.onResume();
    
        if (adapter!=null) {
            adapter.flag_refresh=true;
            adapter.notifyDataSetChanged();
        }
    }
    

    In my FragmentsMain, there is public integer "page", which can tell me whether it is the page I want to refresh.

    public class FragmentsMain extends Fragment {
    
    private Cursor cursor;
    private static Context context;
    public int page=-1;
    

提交回复
热议问题