1

我有一个带有四个片段的 ViewPager。用户在第一个片段上填写数据,点击一个按钮,数据进入 sqlite。然后使用其他三个片段以各种方式显示 sqlite DB 中的数据。第一个只是在列表视图中列出它们。问题是片段上的数据没有更新,直到我到达最后一个片段屏幕并交换回来。所以我在想这可能与我设置的 setOffscreenPageLimit 有关

mypager.setOffscreenPageLimit(1);

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

mypager.notifyDataSetChanged();

这可行,但是片段之间的滑动很慢。如果我再次取出它并滑动最后一个片段,然后片段更新,它非常快。有人有什么想法吗?

4

2 回答 2

0

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

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

希望这对您的问题有所帮助。

于 2013-06-03T10:36:32.697 回答
0

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

过渡动画是在 UI 线程中执行的,因此如果您运行其他任何花费大量时间的东西(例如 SQLite db 访问),同时过渡的平滑度也会受到影响。

YourFragments extends Fragment {

...
Handler mHanlder = new Handler();

  @Override
  public void onCreate(...){

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

}
于 2013-06-03T10:59:29.657 回答