是的,我在被困几个小时后发现了原因,各种调试未果。
然后还是决定在网上查:
查到了:
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]
然后还是决定在网上查:
查到了:
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]