Muk*_*ana 6 android android-fragments android-viewpager fragmentstatepageradapter
在我的一个应用程序中,我需要在ViewPager的两侧添加Fragments.首先,我将获得5个Feed的常量,我的ViewPager将在索引2处显示feed,即我当前显示的Fragment将包含索引2处的数据.因此,总体上我的ViewPager将在开始时显示5个Feed的中心,并且我只需将ViewPager当前Item设置为2即可实现
viewPager.setCurrentItem(2);
现在用户可以滑动两边,当他从中心位置向左滑动时,我会查找下一个Feed,即从服务器获取并在我的ViewPager的零索引处添加Feed,就像这样
feedsList.add(0, modelClassObject); // feedsList will contain all feeds and has been used by adapter to show data in fragments.
adapter.notifyDataSetChanged();
当我从中心位置向右滑动时,我会在最后添加Feed,就像这样
feedsList.add(modelClassObject);
adapter.notifyDataSetChanged();
现在的问题是,如果我只在右侧添加Feed,即在feedsList的末尾,一切正常,但是当我在零索引处添加Feed时出现问题.我的适配器没有显示已添加到零位置的新Feed,而是重复现有Feed中的一个,而右侧但不是左侧.我已经尝试了一切,但没有什么是正确的.这是我的适配器代码.
private class HorizontalPagerAdapter extends FragmentStatePagerAdapter {
    public HorizontalPagerAdapter(FragmentManager fm) {
        super(fm);
    }
    @Override
    public Fragment getItem(int arg0) {
        return FeedUserProfileFragment.newInstance(feedsList.get(arg0),
                arg0);
    }
    @Override
    public int getCount() {
        return feedsList.size();
    }
}
我也用过这个
@Override
    public int getItemPosition(Object object) {
        return POSITION_NONE;
    }
但没有结果...... :(
所以在严重的需要中,如果有人早点这样做并遇到同样的问题,请让我知道我做错了什么.我只需要在我的ViewPager的零索引处添加片段.
我之前遇到过类似的问题,我的解决方案是:
getItem(int arg0),以便它根据该项目的位置从列表中返回特定项目。所以,完整的解决方案是:
适配器类:
private class HorizontalPagerAdapter extends FragmentStatePagerAdapter {
public List<Fragment> feedsList;
    public HorizontalPagerAdapter(FragmentManager fm) {
        super(fm);
    }
    @Override
    public Fragment getItem(int position) {
        return feedsList.get(position);
    }
    @Override
    public int getCount() {
        return feedsList.size();
    }
}
创建适配器时:
public static YourPageAdapter adapter_obj; // make sure it's static object
adapter_obj =  new YourPageAdapter(getSupportFragmentManager());
adapter_obj.feedsList = new ArrayList<Fragment>();
// then add the list of fixed fragments to it(the 5 in the beginning)
adapter_obj.feedsList = fragments_list; // an ArrayList contains the 5 fragments
当想要创建一个新片段时:
adapter_obj.feedsList.add(0, Fragment.instantiate(mContext, ViewPager_Container_Class.class.getName(), page));
adapter_obj.notifyDataSetChanged();
| 归档时间: | 
 | 
| 查看次数: | 4610 次 | 
| 最近记录: |