我有一个包含四个片段的ViewPager。用户填写第一个片段的数据,点击一个按钮,数据转到sqlite。然后使用其他三个片段以各种方式在sqlite DB中显示数据。第一个是将它们列在listview中。问题是数据没有得到更新的片段,直到我到最后一个片段屏幕en swap回来。所以我认为这可能与我设置为
的setOffscreenPageLimit有关mypager.setOffscreenPageLimit(1);
在我的ViewPager的onCreate中,似乎没有任何影响。 然后我想覆盖onPageSelected并在那里添加
mypager.notifyDataSetChanged();
这是有效的,但片段之间的滑动是缓慢的。如果我再次拿出它并将最后一个片段滑动,然后片段更新,那就非常快了。 有人有任何想法吗?
答案 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);
...
}
}