在viewpager中更新gridview

时间:2014-02-18 03:42:05

标签: android gridview android-viewpager

我一直在寻找一种方法来刷新viewpager中的gridview,我还没有找到答案。更具体地说,我的问题是我有一个带有三个网格视图的视图寻呼机。每个网格视图都由一个arraylist填充,如果更改了arraylist,则gridview保持不变。我怎样才能让它更新?我试过在适配器上调用notifydatasetchange,但没有帮助。

这是我的视图寻呼机适配器的代码

public class FavoritesViewPager extends FragmentStatePagerAdapter {     
    public FavoritesViewPager(FragmentManager fm) {
        super(fm);
    }
    @Override
    public Fragment getItem(int i) {
        UserDatabaseHandler UDH = new UserDatabaseHandler(getActivity());
        switch (i) {
        case 0:
            ArrayList<Exercise> strengthList = UDH.getFavoriteExercises("strengthexercises");
            UDH.close();
            return FavoriteExercises.newInstance(strengthList);
        case 1:
            ArrayList<Exercise> stretchList = UDH.getFavoriteExercises("stretchingexercises");
            UDH.close();
            return FavoriteExercises.newInstance(stretchList);
        case 2:
            ArrayList<Exercise> warmupList = UDH.getFavoriteExercises("warmupexercises");
            UDH.close();
            return FavoriteExercises.newInstance(warmupList);
        default:
            ArrayList<Exercise> temp = UDH
                    .getFavoriteExercises("warmupexercises");
            UDH.close();
            return FavoriteExercises.newInstance(temp);
        }
    }
    @Override
    public int getCount() {
        return 3;
    }
}

1 个答案:

答案 0 :(得分:1)

如果您的寻呼机只有两个页面,则应使用FragmentPagerAdapter。您可以通过findFragmentByTag获取片段,然后调用此片段的更新方法。

String fragmentName = makeFragmentName(_viewPager.getId(), i);
Fragment frag = _fragmentManager.findFragmentByTag(fragmentName);
private static String makeFragmentName(int viewId, int index) {
    return "android:switcher:" + viewId + ":" + index;
}