我的Android进阶之旅------>Android Listview跳到指定条目位置的两种实现方法
前言
今天实现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
我的Android进阶之旅------>Android Listview跳到指定条目位置的两种实现方法的更多相关文章
- 我的Android进阶之旅------>Android颜色值(#AARRGGBB)透明度百分比和十六进制对应关系以及计算方法
我的Android进阶之旅-->Android颜色值(RGB)所支持的四种常见形式 透明度百分比和十六进制对应关系表格 透明度 十六进制 100% FF 99% FC 98% FA 97% F7 ...
- 我的Android进阶之旅------>Android中查看应用签名信息
一.查看自己的证书签名信息 如上一篇文章<我的Android进阶之旅------>Android中制作和查看自定义的Debug版本Android签名证书>地址:http://blog ...
- 我的Android进阶之旅------>Android利用温度传感器实现带动画效果的电子温度计
要想实现带动画效果的电子温度计,需要以下几个知识点: 1.温度传感器相关知识. 2.ScaleAnimation动画相关知识,来进行水印刻度的缩放效果. 3.android:layout_weight ...
- 我的Android进阶之旅------>Android实现用Android手机控制PC端的关机和重启的功能(三)Android客户端功能实现
我的Android进阶之旅------>Android实现用Android手机控制PC端的关机和重启的功能(一)PC服务器端(地址:http://blog.csdn.net/ouyang_pen ...
- 我的Android进阶之旅------> Android为TextView组件中显示的文本添加背景色
通过上一篇文章 我的Android进阶之旅------> Android在TextView中显示图片方法 (地址:http://blog.csdn.net/ouyang_peng/article ...
- 我的Android进阶之旅------> Android在TextView中显示图片方法
面试题:请说出Android SDK支持哪些方式显示富文本信息(不同颜色.大小.并包含图像的文本信息),并简要说明实现方法. 答案:Android SDK支持如下显示富文本信息的方式. 1.使用Tex ...
- 我的Android进阶之旅------>Android疯狂连连看游戏的实现之实现游戏逻辑(五)
在上一篇<我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)>中提到的两个类: GameConf:负责管理游戏的 ...
- 我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)
正如在<我的Android进阶之旅------>Android疯狂连连看游戏的实现之状态数据模型(三)>一文中看到的,在AbstractBoard的代码中,当程序需要创建N个Piec ...
- 我的Android进阶之旅------>Android疯狂连连看游戏的实现之状态数据模型(三)
对于游戏玩家而言,游戏界面上看到的"元素"千变万化:但是对于游戏开发者而言,游戏界面上的元素在底层都是一些数据,不同数据所绘制的图片有所差异而已.因此建立游戏的状态数据模型是实现游 ...
随机推荐
- hdu 1213 (How Many Tables)(简单的并查集,纯模板)
How Many Tables Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 转载:ffmpeg 音视频合成分割
http://blog.csdn.net/jixiuffff/article/details/5709976 当然先安装了 gentoo 下一条命令搞定 emerge ffmpeg 格式转换 (将f ...
- pycharm-community-3.1.1.tar.gz下载
国外服务器着实慢, 下载地址:http://yun.baidu.com/share/link?shareid=2521912381&uk=3020189984
- Hadoop项目实战
这个项目是流量经营项目,通过Hadoop的离线数据项目. 运营商通过HTTP日志,分析用户的上网行为数据,进行行为轨迹的增强. HTTP数据格式为: 流程: 系统架构: 技术选型: 这里只针对其中的一 ...
- Python 使用标准库根据进程名获取进程PID
应用场景 在进行 Linux 运维的环境中,我们经常会遇到维护同一台服务器上的多个程序,涉及到程序的启动.关闭和重启操作. 通常这些程序之间存在着相互依存的关系需要进行依次的启动关闭操作. 下面介绍几 ...
- 14 javaBean 组件
bean类不应该有公开的实例变量. 持续性的值应该通过 getXxx 和 setXxx 方法访问. <jsp: useBean id=”beanName” class=”package.Clas ...
- dd & cpio
dd: ------------------------------------------------------ - 指定大小块的拷贝一个文件 例1. 想把软盘的内容拷贝到另一个软盘 dd i ...
- 获取openid
请将文件MP_verify_IbWggk5i4gWgrast.txt上传至mp.weixin.qq.com指向的web服务器(或虚拟主机)的目录 怎么处理的?//将txt文件上传到你填的域名的根目录 ...
- CI 点击图片刷新验证码
<img src="<?php echo site_url('home/login/code'); ?>" onclick= this.src="< ...
- Web安全测试(一)-手工安全测试方法&修改建议
常见问题 1.XSS(CrossSite Script)跨站脚本攻击 XSS(CrossSite Script)跨站脚本攻击.它指的是恶意攻击者往Web 页面里插入恶意 html代码,当用户浏览该页之 ...