关于ListView设置了OnScrollListener之后onScrollStateChanged()和onScroll方法监听不到的问题:

原因:

首先OnScrollListener是焦点滚动的监听事件,须要有焦点才干响应。

假设在ScrollView中内嵌了ListView之后,动态计算了ListView的高度,并予以设置高度,那么这时用户拖动界面,造成的滚动是ScrollView的滚动。而并不是ListView的滚动,此时焦点是被ScrollView夺去的。ListView自然就不响应OnScrollListener的监听咯。相同的在模拟器上使用鼠标滚轮滑动ListView导致的不响应OnScrollListener也是如此。

如果和解决的方法:

假设此时listView位于ScrollView的最底端。而ListView的上方另一些数据控件须要显示,而listView又须要动态设置高度且须要完毕分页载入的功能。如图所看到的。该怎么办呢?

不要紧张,办法是有的,接着往下看吧:

1.刚開始我採用监听ScrollView滑动到最底端则载入很多其它的方式。但是这又导致一个问题,当ScrollView内嵌ListView时候,ListView的notifyDataSetChanged()方法由于须要获取界面资源的原因,在ScrollView中刷新时会导致主线程的卡顿,详细原因不清楚,预计是调用notifyDataSetChanged()方法时,焦点的夺取导致了主线程卡顿。那么这样的情况又不行了。

2.接着我想试试能不能自己定义ScrollView在内嵌ListView的时候自己主动把焦点给ListView,可这又牵扯到一个问题,ScrollView的滑动也是须要焦点的。纠结了一段时间后,我觉得此解决方案太过麻烦且不通用,一旦遇到别的情况又要又一次自己定义控件。

So,PASS!

最后我使出杀手锏。採用ListView + HeadView + footerView的方式。也就是分成三块。自己定义HeadView的显示内容。自己定义footerView的显示内容,既简单又通用,全然满足了我的需求。可是这里有一个须要注意的,这样的转台(ListView有HeadView的情况下)下给lsitView设置OnItemClickListener,那么OnItemClickListener的一个方法:

public void onItemClick(AdapterView<?

> arg0, View arg1, int arg2,long arg3){

}

此时的点击position应该是arg3,而不是arg2,由于ListView的HeadView会占用一个item。

android -- 小问题 关于ListView设置了OnScrollListener之后onScrollStateChanged()和onScroll方法监听不到的问题的更多相关文章

  1. Android四大组件之Activity一(组件的概念、Intent、监听)

    前言知识补充:  什么是组件?   1.它的类必须实现特定接口或继承特定类   2.需要在配置文件中配置其全类名   3.它的对象不是通过new来创建的, 而是系统自动创建的   4.它的对象具有一定 ...

  2. Android实战简易教程-第四十枪(窃听风云之短信监听)

    近期在做监听验证码短信自己主动填入的功能,无意间想到了一个短信监听的办法. 免责声明:短信监听本身是一种违法行为,这里仅仅是技术描写叙述.请大家学习技术就可以.(哈哈) 本实例是基于bmob提供的后台 ...

  3. Android开发 ---基本UI组件7 :分页功能、适配器、滚动条监听事件

    效果图: 1.activity_main.xml 描述: 定义了一个按钮 <?xml version="1.0" encoding="utf-8"?> ...

  4. 【Android】关于连续多次点击控件的控制方案(新建监听类)

    参考:防止Android过快点击造成多次事件的三种方法_胖胖的博客-CSDN博客 实现逻辑很简单: 设置限定时间 在用户点击时开始计时 若计时未超过限定时间,则不允许触发点击事件 因还未学习过Rxja ...

  5. Android 另类方法监听软键盘的弹出收起事件

    http://www.cnblogs.com/csonezp/p/5065624.html 最近做的项目碰到个问题,a界面是fragment+recyclerview,b界面带个edittext,并且 ...

  6. Qt实现小功能之列表无限加载(创意很不错:监听滚动条事件,到底部的时候再new QListWidgetItem)

    概念介绍 无限加载与瀑布流的结合在Web前端开发中的效果非常新颖,对于网页内容具备较好的表现形式.无限加载并没有一次性将内容全部加载进来,而是通过监听滚动条事件来刷新内容的.当用户往下拖动滚动条或使用 ...

  7. Android ScrollView监听滑动到顶部和底部的两种方式(你可能不知道的细节)

    Android ScrollView监听滑动到顶部和底部,虽然网上很多资料都有说,但是不全,而且有些细节没说清楚 使用场景: 1. 做一些复杂动画的时候,需要动态判断当前的ScrollView是否滚动 ...

  8. Android下用程序的方法为ListView设置分割线Divider样式

    使用XML的时候可以使用android:divider属性为ListView设置分割线的样式(颜色或者资源文件),而在Java代码中默认提供的方法 listView.setDivider() 却只支持 ...

  9. android中ProgressBar和ListView

    ProgressBar进度条的使用情况: 进度条的.xml声明:如果不声明格式,则默认格式为转圆圈的形式,声明进度条的visibility为不可见. <ProgressBar android:i ...

