我一直在寻找一种方法来刷新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;
}
}
答案 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;
}