2015-10-15 36 views
1

我有一個在gridview中實現setOnScrollListener的問題,當新的數據連續加載到沒有用戶滾動的循環中。我想等待用戶滾動到結尾,然後才能加載新數據。如何做到這一點?這是給了我無限循環無需滾動代碼:setOnScrollListener無限循環和加載沒有在GridView中滾動?

gv.setOnScrollListener(new EndlessScrollListener() { 
     @Override 
     public boolean onLoadMore(int page, int totalItemsCount) { 

      load_more_data(); 

      // Triggered only when new data needs to be appended to the list 
      // Add whatever code is needed to append new items to your AdapterView 
      //  customLoadMoreDataFromApi(page); 
      // or customLoadMoreDataFromApi(totalItemsCount); 
      return true; // ONLY if more data is actually being loaded; false otherwise. 
     } 
    }); 

回答

0

OnScrollListener,具有爲您提供信息緊靠firstVisibleItem,第一個可見單元格,visibleItemCount的指數onScroll,可見細胞和totalItemCount的數量列表適配器中的項目數量。如果您在下面的方法實現它的threshoid totalItemCount - 10到達時,

@Override 
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
    if ((firstVisibleItem + visibleItemCount) >= totalItemCount - 10) { 
     load_more_data(); 
    } 
} 

您的應用程序將啓動加載下一個項目。

+0

是的,但它沒有滾動發生?它會自動運行嗎? –

+0

你是什麼意思*自動*? – Blackbelt

+0

automaticaly - 沒有用戶滾動,它只是加載應用程序啓動,直到沒有更多的數據,並在gridview中替換項目,而不是等待滾動和添加項目到gridview –

0

請試試這個。

gridView.setOnScrollListener(new AbsListView.OnScrollListener() { 

     @Override 
     public void onScrollStateChanged(AbsListView view, int scrollState) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onScroll(AbsListView view, int firstVisibleItem, 
       int visibleItemCount, int totalItemCount) { 
      // TODO Auto-generated method stub 

      if((firstVisibleItem + visibleItemCount) >= totalItemCount - 5) 
      { 
       load_more_data(); 
      } 

     } 
    }); 
+0

嘿我試過這段代碼,但問題是一樣的。它是自動加載數據而不是等待滾動,並替換項目而不是添加 –