2012-07-18 23 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。很简单