2013-06-03 46 views
0

我有一个ViewPager与四个片段。用户填写第一个片段的数据,点击按钮,数据转到sqlite。其他三个片段然后用于以各种方式在sqlite数据库中显示数据。第一个只是在列表视图中列出它们。问题是数据没有得到更新的片段,直到我到达最后一个片段屏幕换回。所以我想这是可能是与setOffscreenPageLimit我在我的ViewPager的OnCreate设置为notifyDataSetChanged性能差与viewpager片段

mypager.setOffscreenPageLimit(1); 

,似乎没有任何影响。 后来我想重写使用onPageSelected,并在那里加入

mypager.notifyDataSetChanged(); 

这工作,但是这些片段之间的挥笔迟缓。如果我再次将它取出并轻扫这最后一个片段,然后片段更新,它非常快。 任何人有任何想法?

回答

0

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

而不是每次页面更改时更新游标,我会建议创建一个函数,以检查数据集是否实际更改之前调用notifyDataSetChanged()。这样,当用户改变第1页上的数据时,只会导致性能下降,但从那里开始,所有的页面刷新都将是即时的,直到数据再次更改。

希望这可以帮助你的问题。

0

为了顺利地滑动片段,请在延迟时间内(例如150-250ms)在onCreateView()中运行长时间执行的代码。

转换动画执行的是UI线程,所以如果在同一时间运行其他任何花费大量时间的东西(例如SQLite数据库访问),转换的平滑性将受到影响。

YourFragments extends Fragment { 

... 
Handler mHanlder = new Handler(); 

    @Override 
    public void onCreate(...){ 

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

} 
+0

不知道这是做到这一点的正确方法,需要多调查一下。有趣的是,如果你使用listview查看片段,然后回到片段,它会非常快速地更新,这就是我想要的,只是第一次刷新:) – daemonza