android开发实现列表控件滚动位置精确保存和恢复的方法(推荐)
Android开发经常要对列表的滚动位置进行保存和恢复,网上也有很多关于此功能的方法文章,但绝大多数都只能保存恢复到某一行,对于滚动到半行的情况不能精确的恢复。也有很多文章介绍了好几种方法,也说某些方法能够精确的控制,但实际上根本不能实现。还有些介绍了很多玄乎且非常复杂的方法,但也没看到能完整实现的代码。
经过一段时间的研究测试,下面的代码可以完美的实现列表滚动位置的精确保存和恢复,而且只是在原来记忆到行位置的基础上增加了2行代码而已。
具体见下面代码和注释:
//保存位置: int position=0; list.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { //保存当前滚动到的位置 if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) { position = list.getFirstVisiblePosition();//获取在总的列表条数中的索引编号 View firstVisibleItem = list.getChildAt(0);//获取在可视的item中的索引编号 scrolledY = firstVisibleItem.getTop();//获取第一个列表项相对于屏幕顶部的位置 } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { } }); //恢复位置: list.setSelectionFromTop(position, scrolledY);
以上这篇android开发实现列表控件滚动位置精确保存和恢复的方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
保存ListView上次的滚动条的位置实例(必看)
如下所示: private int select_id = 0; //定义个全局变量 @Override public void onStop() { super.onStop(); select_id = list_view.getSelectedItemPosition();//点击列表的时候,保存位置 } @Override public void onResume() { super.onResume(); view.setSelection(select_id);//关闭画面,回到li
-
android 实现ScrollView自动滚动的实例代码
有时候需要动态添加数据,屏幕显示满了,数据需要滚动展示.这里主要弄懂scrollTo(0, off)方法的含义喊用法. 含义不说了,大概意思就这样. 下面来看他的用法: 复制代码 代码如下: private void searchResultShow() { TextView textView = new TextView(AFSearchActivity.this); textView.setText("Text View "); Linear
-
Android ListView滚动到指定的位置
本文介绍的关于ListView移动到指定位置有两种方法,下面话不多说,直接来看示例代码: listview.setSelection(position); listview.smoothScrollToPosition(position); 第一种方法没有滚动效果,直接跳到指定位置,第二种方法是有滚动效果的. 但是,在是用的时候,你会发现第二种方法没有效果,甚至都没有移动,其实这个问题很好解决,只要在新线程里是用就可以了 listview.post(new Runnable() { @Overr
-
Android GridView实现滚动到指定位置的方法
当一个列表项目很多,并且每个项目可以进入到其它Activity或者Fragment时,保存之前列表的位置是一个比较不错的功能, 今天研究了一下怎么保存浏览位置,发现GridView和它的父类中有4个相关的方法: 复制代码 代码如下: public void smoothScrollToPosition (int position) 滚动到position指定的位置,api level 11之下可用 *当你滚动完后,返回列表,能正常滚动,但是你再次从列表的项目返回后,滚动失效,就是只能滚动一次,我
-
Android实现字幕滚动的方法
本文实例介绍了安卓Android实现字幕滚动效果的方法.主要是一个现成的Java类文件实现的,该程序由Android达人Tony编写,本次是转发,还望原作者Tony不要介意.这个Android字幕滚动类的自定义功能比较多,可定义当前滚动到结尾时的停顿时间,单位:毫秒,还可设置当前的滚动速度,值越小,速度越快. 主要实现代码如下: package com.tony.autoscroll; import android.content.Context; import android.os.Handl
-
Android简单记录和恢复ListView滚动位置的方法
本文实例讲述了Android简单记录和恢复ListView滚动位置的方法.分享给大家供大家参考,具体如下: 有时候我们需要记录当前ListView滚动到的位置,重新加载的时候要回到原位,不罗嗦,给出代码: //列表滚动 private OnScrollListener ScrollLis = new OnScrollListener() { @Override public void onScroll(AbsListView arg0, int arg1, int arg2, int arg3)
-
android开发实现列表控件滚动位置精确保存和恢复的方法(推荐)
Android开发经常要对列表的滚动位置进行保存和恢复,网上也有很多关于此功能的方法文章,但绝大多数都只能保存恢复到某一行,对于滚动到半行的情况不能精确的恢复.也有很多文章介绍了好几种方法,也说某些方法能够精确的控制,但实际上根本不能实现.还有些介绍了很多玄乎且非常复杂的方法,但也没看到能完整实现的代码. 经过一段时间的研究测试,下面的代码可以完美的实现列表滚动位置的精确保存和恢复,而且只是在原来记忆到行位置的基础上增加了2行代码而已. 具体见下面代码和注释: //保存位置: int posit
-
Android开发之基本控件和四种布局方式详解
Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方式Android和iOS还是区别挺大的,在iOS中有Frame绝对布局和AutoLayout相对布局.而在Android中的布局方式就比较丰富了,今天博客中会介绍四种常用的布局方式.先总结一下控件,然后再搞一搞基本方式,开发环境还是用的Mac下的Android Studio.开始今天的正题, 虽然A
-
Android开发手册TextView控件及阴影效果实现
目录 实践过程 初识 文字阴影 TextView是Android中最简单也是最常见的控件.今天小空就带大家会会她. 实践过程 初识 经过前两篇常用属性和不常用属性的讲解,是不是有些懵了,不要慌,真实开发中用到的属性其实连五分之一都到不了. 我们先来创建个基本的文本控件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.a
-
Android开发中include控件用法分析
本文实例讲述了Android开发中include控件用法.分享给大家供大家参考,具体如下: 我们知道,基于Android系统的应用程序的开发,界面设计是非常重要的,它关系着用户体验的好坏.一个好的界面设计,不是用一个xml布局就可以搞定的.当一个activity中的控件非常多的时候,所有的布局文件都放在一个xml文件中,很容易想象那是多么糟糕的事情!笔者通过自身的经历,用include控件来解决这个问题,下面是一个小例子,仅仅实现的是布局,没有响应代码的设计. user.xml文件内容如下: <
-
Android开发实现Switch控件修改样式功能示例【附源码下载】
本文实例讲述了Android开发实现Switch控件修改样式功能.分享给大家供大家参考,具体如下: Android中自带的Switch控件在很多时候总觉得和整体系统风格不符,很多时候,自定义Switch是一种方法. 但其实不用这么麻烦,安卓自带的Switch通过修改一些属性,也可以达到和自定义Switch差不多的一个效果. 个人感觉,Switch的属性设置和其他控件还是有挺大区别的.因此,写下此文,方便有需要的同学参考. 先上效果图: 以上便是修改后效果 与 原生Switch的效果对比.代码在文
-
Android开发之开关按钮控件ToggleButton简单用法示例
本文实例讲述了Android开发之开关按钮控件ToggleButton简单用法.分享给大家供大家参考,具体如下: 先来看看运行效果: 具体代码如下: res/layout/activity_main.xml文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&quo
-
Android线程中设置控件的值提示报错的解决方法
本文实例讲述了Android线程中设置控件的值提示报错的解决方法.分享给大家供大家参考,具体如下: 在Android线程中设置控件的值一般会与Handler联合使用,如下: package com.yarin.android.Examples_04_15; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import andro
-
Android ExpandableListView展开列表控件使用实例
你是否觉得手机QQ上的好友列表那个控件非常棒? 不是..... 那也没关系,学多一点知识对自己也有益无害. 那么我们就开始吧. 展开型列表控件, 原名ExpandableListView 是普通的列表控件进阶版, 可以自由的把列表进行收缩, 非常的方便兼好看. 首先看看我完成的截图, 虽然界面不漂亮, 但大家可以自己去修改界面. 该控件需要一个主界面XML 一个标题界面XML及一个列表内容界面XML 首先我们来看看 mian.xml 主界面 复制代码 代码如下: //该界面非常简单, 只要一个E
-
Android多级树形列表控件
我们开发app过程中,经常会碰到需要 多级列表展示的效果.而Android原生sdk中根本没有3级 4级甚至更多级别的列表控件. 所以我们就要自己去实现一个类似treeListView 的控件,下面这个是我项目中的一个效果图,可支持多级列表扩展. android中有ExpandListView控件,但是这个控件只支持两级列表.对于多级列表如果重写这个不是很好用. 实现这种列表 思想就是递归,构造一个子父级的关系. 话不多说 代码中体会 Activity package com.example.c
-
浅谈Android开发中ListView控件性能的一些优化方法
ListView优化一直是一个老生常谈的问题,不管是面试还是平常的开发中,ListView永远不会被忽略掉,那么这篇文章我们来看看如何最大化的优化ListView的性能. 1.在adapter中的getView方法中尽量少使用逻辑 2.尽最大可能避免GC 3.滑动的时候不加载图片 4.将ListView的scrollingCache和animateCache设置为false 5.item的布局层级越少越好 6.使用ViewHolder 下面就具体来看一些 1.在adapter中的getView方
随机推荐
- Oracle数据库ORA 54013错误的解决办法
- 一个典型的PHP分页实例代码分享
- Ubuntu下安装PyV8
- node.js中的fs.readlinkSync方法使用说明
- 一个例子轻松学会Vue.js
- 漂亮的Slider效果类终于封装成功
- javascript实现设置、获取和删除Cookie的方法
- 用Python的Django框架编写从Google Adsense中获得报表的应用
- javascript之更有效率的字符串替换
- PowerShell中获取当前运行脚本路径的方法
- ORACLE锁机制深入理解
- jquery.simple.tree插件 更简单,兼容性更好的无限树插件
- jQuey将序列化对象在前台显示地实现代码(方法总结)
- JavaScript操作XML文件之XML读取方法
- Bootstrap 表单验证formValidation 实现表单动态验证功能
- c#循环中产生伪随机数
- 让网站自动生成章节目录索引的多个js代码
- Mybatis新手教程之简单入门
- 《阿里巴巴 Java开发手册》读后感小结
- redis单线程快的原因和原理