2015-10-15 60 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

嘿我试过这段代码,但问题是一样的。它是自动加载数据而不是等待滚动,并替换项目而不是添加 –