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开发实现列表控件滚动位置精确保存和恢复的方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

时间: 2024-09-20 20:08:31

android开发实现列表控件滚动位置精确保存和恢复的方法(推荐)的相关文章

Android开发之列表控件

一.基础知识: ListView是一个经常用到的控件,ListView里面的每个子项Item可以使一个字符串,也可以是一个组合控件.先说说ListView的实现: 1.准备ListView要显示的数据: 2.使用一维或多维动态数组保存数据: 3.构建适配器,简单地来说,适配器就是Item数组,动态数组有多少元素就生成多少个Item: 4.把适配器添加到ListView,并显示出来.    二.代码展示: 1."Activity_10srcyanactivity_10MainActivity.ja

Android开发之基本控件和四种布局方式详解_Android

Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方式Android和iOS还是区别挺大的,在iOS中有Frame绝对布局和AutoLayout相对布局.而在Android中的布局方式就比较丰富了,今天博客中会介绍四种常用的布局方式.先总结一下控件,然后再搞一搞基本方式,开发环境还是用的Mac下的Android Studio.开始今天的正题, 虽然A

Android开发之基本控件和四种布局方式详解

Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方式Android和iOS还是区别挺大的,在iOS中有Frame绝对布局和AutoLayout相对布局.而在Android中的布局方式就比较丰富了,今天博客中会介绍四种常用的布局方式.先总结一下控件,然后再搞一搞基本方式,开发环境还是用的Mac下的Android Studio.开始今天的正题, 虽然A

Android开发中include控件用法分析_Android

本文实例讲述了Android开发中include控件用法.分享给大家供大家参考,具体如下: 我们知道,基于Android系统的应用程序的开发,界面设计是非常重要的,它关系着用户体验的好坏.一个好的界面设计,不是用一个xml布局就可以搞定的.当一个activity中的控件非常多的时候,所有的布局文件都放在一个xml文件中,很容易想象那是多么糟糕的事情!笔者通过自身的经历,用include控件来解决这个问题,下面是一个小例子,仅仅实现的是布局,没有响应代码的设计. user.xml文件内容如下: <

界面-Android中布局的控件的位置的问题

问题描述 Android中布局的控件的位置的问题 Android中layout_gravity和layout_marginTop同时设置的话那界面是怎么变化? 在线性布局下,例如一个textView,其android:layout_gravity_设为bottom,android:layout_margin Top_设为100sp,然后其位置就如图所示 然后把android:layout_gravity_设为top,其位置又如图: 但是我的layout_marginTop_一直都设为100sp,

Android零基础入门第17节:Android开发第一个控件,TextView属性和方法大全

原文:Android零基础入门第17节:Android开发第一个控件,TextView属性和方法大全 前面简单学习了一些Android UI的一些基础知识,那么接下来我们一起来详细学习Android的UI界面基本组件.     一.认识TextView 我们知道前面学习的HelloWorld应用程序中就是使用的TextView来显示一个文本,接下来首先一起来学习TextView的使用方法. TextView的作用就是在界面上显示文本.TextView直接继承了 View,是EditText.Bu

Android开发中include控件用法分析

本文实例讲述了Android开发中include控件用法.分享给大家供大家参考,具体如下: 我们知道,基于Android系统的应用程序的开发,界面设计是非常重要的,它关系着用户体验的好坏.一个好的界面设计,不是用一个xml布局就可以搞定的.当一个activity中的控件非常多的时候,所有的布局文件都放在一个xml文件中,很容易想象那是多么糟糕的事情!笔者通过自身的经历,用include控件来解决这个问题,下面是一个小例子,仅仅实现的是布局,没有响应代码的设计. user.xml文件内容如下: <

Android线程中设置控件的值提示报错的解决方法_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线程中设置控件的值提示报错的解决方法

本文实例讲述了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