十分鍾實現ListView下拉刷新上滑加載更多


     說到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()等。

  示例截圖:
 
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM