2013-04-24 41 views
0

如何使用notifyDataSetChangedFragmentPagerAdapterFragmentPagerAdapter和notifyDataSetChanged

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

    } 
+0

你是否在任何地方用新数据填充适配器? – hardartcore 2013-04-24 07:45:06

+0

是的,我从外部类填充它 – metemet06 2013-04-24 07:46:45

+0

你可以请张贴一些更多的代码实际上你是从外部类填充你的适配器? – hardartcore 2013-04-24 07:47:22

回答

1

首先,要更新一个ListView/ViewPager或任何其他类型的竞争w并且它是适配器,如果您正在使用它来填充视图,则需要重新查询Cursor。所以在你的情况下,你有一个ViewPager和一个Adapter。所以你首先考虑的是你更新你的LinkedList。在你的情况下你做得对,但在我看来你的外部类中的this.quetions与你用来填充你的适配器的LinkedList不同。在这种情况下,我建议你不要使用外部类来更新你的适配器。如果根据代码组织难以实现,请确保在Fragment和外部类中使用相同的LinkedList

2

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