ListView滚动

1.要用到一个监听事件是:setOnScrollListener();

API解释是:

Set the listener that will receive notifications every time the list scrolls.

Parameters:l the scroll listener

2.它里面包含了两个方法:
一个是:onScrollStateChanged(AbsListView view, int scrollState),用来表明ListView是什么状态(静止,滑动);
scrollState 为OnScrollListener.SCROLL_STATE_IDLE:表明ListView是在静止状态
      为OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:表明在滑动且手指没有离开屏幕.
另外一个是:onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount)在滚动的时候获得一些参数:
通过一个小例子来说明:
 public class MainActivity extends Activity {
private ListView listView; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.lsitView);
List<String> list = new ArrayList<String>();
for (int i = 0; i < 20; i++) {
list.add("这是第" + i + "个"); }
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_single_choice, list);
listView.setAdapter(adapter);
listView.setOnScrollListener(new ListView.OnScrollListener() { @Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) { case OnScrollListener.SCROLL_STATE_IDLE: // 没有滚动的时候
System.out.println("最后显示的listview的位置是--->>"
+ listView.getLastVisiblePosition());
if (listView.getLastVisiblePosition() == (listView
.getCount() - 1)) {
Toast.makeText(MainActivity.this, "滑到listView底了",
Toast.LENGTH_SHORT).show(); } if (listView.getFirstVisiblePosition() == 0) {
Toast.makeText(MainActivity.this, "listView顶头了",
Toast.LENGTH_SHORT).show();
} break; case OnScrollListener.SCROLL_STATE_FLING:
System.out.println("SCROLL_STATE_FLING");
break; case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
System.out.println("SCROLL_STATE_TOUCH_SCROLL"
+ "能看到的最后一个显示的位置--->>"
+ listView.getLastVisiblePosition());
break;
default: break; } } /**
* view The view whose scroll state is being reported
* firstVisibleItem the index of the first visible cell (ignore if
* visibleItemCount == 0) visibleItemCount the number of visible
* cells totalItemCount the number of items in the list adaptor
*/
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) { }
}); }
}

源码下载地址:
源码

android 检测ListView滚动到的位置的更多相关文章

  1. android 当ListView滚动时自动调用 onCheckedChanged 导致CheckBox 状态不停变化 的解决办法

    今天在做一个含有CheckBox 的ListView时,发现当初始化CheckBox的状态后, 滚动ListView,其中CheckBox 的选中状态不停的发生变化.最后发现原因是 ListView滚 ...

  2. Android中ListView滚动时上下边界的那一抹色彩

    后台实现: if (Integer.parseInt(Build.VERSION.SDK) >= 9) { listview.setOverScrollMode(View.OVER_SCROLL ...

  3. Android 记录和恢复ListView滚动的位置的三种方法

    本文主要介绍记录和恢复listView滚动位置的3种方法(1)记录listView滚动到的位置的坐标(推荐)(2)记录listView显示在屏幕上的第一个item的位置(3)通知适配器数据改变. 有时 ...

  4. Android ListView滚动到指定的位置

    这篇文章主要给大家介绍了Android中的ListView如何滚动到指定的位置,文章给出了两种解决的方法,并给出详细的示例代码,相信会对大家的理解和学习很有帮助,有需要的朋友们下面来一起看看吧. 本文 ...

  5. Android 实现ListView不可滚动效果

    希望得到的效果是ListView不能滚动,但是最大的问题在与ListView Item还必有点击事件,如果不需要点击事件那就简单了,直接设置ListView.setEnable(false); 如果还 ...

  6. Android 设置ListView不可滚动 及在ScrollView中不可滚动的设置

    http://m.blog.csdn.net/blog/yusewuhen/43706169 转载请注明出处: http://blog.csdn.net/androiddevelop/article/ ...

  7. Android ListView 滚动的N种方法

    Android 里面让ListView滚动有N种方法,这儿列举三种: 我的需求是通过按键让Listview滚动起来,当然这些按键不是通过Android标识接口传输过来的,所以不能通过监听按键事件来实现 ...

  8. Android项目:使用pulltorefresh开源项目扩展为下拉刷新上拉加载更多的处理方法,监听listview滚动方向

    很多android应用的下拉刷新都是使用的pulltorefresh这个开源项目,但是它的扩展性在下拉刷新同时又上拉加载更多时会有一定的局限性.查了很多地方,发现这个开源项目并不能很好的同时支持下拉刷 ...

  9. “Win10 UAP 开发系列”之 在MVVM模式中控制ListView滚动位置

    这个扩展属性从WP8.1就开始用了,主要是为了解决MVVM模式中无法直接控制ListView滚动位置的问题.比如在VM中刷新了数据,需要将View中的ListView滚动到顶部,ListView只有一 ...

随机推荐

  1. 【C#学习笔记】浏览目录得到路径

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  2. ecshop 设置管理员

    <?php define('IN_ECS', true); require(dirname(__FILE__) . '/includes/init.php'); $admin_name=trim ...

  3. 安装完eclipse,dbwear后,需要在他们解压文件.ini下加上你liux的jdk的安装路径,才能正常使用

    -vm/usr/java/jdk/jdk1.6.0_45/bin/java

  4. 【转】session setup failed: NT_STATUS_LOGON_FAILURE -- 不错

    原文网址:http://blog.sina.com.cn/s/blog_5cdb72780100l26f.html samba服务器出现“session setup failed: NT_STATUS ...

  5. 嵌入式 busybox自带的tftp、telnet、ftp服务器

    a.tftp server服务器配置与使用 方法1: #udpsvd -vE 069 tftpd -c /root& //上面的0表示对所有ip地址都进行侦听 方法2: #vi/etc/ine ...

  6. js函数内嵌函数的整体跳出 .

    stop=false; $.ajax({success:function(){ 这里面不能用return false跳出整个<script></script>,只能跳出该处的f ...

  7. C#实现不安装Oracle客户端访问远程服务器数据!!

    概述: C#通过使用ADO的方式在未安装Oracle数据库的前提下,客户端程序远程访问服务器,会出现:“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或 ...

  8. [转]Struts标签库详解

    本文转自:http://hi.baidu.com/xzkcz/blog/item/5cf9f91f01beb9f4e0fe0bd4.html   Struts提供了五个标签库,即:HTML.Bean. ...

  9. ansible官方文档翻译之变量

    Ansible变量 在使用ansible变量的时候,主要是因为各个系统的不同,从而需要使用不同的变量来进行设置,例如在设置一些配置文件的时候,有大部分内容是相同的,但是一部分内容是和主机的ip地址或者 ...

  10. jboss服务器配置多实例

    jboss配置多实例的重要性 在开发, 测试项目的过程中, 我们经常需要在同一台主机上, 同一个服务器上配置多个运行实例.这样做有一下几点好处: 在项目开发, 调试阶段能最大限度的节省资源 某个实例出 ...