FragmentPagerAdapter和notifyDataSetChanged

时间:2013-04-24 07:43:32

标签: android android-adapter

如何将notifyDataSetChangedFragmentPagerAdapter一起使用?

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

    }

2 个答案:

答案 0 :(得分:2)

将适配器扩展FragmentPagerAdapter更改为FragmentStatePagerAdapter,然后notifyDataSetChanged正常工作。 这对我有用。

答案 1 :(得分:1)

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