我的Android进阶之旅------>Android Listview跳到指定条目位置的两种实现方法

来源:互联网 发布:网络通讯设备回收 编辑:程序博客网 时间:2024/05/16 05:19

前言

今天实现ListView跳转到第一个条目位置时,使用smoothScrollToPosition(int position)方法跳转实现了,但是交互说不需要这样的动画效果,需要直接跳转到第一项,于是使用了setSelection(int position)方法跳转跳转,但是setSelection(int position)方法跳转一直没有生效。原来是因为setSelection(int position)方法不能配合mAdapter.notifyDataSetChanged();方法一起使用,否则就会不生效。

总结

Listview跳到指定条目位置有如下两种做法:

1.使用smoothScrollToPosition(int position)方法跳转

 listView.smoothScrollToPosition(0);//刷新完后调转到第一条内容处 mAdapter.notifyDataSetChanged();

这个方法跳转是带有动画的跳转,可以将listView直接跳到指定(第0个条目的位置)

另外,mAdapter.notifyDataSetChanged(); 这句代码对其没影响,始终都会有跳转动作。

2.使用setSelection(int position)方法跳转

listView.setSelection(0);//刷新完后调转到第一条内容处

这个方法会让指定的条目显示为当前屏幕的第一个,这个跳动不伴有动画。

但要注意一定不要刷新适配器(adapter.notifyDataSetChanged()),不然你会发现跳转无效。

代码如下:

listView.setSelection(0);//刷新完后调转到第一条内容处mAdapter.notifyDataSetChanged();

如果代码如上所示的话,就会一直没有跳转的效果。

当然你可以在更新完mAdapter的数据之后,在调用完mAdapter.notifyDataSetChanged();方法之后再调用listView.setSelection(0);方法来达到跳转的目的。代码如下:

mAdapter.notifyDataSetChanged();listView.setSelection(0);//刷新完后调转到第一条内容处

下面是我尝试两种方法的一段代码:

//      方法1://      listView.smoothScrollToPosition(0);//刷新完后调转到第一条内容处        if (mData == null) {            mData = new ArrayList<>();        }        if (mData != null) {            mData.clear();        }        mData.addAll(news);        mAdapter.setmData(mData);        mAdapter.notifyDataSetChanged();//      方法2:        listView.setSelection(0);//刷新完后调转到第一条内容处

如上代码所示的话,就可以实现直接跳转到第一个条目的效果。

作者:欧阳鹏 欢迎转载,与人分享是进步的源泉!
转载请保留原文地址:http://blog.csdn.net/ouyang_peng

这里写图片描述

1 0
原创粉丝点击