随机推荐

  1. Java相关知识(一)

    1. 作用域public.protected.private以及不写时的差别? public 表示公有.声明的为公共成员变量和函数成员.在整个类内类外都可使用,对全部用户开放,能够直接进行调用 pri ...

  2. CC2540/CC2541 : Set the Peripheral Being Advertising while It is Being Connected

    There is possible to set your CC254X be scanable when it is in connection. But, based on my test,the ...

  3. tableau desktop(三)--构建数据视图(二)

    前段时间忙于工作的事情,好久没有来记录一点东西了,今天利用周末做点记录吧,近期因为工作的原因,也有两三周没实用tableau了.今天继续上一篇构建数据试图(二). 3.7 參考线和參考区间 參考线通经 ...

  4. Python菜鸟晋级12----多线程

    Python 多线程 多线程类似于同一时候执行多个不同程序,多线程执行有例如以下长处: 使用线程能够把占领长时间的程序中的任务放到后台去处理. 用户界面能够更加吸引人.这样比方用户点击了一个butto ...

  5. bzoj2150: 部落战争(匈牙利)

    2150: 部落战争 题目:传送门 题解: 辣鸡数据..毁我AC率 先说做法,很容易就可以看出是二分图匹配的最小路径覆盖(可能是之前不久刚做过类似的题) 一开始还傻逼逼的去直接连边然后准备跑floyd ...

  6. 安卓WebView的使用,在应用程序中嵌入一个浏览器,轻松地展示各种各样的网页

    WebView 在应用程序中嵌入一个浏览器,轻松地展示各种各样的网页. 1.定义一个WebView位置 <?xml version="1.0" encoding=" ...

  7. [codeforces 852 D] Exploration Plan 解题报告 (二分+最大匹配)

    题目链接:http://codeforces.com/problemset/problem/852/D 题目大意: 有V个点,N个队伍,E条边,经过每条边有个时间,告诉你初始N个队伍的位置,求至少有K ...

  8. xBIM 实战02 在浏览器中加载IFC模型文件并设置特效

    系列目录    [已更新最新开发文章,点击查看详细]  在模型浏览器中加载模型后,可以对模型做一些特殊操作.下图是常用的设置. 都是通过 xbim-viewer.js 中的 API 来设置以达到一定的 ...

  9. POJ 3299 模拟

    水题,但是WA了一屏--- swap的时候忘了把读入的数字也swap了---------..[尴尬] // by SiriusRen #include <cmath> #include & ...

  10. 修改host文件浏览国外网站

    公司电脑网络没法进github没办法工作需要只能FQ了. 方法1:用VPN 但是地要钱呐,没钱只能放弃了,不过每天试用还是可以的 方法2:改电脑host,文件中每条数据前面的#代表注释.把要访问的地址 ...