ListView事件监听

ListView系列(一)

ListView的事件监听


ListView是我们Android最常见的控件之一,有必要对他的监听事件做出整理和分析。

ListView的事件包括:

  • OnItemClickListener(ListView子项目的点击事件,不是item上按钮的点击事件
  • OnScrollListener(ListView整体的滑动事件)

下面分别来作简要介绍:

OnItemClickListener:


listview.setOnItemClickListener(
new AdapterView.OnItemClickListener()

给ListView设置item监听需要一个实现onItemClick方法的监听器
对item点击要执行的代码放在onItemClick方法中。


onItemClick
public void onItemClick (AdapterView<?> parent, 
View view, int position, long id )
参数类型含义
parentAdapterView相当于listview 适配器的一个指针,可以通过它来获得ListView里装着的一切东西,再通俗点就是说告诉你,你点的是哪一个
viewView就是你点的那个Item的句柄,通过他你可以得到这个item的一切,并且进行相关操作
positionint确定你所点的item在整个List里的位置(下表从0开始)
idlong一般情况下id跟position一样(你可以尝试Log下)

Tip:不懂AdaView<?>为何物的童鞋看下来:AbsListView是用于实现条目的虚拟列表的基类. 这里的列表没有空间的定义。 例如,该类的子类可以以网格的形式、走马灯的形式显示,或者作为堆栈等等。

  • 嵌套类 class AbsListView.LayoutParams
    AbsListView 扩展了 LayoutParams 以提供空间来保存试图类型。
  • interface AbsListView.OnScrollListener
    为了在列表或网格滚动时执行回调函数而定义的接口。
  • interface AbsListView.RecyclerListener
    RecyclerListener 是用于接收视图被移动到待回收堆中时的消息的监听器.
    //继承关系:
        java.lang.Object
            android.view.View
               android.view.ViewGroup
                      android.widget.AdapterView<T extends android.widget.Adapter>
                             android.widget.AbsListView

OnScrollListener

listview.setOnScrollListener(
new AbsListView.OnScrollListener()

给listView设置滑动监听需要实现的onScroll和onScollStateChange方法的监听器

    public void onScrollStateChanged(
    AbsListView view, int scrollState)

滑动状态改变时调用

 public void onScroll(
 AbsListView view, int firstVisibleItem, 
 int visibleItemCount, int totalItemCount)

滑动时调用


onScrollStateChanged
public void onScrollStateChanged(
AbsListView view, int scrollState)
变量类型含义
viewAbsListView滑动的那个ListVIew
scrollStateint滑动状态
switch (scrollState){
                    case SCROLL_STATE_IDLE://静止状态
                        break;
                    case SCROLL_STATE_TOUCH_SCROLL://手指在屏幕上滑动状态
                        break;
                    case SCROLL_STATE_FLING://手指停止滑动,屏幕依然在滑动的状态
                        break;
                }
onScroll
public void onScroll(AbsListView view, int firstVisibleItem, 
 int visibleItemCount, int totalItemCount)
变量类型含义
viewAbsListView正在被执行操作的ListView
firstVisiableItemint第一个可以被看见的item
visibleItemCountint可以被看见的item总数
totalItemCountintitem总数

此方法在滚动时一直回调,直到停止滚动时才停止回调。单击时回调一次。
可以用来判断是否滚动到最后一个(可以用来执行刷新判断,或者进行预加载,当用户看到第几个的时候去执行网络请求,避免给客户造成程序卡顿的错觉。):

firstVisibleItem + visibleItemCount == totalItemCount
 && totalItemCount > 0
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值