notifyDataSetChanged使用viewpager片段表现不佳

时间:2013-06-03 10:17:19

标签: android android-fragments android-viewpager

我有一个包含四个片段的ViewPager。用户填写第一个片段的数据,点击一个按钮,数据转到sqlite。然后使用其他三个片段以各种方式在sqlite DB中显示数据。第一个是将它们列在listview中。问题是数据没有得到更新的片段,直到我到最后一个片段屏幕en swap回来。所以我认为这可能与我设置为

的setOffscreenPageLimit有关
mypager.setOffscreenPageLimit(1);

在我的ViewPager的onCreate中,似乎没有任何影响。 然后我想覆盖onPageSelected并在那里添加

mypager.notifyDataSetChanged();

这是有效的,但片段之间的滑动是缓慢的。如果我再次拿出它并将最后一个片段滑动,然后片段更新,那就非常快了。 有人有任何想法吗?

2 个答案:

答案 0 :(得分:0)

我不熟悉ViewPager,但是,每次调用notifyDataSetChanged()时,寻呼机都会从数据库中获取数据。

我不建议每次更改页面时更新光标,而是建议在调用notifyDataSetChanged()之前创建一个函数来检查数据集是否实际已更改。这样,当用户更改Page1上的数据时,您只会有性能损失,但从那时起,所有页面滑动都是即时的,直到数据再次更改。

希望这有助于解决您的问题。

答案 1 :(得分:0)

为了平滑地滑动片段,在onCreateView()中运行长时间执行代码会有一些延迟,例如150-250ms。

执行转换动画是UI线程,因此如果你运行其他任何花费大量时间的事情(例如SQLite数据库访问),同时转换的平滑性会受到影响。

YourFragments extends Fragment {

...
Handler mHanlder = new Handler();

  @Override
  public void onCreate(...){

  ...
  mHandler.postDelayed(someRunnable, 250);
  ...
  }

}