PullToRefresh扩展为上拉加载和下拉刷新

最近使用android比较火的开源项目PullToRefresh控件,遇到一些问题,

一、怎么区分上拉和下拉

          我在网上找了很多资料:

            方法1:在PullToRefreshAdapterViewBase类中添加

                            public boolean isHeaderShown() {
                                   return getHeaderLayout().isShown();
                            }

                           public boolean isFooterShown() {
                                  return getFooterLayout().isShown();
                           }

                           两个方法,下拉的时候头部一定会显示,上拉的时候底部一定会显示,在程序里面判断哪个显示了进而实现刷新和加载!

                          这个方法是可以区分上拉下拉的,但是如果你要想修改头部和底部的文字,如”下拉刷新“和”上拉加载“,你会发现,文字要回弹的时候才改变,例如:上拉过程中应该显示”上拉加载“,但你会发现此时显示的你上一次的动作

                          所以这个方法不推荐

                          详细:/blog.csdn.net/ueryueryuery/article/details/17440465

            方法2:使用OnRefreshListener2接口:

                                            重写onPullDownToRefresh和onPullUpToRefresh方法,可以区分上拉下拉,但是有和方法一一样的问题,所以不推荐

            方法3:使用滑动监听,在onScrollStateChanged判断当前显示条目和首个显示条目的关系,如果当前显示大于首个显示条目则为上拉,反正则以

                int  mLastFirstVisibleItem =  0 ;
                boolean  mIsScrollingUp;
                @Override
                public  void  onScrollStateChanged(AbsListView view,  int  scrollState)
                {
                                                                                                      
                  if  (view.getId() == mListView.getId())
                  {
                  final  int  currentFirstVisibleItem = mListView.getFirstVisiblePosition();
                                                                                                          
                  if  (currentFirstVisibleItem > mLastFirstVisibleItem)
                  {
                     mIsUp =  true ;
                  }
                  else  if  (currentFirstVisibleItem < mLastFirstVisibleItem)
                  {
                     mIsUp =  false ;
                  }
                  mLastFirstVisibleItem = currentFirstVisibleItem;
                  }
                                                                                                      
                }
           参考资料:http://stackoverflow.com/questions/12114963/detecting-the-scrolling-direction-in-the-adapter-up-down/12115157#12115157

           这个方法也是早就有人写出来了,我只是搬运工而已,在使用这个方法的时候的遇到一些问题:
                     1、mLionstView没有getFirstVisiblePosition(),解决方法ListView mlistview = mListView.getRefreshableView();
                     2、ScrollStateChanged方法不执行,解决此方法ListView 的高度要比所有item高度之和下才会执行此方法

           详细:http://glblong.blog.51cto.com/3058613/1312349/

二、PullToRefreshListView没有长按事件
     解决方法 :ListView mlistview = mListView.getRefreshableView();
                mlistview.setOnItemLongClickListener

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值