使用SimpleCursorAdapter的ListView如何更新显示

做记事本应用,遇到数据库中的信息变化,如何使相应的ListView更新的问题。

查资料后解决,

  • 用ListView来显示数据库的数据时,经常会用到SimpleCursorAdapter来作为ListView的适配器,这时要用到Cursor来访问数据库,当数据库数据发生改变时,需要通过cursor.requery(),并调用adapter.notifyDataSetChanged()的方法来更新ListView。注:这个方法在API11以后被废弃了,原因是执行该方法是会查询数据库,如果查询动作是在主线程(UI线程)中完成的,由于查询过程要耗一定时间,所以有可能引起ANR。推荐通过异步的方式重新获取一个新的cursor,然后使用Adapter.changeCursor(newCursor)更新cursor,最后再使用adapter.notifyDataSetChanged()即可
  • 关于在更改Cursor之后,进行adapter.notifyDataSetChanged(),但在我的使用中,当数据库新增了内容的时候,不调用adapter.notifyDataSetChanged()也能使ListView更新;当数据库内容删减的时候,必须要调用adapter.notifyDataSetChanged(),否则会报错。

两篇觉得写的不错的相关文章,可以参考一下:

http://blog.csdn.net/zd394071264/article/details/9070757

http://www.cnblogs.com/dyllove98/p/3191927.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值