本文主要介绍记录和恢复listView滚动位置的2种方法,记录listView显示在屏幕上的第一个item的位置、通知适配器数据改变。
1、记录listView显示在屏幕上的第一个item的位置,然后利用listView.setSelection恢复
抱歉此方法无法准确恢复到原位置,只能定位到每个item的位置
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);
2、通知listView的适配器数据变更
这种适用于listView追加数据的情况,严格说不是恢复listView滚动的位置,只是保持滚动位置不错。但却最实用,只要listView的adapter不变就能恢复。
listDataAdapter.getDataList.addAll(newDataList()); listDataAdapter.notifyDataSetChanged();
相关推荐
本文将详细介绍两种在Android中使ListView滚动到指定位置的方法,并提供相应的示例代码。 ### 方法一:setSelection(position) `setSelection(position)` 是最直接的方式,它会立即将ListView的焦点移动到指定的`...
`Android ListView滚动到底部自动加载数据`是一个常见的功能需求,特别是在实现无限滚动或者分页加载的场景下,比如社交媒体应用、电商应用的商品列表等。当用户滚动到ListView的底部时,系统自动触发加载更多数据的...
在Android开发中,ListView是一种常用的视图组件,用于展示大量数据列表。当需求涉及列表中的每个条目本身也需要展示一个子列表时,我们就会遇到ListView的嵌套问题。本教程将详细讲解如何在Android Studio环境下...
综上所述,解决Android ListView滚动布局错位的关键在于正确地管理视图类型,并在`getView()`方法中确保视图的复用符合数据的类型。同时,实现多布局时要保持逻辑清晰,避免混淆不同类型的视图。通过这些方法,你...
另一种方法是结合使用`CoordinatorLayout`和`AppBarLayout`,这两种组件是Android Design Support Library的一部分,可以轻松实现吸顶效果。 至于安卓系统状态栏透明化,这是Android 5.0 (Lollipop) 引入的一项特性...
在Android开发中,ScrollView和ListView是两种常用的布局组件,它们分别用于实现可滚动的大视图和展示多行可滚动的数据列表。然而,在实际应用中,当这两种组件同时存在于一个界面时,滚动冲突的问题就会出现,导致...
然而,标准的ListView默认是垂直滚动的,而"Android支持横行滚动的ListView控件"则为开发者提供了一种新的布局方式,使得ListView可以进行水平方向的滚动。这种特性通常通过自定义Adapter和使用HorizontalScrollView...
当ListView滚动到底部时,我们可以将辅助数据集的顶部数据添加到主数据集的底部,同时将主数据集的顶部数据移动到辅助数据集中。同样,当滑动到顶部时,执行相反的操作。 在适配器中,重写`getView()`方法至关重要...
在Android开发中,ListView是一种非常常见的视图组件,它用于展示大量的数据列表,通常与Adapter配合使用,可以实现数据的动态加载和滚动效果。本文将详细介绍两种实现ListView的方法:一种是继承自`...
以上代码中,我们为每个ListView设置了一个监听器,当一个ListView滚动时,它会通知另一个ListView改变其滚动状态和位置。请注意,这里假设两个ListView有相同数量的条目,如果数量不一致,可能需要额外的逻辑来处理...
在Android开发中,ListView是一种常用的组件,用于展示可滚动的多行数据列表。然而,当在ListView的每一项中嵌套EditText时,会遇到一些挑战,主要包括EditText的焦点管理问题和数据错位问题。这两个问题在实际应用...
在`onScroll()`方法中,检查当前滚动位置是否接近底部,通常通过比较滚动位置和总项数的关系来判断。 2. **加载更多数据逻辑** 当检测到用户滑动到列表底部时,调用一个接口或者广播来触发数据加载。后台加载新的...
在Android开发中,ScrollView和ListView是两种常用的布局控件,分别用于实现单向滚动和多行列表滚动。然而,当这两个控件同时出现在一个布局中时,常常会出现滚动条冲突的问题,导致用户体验下降。本篇文章将详细...
在提供的压缩包文件"android两列显示两个listview"中,可能包含了示例代码或资源,用于演示如何实现上述的一种或多种方法。开发者可以参考这些代码来理解具体实现步骤,并根据自己的项目需求进行调整。记住,优化...
在Android开发中,ListView是一种常见的数据展示控件,它能够高效地显示大量数据,并支持滚动操作。当需要在一个屏幕上展示两个相关的ListView时,有时我们希望它们可以同步滑动,即一个ListView滑动时,另一个...
两种方法的原理相同,只是调用的API不同。 在实际应用中,我们可能需要根据ListView的当前位置和总数量来调整滚动距离和频率,以确保列表能够完整循环。例如,当ListView滚动到最后一项时,应该重新滚动到第一项,...
6. **滚动同步**:如果你希望两个ListView同步滚动,可以通过监听每个ListView的滚动事件,并在事件处理中调整另一个ListView的位置。这通常需要自定义滚动逻辑。 7. **资源复用**:为了节省内存,可以考虑复用...
在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。然而,有时我们希望在ListView的每一项中包含的TextView能够实现水平滚动效果,这样可以更好地展示宽度过大的文本内容。本教程将深入探讨如何...
添加头部到ListView主要有以下两种方法: 1. **使用HeaderView参数**: 在`Adapter`的构造函数中,我们可以传入一个或多个视图作为头部。这些视图将被添加到ListView的顶部。例如,如果你有一个已经创建好的布局...
3. 协调滚动:为了保持联动效果,可能需要监听两个ListView的滚动事件,当一个ListView滚动时,同步调整另一个ListView的位置,确保展示的内容与用户选择的层级对应。 三、联动实现方式 1. 通过接口:定义一个接口...