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

来源:互联网 发布:php excel destroy 编辑:程序博客网 时间:2024/06/01 09:08

相信用过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() {@Overridepublic 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();}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {}};

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

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


1 0