`

监听ListView滚动到最底部【转】

 
阅读更多

监听ListView的滚动可以用两个东西:

  1. ListView.onScrollStateChanged (本文讲解这个listener的使用)
  2. 在OnGestureListener类里面的

    onScroll(MotionEvent e1,MotionEvent e2,
                   float distanceX,float distanceY)  事件

SDK的Sample里面的ApiDemos里面的List9 和 List 13介绍了 ListView.OnScrollListener的使用。

List9介绍的是ListView.OnScrollListener的 onScroll(AbsListView view,int firstVisibleItem,int visibleItemCount,int totalItemCount) 方法。

List13介绍的是ListView.OnScrollListener的 onScrollStateChanged(AbsListView view,int scrollState) 方法,使用说明如下:

ListView.setOnScrollListener(new OnScrollListener(){
  @Override
  public void onScrollStateChanged(AbsListView view,int scrollState){
  switch (scrollState){
  case OnScrollListener.SCROLL_STATE_IDLE:
 Log.v("已经停止:SCROLL_STATE_IDLE");
 break;
  case OnScrollListener.SCROLL_STATE_FLING:
 Log.v("开始滚动:SCROLL_STATE_FLING");
 break;
  case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
  Log.v("正在滚动:SCROLL_STATE_TOUCH_SCROLL");
 break;
  }
  }
 
  @Override
  public void onScroll(AbsListView view,int firstVisibleItem,
  int visibleItemCount,int totalItemCount){
  }
});

监听ListView滚动到最底部使用 onScrollStateChanged(AbsListView view,int scrollState) 方法,代码大致如下:

// 监听listview滚到最底部
mIndexList.setOnScrollListener(new OnScrollListener(){
  @Override
  public void onScrollStateChanged(AbsListView view,int scrollState){
  switch (scrollState){
  // 当不滚动时
  case OnScrollListener.SCROLL_STATE_IDLE:
 // 判断滚动到底部
 if (view.getLastVisiblePosition() == (view.getCount() - 1)){
 isLastisNext++;
   }
   break;
  }
  }
 
  @Override
  public void onScroll(AbsListView view,int firstVisibleItem,
  int visibleItemCount,int totalItemCount){
  }
});
 
我使用这个发现两个问题:
  1. 在模拟器上,如果使用鼠标的滚轮来滚动时执行 onScroll(AbsListView view,int firstVisibleItem,int visibleItemCount,int totalItemCount) 方法,不执行 onScrollStateChanged(AbsListView view,int scrollState) 方法。只有触摸往下滑动时,才执行onScrollStateChanged(AbsListView view,int scrollState) 方法。有待考证。
  2. SCROLL_STATE_TOUCH_SCROLL一定执行,然后下面可能执行SCROLL_STATE_FLING,也可能执行SCROLL_STATE_IDLE。这个是不确定的。有待考证。

分享到:
评论
3 楼 w11h22j33 2011-09-13  
1.滚动加载
listView.setOnScrollListener(new OnScrollListener() {
//添加滚动条滚到最底部,加载余下的元素
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
loadRemnantListItem();
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {}
});


listView.setOnItemSelectedListener(new OnItemSelectedListener() {
//按键选择List中的item,焦点落在最下面的view上加载余下的item
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if(footerView == view) {
loadRemnantListItem();
listView.setSelection(position - 1);
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
});

private void loadRemnantListItem() {//滚到加载余下的数据
//动态的改变listAdapter.getCount()的返回值
//使用Handler调用listAdapter.notifyDataSetChanged();更新数据
}
复制代码

2.滚动翻页
//listView监听器代码相同

2 private void loadRemnantListItem() {//滚到加载余下的数据

3 //重新listView.setAdapter(newsAdapter);

4 //使用Handler调用listAdapter.notifyDataSetChanged();更新数据

5 }
复制代码
2 楼 w11h22j33 2011-09-13  
listview.setSelection(listview.getAdapter().getCount()-1);
1 楼 w11h22j33 2011-09-13  
smoothScrollToPosition需要2.2以上,smoothScrollByOffset需要3.0以上。
具体可以看android sdk文档:
http://developer.android.com/reference/android/widget/ListView.html#smoothScrollBy

相关推荐

    Android 实现ListView滚动到底部自动加载数据

    总之,实现Android ListView滚动到底部自动加载数据涉及到的主要步骤包括:设置适配器、监听滚动事件、判断是否滚动到底部、加载新数据和更新列表。这个过程需要对Android的基础组件和数据操作有深入的理解,同时也...

    安卓listview相关相关-监听listview滚动距离最优方案.rar

    本压缩包“安卓listview相关相关-监听listview滚动距离最优方案.rar”提供了一个关于如何监听ListView滚动距离的方法,下面将详细解释这一技术。 首先,我们来理解为什么需要监听ListView的滚动距离。在某些应用...

    ListView滚动到底部自动加载剩余数据

    下面将详细解释如何实现ListView滚动到底部自动加载剩余数据的功能。 1. **监听ListView的滚动事件**: 首先,我们需要监听ListView的滚动事件。这可以通过为ListView设置OnScrollListener来实现。在`onScroll()`...

    Android ListView滚动到底部自动加载数据

    1. **监听ListView滚动事件**:首先,我们需要监听ListView的滚动事件。在Android中,可以通过重写AbsListView的`OnScrollListener`接口来实现。具体来说,我们需要关注`onScroll`和`onScrollStateChanged`这两个...

    解决scrollView和listview滚动冲突,实现listview滑动到顶端和底部之后还能拖拽一定的距离,松开后返回

    这可以通过监听ListView的滑动状态并结合Scroller类来实现。以下是一般步骤: 1. **监听滑动状态**:通过重写ListView的`onScroll`和`onScrollStateChanged`方法,判断当前是否滑动到顶部或底部。 2. **计算额外的...

    ListView刷新和监听滚动事件选项事件的例子

    接下来是监听ListView的滚动事件。要实现这一功能,我们需要在Activity或Fragment中添加一个OnScrollListener。这个监听器包含几个关键的方法,如`onScrollStateChanged()`和`onScroll()`. `onScrollStateChanged()`...

    Android--ListView滚动到底部自动加载下页数据Demo

    这个"Android--ListView滚动到底部自动加载下页数据Demo"是实现一个常见的功能:无限滚动加载,也称为下拉刷新和上拉加载更多。这种功能在许多社交应用、电商应用中广泛应用,当用户滚动到列表底部时,会自动加载更...

    ListBox自动滚动到底部

    在某些场景下,如实时更新数据或者加载大量新内容时,我们需要让ListBox自动滚动到最底部,以便用户能够看到最新的信息。这个过程涉及到控件的事件处理和滚动条的控制。 在Windows Forms中,实现ListBox自动滚动到...

    ListView拖动到底部刷新

    实现这个功能的关键在于监听ListView的滚动事件,当用户滚动到列表的底部时触发加载新数据的逻辑。以下是如何实现这一特性的步骤: 1. **监听滚动事件**: 首先,我们需要在ListView的OnScrollListener中监听滚动...

    ListView块状滚动条加分批加载数据

    1. **监听ListView滚动事件** 要实现在滑动到ListView底部时加载更多数据,需要监听ListView的滚动事件。可以重写`OnScrollListener`类的`onScrollStateChanged()`和`onScroll()`方法。在`onScroll()`方法中,检查...

    ListView滑动到底部时自动加载新的内容

    - AdapterView有一个OnScrollListener接口,可以监听ListView的滚动事件。 2. **监听ListView滑动事件**: - 首先,我们需要为ListView设置一个OnScrollListener。在`onScrollStateChanged()`方法中,我们可以...

    listview分页加载(底部loading)

    3. **监听滚动事件**:使用ListView的`OnScrollListener`,在`onScroll()`方法中检查是否已经滚动到底部。当`firstVisibleItem + visibleItemCount &gt;= adapter.getCount()`时,说明已到达底部。 4. **加载更多数据*...

    c#.netListBox自动滚动到底部

    本话题将深入探讨如何在C#中实现ListBox控件在添加新数据时自动滚动到最底部的功能。 首先,我们需要理解ListBox的基本用法。ListBox控件在Windows Forms或WPF(Windows Presentation Foundation)应用中被使用,...

    Android 完美的listview自动循环滚动

    总之,"Android 完美的listview自动循环滚动"涉及到的关键技术点包括自定义Adapter、监听ListView滚动事件、数据的取模计算以及性能优化。通过这些技术,我们可以创建出一个流畅且具有循环滚动功能的ListView,为...

    安卓listview相关相关-listview滑动到底部自动加载数据并显示滚动的底部的那个条目点击按钮回到顶部.zip

    实现方法是监听ListView的OnScrollListener事件,当监听到ListView已经滑动到最后一项时,触发加载新数据的逻辑,然后将新数据添加到Adapter中,通知ListView更新数据。 2. **滚动条目**: 提及的“滚动的底部的...

    listView下拉刷新,到底部自动加载更多

    实现这一功能,开发者需要监听ListView的滚动事件,当用户滚动到列表底部时,触发加载更多数据的操作。这通常通过重写OnScrollListener的`onScrollStateChanged()`和`onScroll()`方法来完成。在`onScroll()`中,检查...

    android listview滚动到底自动加载,下拉刷新

    这通常通过监听ListView的OnScrollListener来实现。在`onScrollStateChanged()`方法中判断是否达到底部,如果是,则加载新数据并更新Adapter。 ```java listView.setOnScrollListener(new AbsListView....

    Android】ListView监听上下滑动实现一键置顶

    上拉加载更多可以通过监听ListView的底部到达事件来实现。我们可以在`onScroll`方法中判断是否达到了底部,如果是,则调用加载更多数据的方法: ```java if (firstVisibleItem + visibleItemCount &gt;= ...

    android listview 自动往上滚动

    综上所述,实现"android listview 自动往上滚动"的效果,需要掌握Android的ListView滚动机制、动画系统、监听事件以及性能优化等多方面的知识。通过对这些知识点的深入理解和实践,开发者可以创造出更加生动有趣的...

    listview滚动实现异步加载

    要实现在ListView滚动到底部时自动加载更多数据,我们需要监听ListView的滚动事件。可以通过重写 AbsListView.OnScrollListener 的 `onScroll` 和 `onScrollStateChanged` 方法。在 `onScroll` 方法中判断是否达到...

Global site tag (gtag.js) - Google Analytics