2012-07-18 53 views

回答

5
 lv.setOnScrollListener(new OnScrollListener() { 
     @Override 
     public void onScroll(AbsListView view, int firstVisibleItem, 
       int visibleItemCount, int totalItemCount) { 
      // Check if the last view is visible 
      if (++firstVisibleItem + visibleItemCount > totalItemCount) { 

       // if so, download more content 

       } 
      } 
     } 

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

     } 
    }); 
0

您可以使用Amazing ListView自動加載下一頁(即最後一項「加載...」)。

ListView with "Loading..." animation at the bottom

按照文檔實現這些方法:

  • onNextPageRequested當用戶滾動列表,直到 「裝載」 指示燈是可見的調用。這在UI線程中被調用,所以如果你有 有一些網絡請求,請確保你在後臺執行它。還給出了 頁碼。

默認情況下,被認爲是最後一頁,你會 不會看到在列表的底部的任何「正在加載...」消息。您需要 來控制是否仍有要顯示的頁面。

  • notifyMayHaveMorePages表明,我們還有更多的數據,因此「載入中...」信息將被顯示。
  • notifyNoMorePages表明我們已經加載了所有的數據,因此沒有更多的「加載...」消息被顯示。
  • nextPage增加頁碼。在將新數據附加到適配器時執行此操作。
  • resetPage將頁碼重置爲1(或由setInitialPage指定的值)。

所以你需要做的是獲取更多數據時onNextPageRequested被調用。當您將新數據附加到適配器時,請致電nextPage

+0

是的,我在找這個。我正在嘗試。並會通知你 – 2012-07-18 08:51:31

+0

嗨我試過這個演示。它非常有用。我需要在列表視圖滾動時動態添加項目。列表視圖中的項目是這樣添加的:我正在解析一個API。它將返回5個項目並添加到ListView中。當ListView和它會再次調用API並返回下5個項目。我怎樣才能做到這一點?你能告訴我一些代碼嗎? – 2012-07-18 10:27:50

+0

@KrishnaSuthar編輯我的答案。 – 2012-07-18 11:56:57

0

在列表視圖試試這個..它wrks罰款與我..

((ScrollView) findViewById(R.id.scrollDowns)).fullScroll(View.FOCUS_DOWN); 
0

通過slezadav以上implementaion可以在邊界條件導致錯誤。頁面中第一個可見項目&項目的總數可能比預期更多或更少。直到我切換到新的方法時,我才使用相同的東西。 我所做的就是把一個監聽器放到listview的Adapter中,並在getview中檢查if(位置== totalItemCount中要顯示的數組中的項目), 如果是我從適配器調用我的監聽器,並且監聽器將更多的數據來自api。很簡單