码迷,mamicode.com
首页 > 其他好文 > 详细

十分钟实现ListView下拉刷新上滑加载更多

时间:2015-06-17 19:45:31      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

     说到ListView下拉刷新几乎每个APP都会用到,所以ListView下拉刷新是很重要的,就像ListView优化一样是你必会的东西。

     ListView实现下拉刷新如果我们开发人员自己编写相对来说比较费事的,当我们使用第三方库之后我们再来开发这个功能就会省事很多。相比与自己实现可以少编写不少代码,Android-PullToRefresh库可以轻松实现ListView的下拉刷新功能。
     要使用Android—PullToRefesh库对ListView实现下拉刷新要经过以下几个步骤:
 
     1.下载Android-PullToRefresh库,它是在GitHub上的一个开源项目:https://github.com/chrisbanes/Android-PullToRefresh
        这是一个AS项目导入Eclipse是运行不了的,如果你这里使用的是Eclipse请使用这个Eclipse版本:https://github.com/William-Guan/Android-PullToRefreshLibrary
     2.新建项目->关联Android-PullToRefresh类库
          关联类库就不多说了,需要注意的是当你将Android-PullToRefresh导入Eclipse时,如果你看到像 run() must override a superclass method的错误,这是因为Android-PullToRefresh Library需要Java1.6的编译器编译,这时你需要修改一下编译器版本。用Eclipse修改是非常简单的:右击library project 然后选择Properties -> Java Compiler", check "Enable project specific settings" 再选择 1.6 from "Compiler compliance settings" 选择框. 点击OK 最后 "Clean" 你的所有项目.
     3.建立完项目之后修改你的Layout文件去引用PullToRefreshViews替换Android平台视图(比如ListView):
<!--The PullToRefreshListView replaces a standard ListView widget.
            The ID CAN NOT be @+id/android:list-->
 <com.handmark.pulltorefresh.library.PullToRefreshListView
    android:id="@+id/pull_to_refresh_listview"
    android:layout_height="fill_paren"    
android:layout_width="
fill_parent" />

 

     4.添加功能(下拉刷新,底部监听,声音事件监听等):
 
     4.1.初始化PullToRefreshListView     

      PullToRefreshListView  mPullToRefreshListView = (PullToRefreshListView)findViewById(R.id.pull_to_refresh_listview);

     4.2.设置一个监听器,被调用时刷新列表(下拉刷新)     

        mPullToRefreshListView.setOnRefreshListener(new OnRefreshListener<ListView>() {
                          @Override
                         public void onRefresh(
                                   PullToRefreshBase<ListView> refreshView) {
                              String label = DateUtils.formatDateTime(
                                        getApplicationContext(),
                                        System.currentTimeMillis(),
                                        DateUtils.FORMAT_SHOW_TIME
                                                  | DateUtils.FORMAT_SHOW_DATE
                                                  | DateUtils.FORMAT_ABBREV_ALL);
                              // 更新最后更新标签
                              refreshView.getLoadingLayoutProxy()
                                        .setLastUpdatedLabel(label);
                              if (refreshView.getCurrentMode() == Mode.PULL_FROM_END) {
                                   // 在这里做刷新的工作(加载更多)
                                   new GetDataTask(false).execute();
                              } else {
                                   // 在这里做刷新的工作(下拉刷新)
                                   new GetDataTask(true).execute();
                              }
                         }
                     });

     4.3.添加列表底部监听器(滑动到ListView底部时回调):

 

      mPullToRefreshListView.setOnLastItemVisibleListener(new OnLastItemVisibleListener() {
                         @Override
                         public void onLastItemVisible() {
                              Toast.makeText(MainActivity.this, "End of List!",
                                        Toast.LENGTH_SHORT).show();
                         }
                    });

      4.4.添加声音事件监听:      

          SoundPullEventListener<ListView> soundListener = new SoundPullEventListener<ListView>(this);
          soundListener.addSoundEvent(State.PULL_TO_REFRESH, R.raw.pull_event); // 下拉刷新声音事件
          soundListener.addSoundEvent(State.REFRESHING, R.raw.refreshing_sound); // 刷新声音事件
          soundListener.addSoundEvent(State.RESET, R.raw.reset_sound); // 重置声音事件,刷新完成之后
          // State.MANUAL_REFRESHING 手动刷新状态
          mPullToRefreshListView.setOnPullEventListener(soundListener);//添加事件监听

 

      And that‘s it!ListView下拉刷新就完成了。之后还可以添加上下文菜单,手动刷新,刷新时禁止滚动,ListView模式设定等功能,具体实现查看示例代码(注释还挺多的);
 
  如果你使用这个类库并且想去访问内部ListView/GridView 等 你可以调用getRefreshView(),你可以调用所有的常规方法比如 setOnClickListener()等。

  示例截图:
技术分享技术分享
 
    

十分钟实现ListView下拉刷新上滑加载更多

标签:

原文地址:http://www.cnblogs.com/williamguan/p/4584105.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!