2013-04-24 44 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工作正常。 這對我有用。