ListView的如何将滚动条滚动到首行?
项目需求在ListView完成数据加载后,要求让滚动条显示在第一行,共有两种方法:
1. 使用listView.smoothScrollToPosition(0);
但是使用这个方法,在数据加载完成后,会有一个快速滚动到第一行的动画效果.
2. 使用listView.setSelection(0);
但是使用setSelection这个方法不能写在mAdapter.notifyDataSetChanged()这个方法之后,必须要在listView适配器通知更新之后才能执行setSelection(0), 要不然这个方法不起作用,好了, 废话不多说,直接上代码:
1. 使用listView.smoothScrollToPosition(0);
这种方法在滚动条跳转到第一行时会有一个快速滑动到第一行的动画效果
//ListView的数据来源的list集合添加完数据
mVirusList.add(info);
//将ListView显示在第一行
listView.smoothScrollToPosition(0);
//通知适配器更新
mAdapter.notifyDataSetChanged();
2.使用listView.setSelection(0);
这种方法跳转到第一行没有任何动画效果, 在数据更新完之后直接显示在ListView的第一行
错误代码如下:
//ListView的数据来源的list集合添加完数据
mVirusList.add(info);
//将ListView显示在第一行
//这时这个方法是写在了适配器通知更新的方法的前面,此时这行代码不起作用
listView.setSelection(0);
//通知适配器更新
mAdapter.notifyDataSetChanged();
正确写法:
//ListView的数据来源的list集合添加完数据
mVirusList.add(info);
//通知适配器更新
mAdapter.notifyDataSetChanged();
//将ListView显示在第一行
//此时这行代码就会生效,最后的效果就是显示在了第一行,并且没有任何动画效果
listView.setSelection(0);