相关疑难解决方法(0)

ViewPager PagerAdapter未更新视图

我正在使用兼容性库中的ViewPager.我已经巧妙地让它显示了几个我可以翻阅的视图.

但是,我很难弄清楚如何使用一组新视图更新ViewPager.

我已经试过各种事情就像调用mAdapter.notifyDataSetChanged(),mViewPager.invalidate()即使每次都创建我想用一个新的数据列表中的一个全新的适配器.

没有任何帮助,文本视图与原始数据保持不变.

更新: 我做了一个小测试项目,我几乎能够更新视图.我将粘贴下面的课程.

然而,似乎没有更新的是第二个视图,"B"仍然存在,按下更新按钮后应显示"Y".

public class ViewPagerBugActivity extends Activity {

    private ViewPager myViewPager;
    private List<String> data;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        data = new ArrayList<String>();
        data.add("A");
        data.add("B");
        data.add("C");

        myViewPager = (ViewPager) findViewById(R.id.my_view_pager);
        myViewPager.setAdapter(new MyViewPagerAdapter(this, data));

        Button updateButton = (Button) findViewById(R.id.update_button);
        updateButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                updateViewPager();
            }
        });
    }

    private void updateViewPager() {
        data.clear();
        data.add("X");
        data.add("Y");
        data.add("Z");
        myViewPager.getAdapter().notifyDataSetChanged();
    }

    private class MyViewPagerAdapter extends PagerAdapter {

        private …
Run Code Online (Sandbox Code Playgroud)

android android-viewpager

581
推荐指数
14
解决办法
35万
查看次数

FragmentPagerAdapter未正确删除项目(片段)

我已经实现了FragmentPagerAdapter和使用a List<Fragment>来保存所有片段以供我ViewPager显示.在addItem()我只是添加一个实例化Fragment然后调用notifyDataSetChanged().我不确定这是否有必要.

我的问题只是......从片段1开始

[Fragment 1] 
Run Code Online (Sandbox Code Playgroud)

添加新的片段2

[Fragment 1] [Fragment 2]
Run Code Online (Sandbox Code Playgroud)

删除片段2

[Fragment 1]
Run Code Online (Sandbox Code Playgroud)

添加新的片段3

[Fragment 1] [Fragment 2]
Run Code Online (Sandbox Code Playgroud)

添加新片段时,一切看起来都很棒.删除片段然后添加新实例化的片段后,仍会显示旧片段.当我去.getClass.getName()它时,它给了我片段3的名字,但我仍然看到片段2.

我相信这可能是一个问题,instantiateItem()但我认为适配器是为我们处理.任何建议都会很棒.

适配器代码......

public class MyPagerAdapter extends FragmentPagerAdapter {
public final ArrayList<Fragment> screens2 = new ArrayList<Fragment>();


private Context context;

public MyPagerAdapter(FragmentManager fm, Context context) {
    super(fm);
    this.context = context;
}

public void removeType(String name){
    for(Fragment f: screens2){
        if(f.getClass().getName().contains(name)){ screens2.remove(f); return; }
    }
    this.notifyDataSetChanged();
}

public boolean addSt(String …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager

43
推荐指数
2
解决办法
3万
查看次数