关于ListView的数据刷新问题(notifyDataSetChange()方法的调用场景)


  最近做一个通讯录项目遇到ListView从数据库获取数据并刷新UI显示问题。在网上找资料都说用适配器的notifyDataSetChange()方法就可以,但是我调用这个方法UI界面并没有及时刷新。问题如下:

  首先,我的数据从数据库获得并用一个List对象list来接收,然后绑定到适配器上(list第一次从数据库获取数据),然后在对数据库的数据进行一系列的增删查改操作后,我再次调用获取数据库数据的方法,并将返回值赋值给list(list第二次获取数据库数据)(PS:这个时候从数据库获取到的数据已经改变)然后调用notifyDataSetChange()方法刷新数据,发现UI界面没有及时更新,而需要再次进入界面才能刷新。

  思考:数据源list的数据已经改变,为什么notifyDataSetChange()方法没有起到应有的作用???

  问题解决:后来,实在没办法,自己写了一个Demo,发现用上述方法系统并不认为数据源的内容改变,因为我们并没有对第一次获取数据的list的内容进行直接的操作,比如:我们给数据库插入了一条数据,然后我们用list去获取数据库全部数据,list的内容明显比之前多了一条,但是,我们并没有给之前的list添加该条数据,系统默认我们没有对数据源list的内容进行改变。因此notifyDataSetChange()方法方法无法刷新界面。

  解决方法:在对数据库进行数据操作的同时,list除了第一次从数据库获取数据之外,不再直接从数据库获取数据,而是直接通过list的add()或者

remove()方法同步数据库的数据。。。这样才能调用notifyDataSetChange()方法来刷新界面。

  (PS:才刚刚开始学习android... 说得不对的欢迎大家指导.... 谢谢。。)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM