关于pulltorefreshListView快速滑动留白问题等部分小问题

相信用过PullToRefreshListView的同志们都会遇到很多奇奇怪怪的问题,项目打包异常、部分手机快速滑动留白问题。


今天就发现并基本解决了问题,所以分享一下。


首先是打包异常,会显示你的项目异常,但是在你clear之后又好了,在手机上运行飞快!!!报的错大概是PullToRefreshListView语言类异常,在此需要在项目中添加一段xml代码:


<?xml version="1.0" encoding="UTF-8"?> 
<lint> 
    <issue id="ExtraTranslation" severity="ignore" /> 
    <issue id="MissingRegistered" severity="ignore" /> 
    <issue id="MissingTranslation" severity="ignore" /> 
</lint> 

这里需要将改代码添加到自己的项目中 lint.xml 。后会发现,问题解决了。


第二个是没有发现Item长按监听器,这在很多项目中经常使用的竟然不存在!!!

当然在查看很多帖子后大部分会让你在源码中添加长按监听器,来实现该功能,对于这其实并不需要。

在PullToRefreshListView中需要得到ListVIew来实现长按监听:


listView.getRefreshableView().setOnItemLongClickListener(onItemLongClickListener);


使用上述代码就可以实现长按监听功能了。


最后一个也是很麻烦的一个,一开始我用三星手机调试时并没有发现该问题,最后项目要结束的时候拿华为手机一测(这里并没有说华为手机不好,适配问题)。发现在快速滑动的时候,我滑动的越快,留白处越大,最大是占PullToRefreshListView控件的一半。发现这个问题,上网也找了解决方案,发现并不是都会实用。因为Android手机的多样性导致适配效果的不同。最后没办法想了个不是很好的解决方案:


首先是在布局上需要添加两行代码,来让用户在快速滑动时使其在顶端或低端暂时停留:

 xmlns:app="http://schemas.android.com/apk/res-auto"


android:overScrollMode="never"
        app:ptrShowIndicator="false"
 

这里可以解决部分手机的留白问题。


而还有部分手机如我的测试机华为,就对此很无奈了,需要对滑动状态进行监听来强制控制上下拉模式,使其停留:

OnScrollListener onScrollListener = new OnScrollListener() {

			@Override
			public void onScrollStateChanged(AbsListView view, int scrollState) {

				switch (scrollState) {
				case PullToRefreshListView.SCROLL_STATE_FLING:
				case PullToRefreshListView.SCROLL_STATE_TOUCH_SCROLL:// 滑动或快速滑动使其禁止上下拉
					listView.setMode(Mode.DISABLED);
					break;
				case PullToRefreshListView.SCROLL_STATE_IDLE:
					
					if (mailCount == index) {
						listView.setMode(Mode.PULL_FROM_START);// 滑到加载网络数据结束
					} else {
						listView.setMode(Mode.BOTH); // 否则使其上下拉效果打开
					}
					break;
				}
				listView.onRefreshComplete();
			}

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

			}
		};

在对PulltoRefreshListView添加该监听器后,发现问题得以缓解,是缓解,因为留白问题并不是很多,在快速滑动时也会有小小部分的留白,不过这没什么,在滑到低端时在此滑动就会进行加载效果。在该监听器中还需要进行多次逻辑处理,按业务需要来编写,这只是我自己的大概思路。

目前只能这样了,如果有更好的方法不吝赐教,谢谢!!!


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值