listview的监听事件
来源:互联网 发布:淘宝仓管的工作 编辑:程序博客网 时间:2024/05/09 01:59
Android开发时,最常用的控件之一就是ListView了,而使用ListView的同时,必然需要对它设置监听器,常用的监听器有这么几个
1.OnItemClickListener
2.OnTouchListener
3.OnScrollListener
1监听器在点击该项目的子项时触发,2监听器在触碰到ListView时触发,3监听器在ListView滚动时触发,
下面几个例子分别表述了具体处理的办法
以下对于listview滑动事件的整理:
ListView的滑动监听,是ListView中最重要的技巧,很多重写ListView,基本都是在滑动事件的处理上下功夫,通过判断滑动事件进行不同的逻辑处理.为了更加精确地监听滑动事件,我们通常还需要GestureDetector手势识别,VelocityTracker滑动速度的检测等辅助类来完成更好的监听,下面是ListIView的滑动事件的方法,一个是通过OnTouchListener来实现监听,另一个是使用OnScrollListener来实现监听.
-OnTouchListener
onTouchListener是View中的监听事件,通过监听ACTION_DOWN,ACTION_MORE,ACTION_UP.这三个事件发生时的坐标,就可以根据坐标判断用户滑动的方向,并在不同的事件中进行相应的逻辑处理,这种方式的使用代码如下所示.
mListView.setOnTouchListener(new View.OnTouchListener()){ @Override public boolean onTouch(View v,MotionEvent event){ swicth(event.getAction()){ case:MotionEvent.ACTION_DOWN: //触摸时操作 break; case:MotionEvent.ACTION_MOVE: //移动时操作 break; case:MotionEvent.ACTION_MOVE: //离开时操作 break; } } return false;}
-OnScrollListener
OnScollListener是AbsListView中的监听事件,它封装了很多与ListView相关的信息,用起来也更加灵活.首先来看一下OnScollListener的一般使用方法,代码如下所示:
mListView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState){ case SCROLL_STATE_IDLE: //滑动停止时调用 break; case SCROLL_STATE_TOUCH_SCROLL: //正在滚动时调用 break; case SCROLL_STATE_FLING: //手指快速滑动时,在离开ListView由于惯性滑动 break; } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { //滚动时一直调用 } });
OnScrollListener中有两个回调方法-------onScrollStateChanged()和onScroll()
onScrollStateChanged这个方法根据他的参数srrollState来决定其回调的次数,scrollState有三种模式
SCROLL_STATE_IDLE: 滚动停止时
SCROLL_STATE_TOUCH_SCROLL 正在滚动时
SCROLL_STATE_FLING 手指快速滑动时,在离开ListView由于惯性滑动
当用户没有做手指抛动的状态时,这个方法只会回调2次,否则会回调3次,差别就是手指抛动的这个状态,通常情况下,我们在这个方法中通过不同的状态来设置一些Flag,来区分不同的滑动状态,供其他方法处理.
下面这个onScroll()这个回调方法,它在ListView滚动时会一直回调,而方法中的>后三个int类型
firstVisibleItem:当前能看到的第一个Item的ID(从0开始).
visibleItemCount:当前能看到的Item的总数
totalItemCount 整个ListView的Item的总数
这里需要注意的是,当前能看见的Item数,包括没有显示完整的Item,即显示一小半的Item也包括在内.通过这几个参数,可以很方便地进行一些判断.比如判断是否滚动到最后一行,就可以使用如下代码进行判断,当前可视的另一个Item的ID加上当前可视Item的和等于Item总数的时候,即滚动到了最后一行.
if(firstVisibleItem+visibleItemCount==totalItemCount&&totalItemCount>0) { //滚动到最后一行,在这里可以处理ListView上拉加载更多 }
原文链接:http://www.jianshu.com/p/5d2c1a621604
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
- listview的监听事件
- Listview监听事件的随笔....
- 监听ListView的滚动事件
- Android开发心得-ListView的监听事件
- Android开发心得-ListView的监听事件
- Android开发心得-ListView的监听事件
- Android开发心得-ListView的监听事件
- Android开发心得-ListView的监听事件
- Android ListView监听滑动事件的方法
- ListView事件监听
- ListView的点击事件、长按事件监听
- 解决ListView的item监听事件个子控件监听事件冲突问题
- ListView点击事件监听失效
- ListView中的setOnScrollListener监听事件
- listView监听上下滑动事件
- listview点击监听事件失效
- 设置ListView条目里面组件的监听事件
- 6.ListView的自定义adapter和监听滚动事件
- hdu1506 经典dp
- Unix新手教程
- javac编译错误: 编码UTF8/GBK的不可映射字符
- C#和C++结构体Socket通信
- 利用栈将十进制转换为二进制
- listview的监听事件
- <21天实战caffe>第8章程序编译问题
- 数据结构的链式存储结构
- 【JZOJ4812】string
- 【NOIP2016提高A组五校联考2】string
- 设计模式-工厂方法设计模式
- HDU-5914 Triangle(思路)
- mybatis笔记
- Android 通知栏信息