0

我该如何notifyDataSetChanged使用FragmentPagerAdapter

onResume
我用过mMyFragmentPagerAdapter.notifyDataSetChanged();但没用

但是
mMyFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
工作

    public class Activity extends FragmentActivity{

     static ViewPager mViewPager;  
        private MyFragmentPagerAdapter mMyFragmentPagerAdapter;  
        public void onCreate(Bundle savedInstanceState) {  

            super.onCreate(savedInstanceState);
     mViewPager = (ViewPager) findViewById(R.id.pager);  
            mMyFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());  
            mViewPager.setAdapter(mMyFragmentPagerAdapter);  
}  
     private static class MyFragmentPagerAdapter extends FragmentPagerAdapter { 
    ...
    }

    @Override
       protected void onResume() {
           super.onResume();

    //WORKS     
             mMyFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());        
         mViewPager.setAdapter(mMyFragmentPagerAdapter);  

    //DOESN'T WORK
     mMyFragmentPagerAdapter.notifyDataSetChanged();
     mViewPager.setAdapter(mMyFragmentPagerAdapter);     

           }
       }

填充:

 public void startView() {
 this.questions.clear();  // this.questions is a LinkedList
 this.questions.add(q);

    }
4

2 回答 2

1

首先,要更新 ListView / ViewPager 或任何其他类型的视图及其适配器,您需要重新查询Cursor例如,如果您使用它来填充视图。因此,在您的情况下,您有 aViewPager和 a Adapter。因此,您首先考虑的是更新LinkedList. 在您的情况下,您做得对,但我认为this.quetions您的外部类与LinkedList您用于填充适配器的不同。在这种情况下,我建议您不要使用外部类来更新您的适配器。如果这取决于代码组织太难实现,请确保您LinkedList在您的Fragment和外部类中使用相同的。

于 2013-04-24T08:24:41.770 回答
1

更改您的适配器延伸FragmentPagerAdapterFragmentStatePagerAdapter然后notifyDataSetChanged工作正常。这对我有用。

于 2015-08-03T08:01:04.577 回答