草庐IT

android - 在 ListView 中检测向上滚动和向下滚动

coder 2023-05-08 原文

我有以下要求:

  • 首先,从服务器和项目中获取第 2 页的数据 填充在 ListView 中。

考虑到场景中的上一页和下一页都可用,添加如下代码:

 if(prevPageNo > 0){
    mListViewActual.setOnScrollListener(this);
 }

 if(nextPageNo > 0){
    mListViewActual.setOnScrollListener(this);
 }

我应该设置什么条件来检测以下方法的向上滚动和向下滚动:

  1. void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
  2. void onScrollStateChanged(AbsListView view, int scrollState)

在检测到 Action :向上滚动和向下滚动之后,相应地,将使用 prev page no 或 next page no 调用服务,以获取要填充到 Listview 中的项目。

任何输入都会有所帮助。

浏览了以下链接,但没有返回正确的向上/向下滚动操作:

link 1 link 2

最佳答案

尝试使用 setOnScrollListener 并使用 scrollState 实现 onScrollStateChanged

setOnScrollListener(new OnScrollListener(){
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
      // TODO Auto-generated method stub
    }
    public void onScrollStateChanged(AbsListView view, int scrollState) {
      // TODO Auto-generated method stub
      final ListView lw = getListView();

       if(scrollState == 0) 
      Log.i("a", "scrolling stopped...");


        if (view.getId() == lw.getId()) {
        final int currentFirstVisibleItem = lw.getFirstVisiblePosition();
         if (currentFirstVisibleItem > mLastFirstVisibleItem) {
            mIsScrollingUp = false;
            Log.i("a", "scrolling down...");
        } else if (currentFirstVisibleItem < mLastFirstVisibleItem) {
            mIsScrollingUp = true;
            Log.i("a", "scrolling up...");
        }

        mLastFirstVisibleItem = currentFirstVisibleItem;
    } 
    }
  });

关于android - 在 ListView 中检测向上滚动和向下滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16791100/

有关android - 在 ListView 中检测向上滚动和向下滚动的更多相关文章

  1. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  2. ruby - 在 Ruby 的 if 语句中检查 bash 命令 - 2

    如何在Ruby的if语句中检查bash命令的返回值(true/false)。我想要这样的东西,if("/usr/bin/fswscell>/dev/null2>&1")has_afs="true"elsehas_afs="false"end它会提示以下错误含义,它总是返回true。(irb):5:warning:stringliteralincondition正确的语法是什么?更新:/usr/bin/fswscell寻找afs安装和运行状态。它会抛出这样的字符串,Thisworkstationbelongstocell如果afs没有运行,命令以状态1退出 最

  3. ruby - 在 Ruby + Chef 中检查现有目录失败 - 2

    这是我在ChefRecipe中的一blockRuby:#ifdatadirdoesn'texist,moveoverthedefaultoneif!File.exist?("/vol/postgres/data")execute"mv/var/lib/postgresql/9.1/main/vol/postgres/data"end结果是:Executingmv/var/lib/postgresql/9.1/main/vol/postgres/datamv:inter-devicemovefailed:`/var/lib/postgresql/9.1/main'to`/vol/post

  4. ruby-on-rails - 从 Rails 上的 base64 编码图像中检索文件名和内容类型 - 2

    我正在尝试检索以base64编码格式接收的图像的内容类型和文件名。这是使用base64编码图像执行POST请求的代码require'net/http'require"rubygems"require'active_support'url=URI.parse('http://localhost:3000/')image=ActiveSupport::Base64.encode64(open("public/images/rails.png").to_a.join)post_params={'image'=>image}Net::HTTP.post_form(url,post_params

  5. ruby - 为什么我不能在控制台中检查 ActiveRecord 验证? - 2

    我目前正在学习RoR,我想我一定是误解了什么。我有一个ActiveRecord类调用User,对:name和:email进行简单验证,例如presence:true、length:{maximum:15}等。我想我会在控制台中检查验证。我进入Rails控制台(开发环境),并创建一个名称太长的新实例,例如user_instance=User.new(名称:“aaaaabbbbbcccccdddddd”,电子邮件:“”)。验证不会抛出任何错误。当我尝试user_instance.save时,记录不会写入数据库,所以在那个阶段它显然工作正常。我做错了什么? 最佳答

  6. ruby - 绕过 Element 的方法无法滚动到 View 中 - Watir-webdriver with Ruby - 2

    因此,我们的页面中有以下代码:OnOff这是2个单选按钮。'开和关'。“关闭”是默认值。使用Watir-webdriver和Ruby,我们想要选择“打开”单选按钮。我们这样做:browser.radio(:id=>"HasRegistration_true").set但在这样做时,我们得到以下错误:`WebElement.clickElement':Elementcannotbescrolledintoview:[objectHTMLInputElement](Selenium::WebDriver::Error::MoveTargetOutOfBoundsError)我们知道Sele

  7. ruby - 为什么在 Ruby 中除法后负数会向下舍入? - 2

    我正在查看有关divmod的文档.下面显示了方法div、divmod、modulo和remainder之间差异的部分表格:为什么13.div(-4)四舍五入为-4而不是-3?Ruby中是否有向下舍入负数的规则或约定?如果是这样,为什么下面的代码没有向下舍入?-3.25.round()#3 最佳答案 13.div(-4)==-4和13.modulo(-4)==-3这样(-4*-4)+-3==13你得到了一致的关系(b*(a/b))+a.modulo(b)==aWhyis13.div(-4)roundedto-4andnotto-3?这

  8. ruby - 如何在 Ruby 中检查参数 "param[:some_value]" - 2

    我知道一些检查参数是否为零的方法ifparam[:some_value]ifparam[:some_value].present?if!param[:some_value].nil?#unlessparam[:some_value].nil?if!param[:some_value].blank?#unlessparam[:some_value].blank?哪一个是正确的并且最受欢迎?它们之间有什么区别?我宁愿使用ifparam[:some_value]因为它最简单也最短。 最佳答案 以下是nil?、blank?和present?

  9. ruby - 如何在 Ruby 中检测数组中的重复值? - 2

    假设我有一个如下所示的数组:a=[cat,dog,cat,mouse,rat,dog,cat]我如何循环遍历它,并对重复项进行处理-例如说删除它们?换句话说,如果我执行了a.eachdo|i|,我将如何针对a[1]、a[2]、a[3]评估a[0]。..然后当我找到我想要的那个时,说a[2]在这种情况下有第一个副本,然后我将它插入堆栈或删除它或其他东西。我知道如何评估键和值...但是我如何在同一个数组中评估值?谢谢。 最佳答案 您可以创建一个散列来存储任何元素重复的次数。因此只遍历数组一次。h=Hash.new(0)['a','b',

  10. 《计算机网络-自顶向下》04. 网络层-数据平面 - 2

    文章目录网络层数据平面和控制平面两者的概述数据平面控制平面控制平面:传统方法控制平面:SDN方法网络服务模型路由器工作原理通用路由器体系结构输入端口的功能基于目标的转发交换结构内存交换方式总线交换方式纵横式交换方式输出端口的功能何时何处出现缓存队列输入排队输出排队分组调度先进先出优先权排队循环和加权公平排队网络协议:PIv4、寻址、IPv6以及其它IPv4数据报格式IPv4数据报分片IPv4编址IP和子网掩码CIDR分类网络特殊地址分配地址获取一块地址(用于组织的子网内)获取主机地址:动态主机配置协议网络地址转换——NAT一些术语通用转发和SDN匹配动作参考资料网络层从表面上看网络层的作用:将

随机推荐