android ListView OnScrollListener

本文详细介绍了Android中ListView和GridView的滑动监听器OnScrollListener的使用,包括其回调方法onScrollStateChanged和onScroll的逻辑。讨论了滑动状态的三个常量,以及onScroll方法中的firstVisibleItem、visibleItemCount和totalItemCount参数的含义,并通过实例展示了滑动过程中的状态变化。

OnScrollListener  是用于监听ListView 和GridView 滑动时候的监听事件。

其回调方法有俩

滑动状态改变的监听 ,注意,是 状态        ⬇️⬇️⬇️

   public void onScrollStateChanged(AbsListView view, int scrollState);

滑动进行时的监听

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

英文好的可以直接看API,英文差的就往下看。

首先是 onScrollStateChanged 的 scrollState ,光看名字就知道这货一定是个常量,点击 OnScrollListener 源码发现三个常量。

   public static int SCROLL_STATE_IDLE = 0;

   public static int SCROLL_STATE_TOUCH_SCROLL = 1;
   public static int SCROLL_STATE_FLING = 2;

第一个 是 滑动停止 时候返回的 状态。

第二个 是 滑动进行时,而且你的手指还在屏幕上 回调的。

第三个 是 滑动进行时,手指已经不再屏幕上回调的。

然后是onScroll方法,这个函数会在滑动时候 回调。这个函数比较简单,光从常量的名字上就能猜到,我这里就简单的翻译一下了。

firstVisibleItem 屏幕可见的第一条 item的下标

   visibleItemCount 屏幕中可以见看见的item 条数\

   totalItemCount   ListView或者GridView中Adapter数据的总条数


下面来验证一下

Android代码大概长这样

@Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        data = new ArrayList<String>();
        mAdapter = new MainAdapter(data, this);

        for (int i = 'a'; i < 'z'; i++)
        {
            data.add(((char) i) + "");
        }
        mMainLv.setAdapter(mAdapter);
        mMainLv.setOnScrollListener(this);
    }

1. ListView处理处于最上面,也是显示的第一条数据时,向上滑动

         

可以看到 onScroll 最先执行,然后才是状态的改变

第一条 Item 下标 ----> 0

当前屏幕显示      ----> 9

adapter的总条数----->25

状态 为 1  ——》2 ——》0

翻译一下

状态 为 滑动且手指在屏幕-----》滑动-----》停止


2.向下滑动几个item的距离

...此处略过

可以看到除了调用了茫茫多的 onScroll 意外,状态仅仅为 1 ---> 0 ,因为没有多余的滑动,手指离开及停止


3. 猛的向下滑动

...同上

(图片上次好似失败了 - - .)

除了茫茫多的onScroll ,状态顺序和 第一次滑动的顺序一模一样 。


//基本讲解就到这里,有机会会放上一些实际使用的案例 TODO

### Ruoyi 框架中的定时任务实现 #### 创建定时任务控制器 为了在 Ruoyi 框架中实现定时任务,首先需要在一个新的 Java 类文件内定义一个方法类。此方法类用于封装具体的业务逻辑[^4]。 ```java package com.ruoyi.project.system.controller; import org.springframework.stereotype.Component; @Component("timingTask") public class TimeTask { public void executeCustomLogic() { System.out.println("Executing custom logic at scheduled time."); } } ``` 上述代码展示了如何通过 `@Component` 注解注册名为 `"timingTask"` 的 Bean 到 Spring 上下文中,并定义了一个简单的执行方法 `executeCustomLogic()` 来模拟具体的操作逻辑。 #### 配置定时任务参数 接着,在系统的 Web 界面——即“系统监控>定时任务”的位置,点击“新增”。此时调用的方法应按照格式输入为:“Bean名称.方法名”,例如对于上面的例子就是 `"timingTask.executeCustomLogic()"`。 在此界面上还可以设定任务的具体执行时间间隔或特定时刻触发条件,这通常借助于 Cron 表达式来完成。Cron 是一种用来表示日期时间和频率组合的强大工具,允许灵活指定何时运行命令[^2]。 #### 动态管理和维护 Ruoyi 提供了一套完整的 API 和图形化界面支持对这些已创建的任务进行动态管理,包括但不限于启动、暂停、重新加载、移除等功能。这种灵活性使得开发者能够在不重启应用程序的情况下调整现有作业的行为模式[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值