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
要检测屏幕底部的项目,您必须使用firstVisibleItem和visibleItemCount.我demo example使用AsyncTask 创建了一个同样的东西,它将在后台加载项目并更新UI.
Total firstVisibleItem和visibleItemCount将为您提供已加载的项目数,然后您可以实现加载更多项目的逻辑.
int loadedItems = firstVisibleItem + visibleItemCount;
Run Code Online (Sandbox Code Playgroud)