Listview加载更多是,恢复到原来的位置,如果不加特殊处理,总是跳转第一条

1、记录listView滚动到的位置的坐标,然后利用listView.scrollTo精确的进行恢复

  1. listView.setOnScrollListener(new OnScrollListener() {
  2. /**
  3. * 滚动状态改变时调用
  4. */
  5. @Override
  6. public void onScrollStateChanged(AbsListView view, int scrollState) {
  7. // 不滚动时保存当前滚动到的位置
  8. if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
  9. if (currentMenuInfo != null) {
  10. scrolledX = statusListView.getScrollX();
  11. scrolledY = statusListView.getScrollY();
  12. }
  13. }
  14. }
  15. /**
  16. * 滚动时调用
  17. */
  18. @Override
  19. public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
  20. }
  21. });

在恢复位置时调用

  1. listView.scrollTo(scrolledX, scrolledY);

2、记录listView显示在屏幕上的第一个item的位置,然后利用listView.setSelection恢复

这是网上能找到的最普遍的一种方式,但是却无法准确恢复到原位置,只能定位到每个item的位置,推荐使用第1种

  1. listView.setOnScrollListener(new OnScrollListener() {
  2. /**
  3. * 滚动状态改变时调用
  4. */
  5. @Override
  6. public void onScrollStateChanged(AbsListView view, int scrollState) {
  7. // 不滚动时保存当前滚动到的位置
  8. if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
  9. position = statusListView.getFirstVisiblePosition();
  10. }
  11. }
  12. /**
  13. * 滚动时调用
  14. */
  15. @Override
  16. public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
  17. }
  18. });

在恢复位置时调用

  1. listView.setSelection(position);

由于此方式的缺陷加上可以使用listView.scrollTo(x, y)滚动到某个位置,如scrollView.scrollTo(0, 0)表示滚动到顶部这点想到第一种方式,从而实现精确无误的滚动位置恢复

3、通知listView的适配器数据变更

这种适用于listView追加数据的情况,严格说不是恢复listView滚动的位置,只是保持滚动位置不错

  1. listDataAdapter.getDataList.addAll(newDataList());
  2. listDataAdapter.notifyDataSetChanged();
时间: 2024-10-12 03:59:44

Listview加载更多是,恢复到原来的位置,如果不加特殊处理,总是跳转第一条的相关文章

Android ListView加载更多

先看效果: ListView的footer布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap

Android listview 加载更多定位问题

我们用Android在做Listview加载更多数据时,如果每次都重新new Adapter的话,视图就会滑动到第一条. 后来我发现listview有一个方法可以获取最顶部时哪一个 int  position = mListView.getFirstVisiblePosition(); 这样就可以获取目前显示的第一行到底是多少条. 于是我有找到一个方法,加载更多数据后.我们设置一下他的选取位置,就不会有滚动到第一个条了 mListView.setSelection(position); 但是仔细

Listview 加载更多

JQM Listview 加载更多 demo - Warren的个人主页 JQM Listview 加载更多 Demo 测试数据1 测试数据2 测试数据3 测试数据4 显示更多 Page Footer <!DOCTYPE HTML> <html> <head> <title>JQM Listview 加载更多 demo - Warren的个人主页</title> <meta name="keywords" content

Android上拉加载更多ListView——PulmListView

思路 今天带大家实现一个上拉加载更多的ListView.GitHub传送门:PulmListView, 欢迎大家fork&&star. 先带大家理一下思路, 如果我们要实现一个上拉加载更多的ListView, 我们需要实现的功能包括: 一个自定义的ListView, 并且该ListView能够判断当前是否已经处于最底部. 一个自定义的FooterView, 用于在ListView加载更多的过程中进行UI展示. 关联FooterView和ListView, 包括加载时机判断.FooterVi

Android UI--自定义ListView(实现下拉刷新+加载更多)

http://blog.csdn.net/wwj_748/article/details/12512885 Android UI--自定义ListView(实现下拉刷新+加载更多) 关于实现ListView下拉刷新和加载更多的实现,我想网上一搜就一堆.不过我就没发现比较实用的,要不就是实现起来太复杂,要不就是不健全的.因为小巫近期要开发新浪微博客户端,需要实现ListView的下拉刷新,所以就想把这个UI整合到项目当中去,这里只是一个demo,可以根据项目的需要进行修改. 就不要太在乎界面了哈:

android 安卓 listview 支持下拉刷新 上拉加载更多

[1]重写listView import java.text.SimpleDateFormat; import java.util.Date; import android.content.Context; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.ViewGrou

Android ListView 下拉刷新 点击加载更多

最近项目中用到了ListView的下拉刷新的功能,总结了一下前辈们的代码,单独抽取出来写了一个demo作为示例. 效果图 下拉刷新: 加载更多: CustomListView.java [java] view plaincopy package com.example.uitest.view; import java.util.Date; import com.example.uitest.R; import android.content.Context; import android.uti

android ListView上拉加载更多 下拉刷新功能实现(采用pull-to-refresh)

Android实现上拉加载更多功能以及下拉刷新功能, 采用了目前比较火的PullToRefresh,他是目前实现比较好的下拉刷新的类库. 目前他支持的控件有:ListView, ExpandableListView,GridView,WebView等. 下载地址:https://github.com/chrisbanes/Android-PullToRefresh 首先第一步当然是导入libriay到咱们的项目了,具体导入方式,这里不再赘述. 下面是个例子采用的是ListView,当然其余的和这

android ListView的上部下拉刷新下部点击加载更多具体实现及拓展

转自:http://blog.csdn.net/jj120522/article/details/8229423 这次就不上图了,例子太多太多了,想必大家都见过.这个功能的实现,简直是开发者必备的. 我也不过多介绍了,网上详细介绍的博客太多太多了,若想深入了解,请参考网上其他博文. 在这里,我只是按照自己的理解,模拟实现了一个,顺便代码贡献出来. 我对之详细标明的注释,想必如果不懂的同学们,看注释也应该明白,前提是,你要耐心看,因为代码有点多,但是我整理过了,还算清晰. 详细代码: [java]