记录和恢复listView滚动位置的2种方法:
记录listView滚动到的位置的坐标(精确度较强推荐)、记录listView显示在屏幕上的第一个item的位置(精确度较差)、通知适配器数据改变(追加数据时保存listview位置不错)。
1、记录listView滚动到的位置的坐标,然后利用listView.scrollTo精确的进行恢复:
记录
listView.setOnScrollListener(new OnScrollListener() { //滚动状态改变时调用 @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // 不滚动时保存当前滚动到的位置 if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) { if (currentMenuInfo != null) { scrolledX = listView.getScrollX(); scrolledY = listView.getScrollY(); } } } //滚动时调用 @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { } });
恢复:listView.scrollTo(scrolledX, scrolledY);
2、记录listView显示在屏幕上的第一个item的位置,然后利用listView.setSelection恢复:
这是网上能找到的最普遍的一种方式,但是却无法准确恢复到原位置,只能定位到每个item的位置,推荐使用第1种
记录:
listView.setOnScrollListener(new OnScrollListener() { //滚动状态改变时调用 @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // 不滚动时保存当前滚动到的位置 if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) { position = listView.getFirstVisiblePosition(); } } //滚动时调用 @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { } });
恢复: listView.setSelection(position);
3、通知listView的适配器数据变更
这种适用于listView追加数据的情况,严格说不是恢复listView滚动的位置,只是保持滚动位置不错
listDataAdapter.getDataList.addAll(newDataList()); listDataAdapter.notifyDataSetChanged();
相关推荐
此外,对于"GoTopDemo"这个文件,可能是一个简单的示例应用,用于演示如何监听ListView滚动并实现返回顶部的功能。在实际开发中,我们通常会添加一个悬浮按钮,当用户滚动到一定距离时让它显示,用户点击即可回到...
"android listview滚动到底自动加载,下拉刷新"是常见的功能需求,通常应用于新闻、社交媒体等应用中,为用户提供无缝的数据加载体验。本篇将详细介绍如何实现这一功能。 首先,我们需要了解ListView的基本用法。...
`onScrollStateChanged`方法中的`scrollState`参数表示滚动状态,当其值为`SCROLL_STATE_IDLE`时,表示滚动停止,此时我们可以安全地记录ListView的滚动位置`ListPos`。 接着,我们需要在ListView的数据加载完成...
在Android开发中,ScrollView和ListView是两种常用的布局组件,它们分别用于实现可滚动的大视图和展示多行可滚动的数据列表。然而,在实际应用中,当这两种组件同时存在于一个界面时,滚动冲突的问题就会出现,导致...
在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。`下拉刷新`和`上拉加载`功能的实现,极大地提升了用户体验,让用户能够实时获取到最新的数据。本篇文章将深入探讨如何在ListView中实现这两种...
在Android开发中,ListView是一种常用的UI组件,常用于展示大量数据列表。本示例源码主要探讨了如何在ListView中实现多任务下载的功能,并且允许用户中途停止下载,类似于360手机助手的下载管理器。这样的功能对于...
当失去焦点或者ListView滚动时,根据记录的位置和值恢复正确的数据。 2. **使用 ViewHolder 模式**:ViewHolder模式能有效减少查找视图的时间,同时可以在ViewHolder中存储EditText的状态,确保数据与对应的条目...
在Android开发中,ListView是一种常见的组件,用于展示可滚动的列表数据。在许多应用程序中,尤其是通讯录应用,为了提供用户友好的交互体验,我们常常需要实现ListView的侧滑删除效果。这个效果允许用户通过在列表...
这里,我们在 `onScrollStateChanged()` 的回调中判断滚动状态是否变为IDLE(即静止状态),如果是,就获取并记录ListView的当前位置。 然后,我们需要在Activity的生命周期方法中处理ListView的滚动恢复。例如,在...
1. **ListView**:ListView是Android中用于展示大量数据的滚动列表视图。它可以动态加载数据,以优化内存使用,提高用户体验。在本项目中,ListView将用于展示每个下载任务的状态,如任务名、进度、速度等。 2. **...
"android 下拉功能特效"通常指的是在ListView、RecyclerView或者自定义视图中实现的触摸滑动效果,比如刷新加载、隐藏/显示头部视图等。下面将详细介绍这一知识点及其相关技术。 首先,Android中的下拉刷新功能是...
`OnScrollListener`的`onScrollStateChanged()`方法会在ListView滚动状态改变时被调用,而`onScroll()`方法会在ListView滚动时被调用,这两个方法可以用来检测用户是否到达了列表的顶部或底部,从而决定何时启动刷新...
【ListView】是Android UI设计中的一个关键组件,它用于显示大量可滚动的数据集。在这个多任务下载demo中,ListView用于显示每个下载任务的状态,包括任务名称、进度、速度、总大小等信息。每个列表项可能还包含操作...
在onScrollStateChanged方法中,当滑动状态改变时,检查当前滚动的位置是否与目标位置一致。如果不一致,继续滚动;如果一致,停止滚动。这将确保用户在点击字母后能平滑地到达目标位置。 此外,为了优化性能,可以...
例如,我们可以记录当前滚动位置,比较与边界的位置差,然后计算出动画的持续时间和变化量。 4. **处理边界条件**:当用户滑动到ListView的顶部或底部时,我们需要特别处理这些边界情况。如果ListView已经没有更多...
通过OnScrollListener,可以在ListView滚动时暂停滑动操作,防止在滚动过程中误触发删除。当滚动停止后,再恢复滑动删除功能。 最后,为了提供良好的用户反馈,开发者可能会添加一些视觉提示,如删除按钮的动画效果...
当用户滚动ListView时,我们可以计算出滑动的距离,并据此启动或停止动画。 在源代码中,可能包含一个自定义的ListView类,继承自`AbsListView`,并重写了相关方法。关键的类可能叫作`PullToRefreshListView`,它...
2. 在ListView的OnScrollListener的onScrollStateChanged()方法中判断是否滚动到底部,条件通常为:滑动状态停止,滚动到底部,且还有更多数据可加载。 3. 如果满足加载更多条件,触发加载更多数据的方法,并更新...
在Android开发中,实现ListView显示多任务下载效果并支持中途停止功能是一项常见的需求,尤其在设计类似360手机助手的应用时。这个功能涉及到多个关键知识点,包括ListView的使用、异步任务处理、数据绑定以及状态...