相关疑难解决方法(0)

动态添加和删除视图到viewpager

(我想出了一个解决方案 - 请在下面的答案部分看到我的帖子.)

在我的应用程序中,用户将从他的数据的单个视图开始.我想添加一个ViewPager,并允许用户根据需要添加更多视图.我该怎么做呢?(我不想使用FragmentPagerAdapter.)

我已经阅读了无数的帖子和概述,但我仍然遗漏了一些东西.这是我认为我理解的:

MainActivity创建一个ViewPager和PagerAdapter:

ViewPager pager = null;
MainPagerAdapter adapter = null;
public void onCreate (Bundle savedInstanceState)
{
  super.onCreate (savedInstanceState);
  pager = new ViewPager (this);
  setContentView (pager);

  adapter = new MainPagerAdapter();
  pager.setAdapter (adapter); 

  View v0 = code_to_create_initial_view();
  adapter.add (v0, 0);      
}
Run Code Online (Sandbox Code Playgroud)

使用PagerAdapter提供视图集.为此,我似乎需要添加和删除视图的方法,就像这样; 显然需要更多的东西来告诉ViewPager的内容已经改变以及如何显示更改:

class MainPagerAdapter extends PagerAdapter
{
  // This holds all the currently displayable views, in order from left to right.
  private ArrayList<View> views = new ArrayList<View>();

  public void addView (View v, int position)
  {
    views.add (position, …
Run Code Online (Sandbox Code Playgroud)

android swipe android-viewpager

160
推荐指数
2
解决办法
17万
查看次数

何处恢复ViewPager内部的片段状态

精简版:

我有一个具有ViewPager的Activity.ViewPager里面有三个片段.我通过实现Parcelable并将其存储在bundle中来将数据存储在片段中.

现在问题是我在哪里恢复数据.我很困惑,因为(据我所知)ViewPager每次旋转屏幕时都会创建片段的新实例.(创建一个新活动 - >新的ViewPager - > new Fragment).如果我错了,请纠正我.

长版:

我在MainActivity中的ViewPager

ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
viewPager.setAdapter(new ForecastFragmentPageAdapter(getSupportFragmentManager(),
            ForecastActivity.this));
viewPager.setOffscreenPageLimit(2);
Run Code Online (Sandbox Code Playgroud)

我的FragmentPagerAdapter

 @Override
public Fragment getItem(int position) {
    if (position == 0) {
        return new NowForecastFragment();
    } else if (position == 1) {
        return new HourlyForecastFragment();
    } else {
        return new DailyForecastFragment();
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的一个片段中保存状态

    public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);

    // save data source
    if (nowDataList != null) {
        outState.putParcelableArrayList("savedNowDataList", nowDataList);
    }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

更新:

根据发布到类似问题的其他解决方案,我还添加了setRetainInstance(true); 在我片段的onCreateView中.这就是我保存和恢复状态的方式:

    @Override
public …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager fragment-lifecycle

6
推荐指数
2
解决办法
1万
查看次数