急ListView的notifyDatasetChanged()有关问题
急,ListView的notifyDatasetChanged()问题本帖最后由 JavaLover00000 于 2011-09-13 18:08:46 编辑使用Lis
急,ListView的notifyDatasetChanged()问题
本帖最后由 JavaLover00000 于 2011-09-13 18:08:46 编辑 使用ListView时候,发现在List结尾追加数据,然后用notifyDataSetChanged( ) 动态刷新有效果,但是在List的最前面追加数据,notifyDataSetChanged( )就不起作用。问下有人遇到过这种情况吗
mTweets.addAll(newTweets);
mAdapter.notifyDataSetChanged();
这样就可以刷新界面
mTweets.addAll(0, newTweets);
mAdapter.notifyDataSetChanged();
这样页面不会刷新
[解决办法]原因是这样的:notifyDataSetChanged会判断是否当前项是否是显示状态,如果是显示状态就不用刷新,如果不是显示状态,则当滚动时就刷新
[解决办法]用消息机制试一试:
private static final int UPDATE = 1;
Handler myHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case UPDATE_UPDATE:
mAdapter.notifyDataSetChanged();
break;
default:
break;
}
super.handleMessage(msg);
}
};
……
mTweets.addAll(newTweets);
Message msg = new Message();
msg.what = UPDATE_UPDATE;
myHandler.sendMessage(msg);
……
[解决办法]我测试过,两种addall的方法都没有问题。请仔细检查,或贴出更多的代码。