Android动态加载列表视图onScrollListener问题

chi*_*inh 4 android listview scrollbar dynamic-loading

我已经实现了一个列表视图,每个用户滚动到底部屏幕,它自动将新数据添加到列表视图一旦滚动完成,onScroll()调用进入显示视图的每个新项目,从开始到结束滚动.

lv_best = (ListView) findViewById(R.id.lv_best);
bestadapter = new LazyAdapter(this, lst_tab_best);
lv_best.setAdapter(bestadapter);
lv_best.setOnScrollListener(new AbsListView.OnScrollListener() {

    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) { }

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem,
                        int visibleItemCount, int totalItemCount) {

    Log.d("onScroll ", firstVisibleItem+"-"+visibleItemCount+"-"+totalItemCount);
    boolean loadMore = firstVisibleItem + visibleItemCount >= totalItemCount;
    if(loadMore){
            new ChangeTab_best().execute();
     }
     }
    });
Run Code Online (Sandbox Code Playgroud)

我在模拟器中运行,列表上面显示有5个项目,但我无法检测到ListView中的滚动结束,ChangeTab_best()被多次调用.当我看到Logcat android时,所有变量firstVisibleItem,visibleItemCount,totalItemCount总是等于0

那么这里发生了什么?

Lal*_*ani 15

要检测屏幕底部的项目,您必须使用firstVisibleItemvisibleItemCount.我demo example使用AsyncTask 创建了一个同样的东西,它将在后台加载项目并更新UI.

Total firstVisibleItemvisibleItemCount将为您提供已加载的项目数,然后您可以实现加载更多项目的逻辑.

int loadedItems = firstVisibleItem + visibleItemCount;
Run Code Online (Sandbox Code Playgroud)