关于ListView不刷新 (notifydatasetchanged无效的问题)

是的,我在被困几个小时后发现了原因,各种调试未果。

然后还是决定在网上查:
查到了:
listview中adapter的数据是放在 list里的。当刷新数据时,去服务器请求到新数据,然后
传给list。代码是在新线程里得到新数据集合list2,然后在handler里令list=list2,以为这样就可以了,
但adapter.notifyDataSetChanged无效。
原因:list里的内容并没有变。
解决方案:list.addAll(list2);确保list变化即可。

然后恍然大悟,
原因就是我是直接新的数据
List<E> oldData = new ArrayList<E>();
....
listView.setAdater(oldData, ....)

在处理后我用了oldData = newData. 然后notifyDataSetChanged
[color=red]而这就是错误的原因。listView不会认为这里数据没有变化。

正确做法是oldData.clear(); oldData.addAll(newData).
然后notifyDataSetChanged[/color]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值