我有一个onScrollListener,一旦显示ListView中的最后一个View,就会调用AsyncTask。 AsyncTask使用ArrayAdapter将数据添加到ListView。问题是当我用arrayAdapter.clear()
清除ArrayAdapter时它清除了适配器,但是AbsListView中的所有变量仍然认为Items存在,因此它不会检测我何时位于ListView的底部,这是onScrollListener。
class EndlessScrollListener implements OnScrollListener {
private int visibleThreshold = 5;
private boolean loading = true;
public EndlessScrollListener() {
}
public EndlessScrollListener(int visibleThreshold) {
this.visibleThreshold = visibleThreshold;
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (loading) {
if (totalItemCount > previousTotal) {
loading = false;
previousTotal = totalItemCount;
}
}
if (!loading && (firstVisibleItem + visibleItemCount) == totalItemCount) {
new loadComments().execute();
loading = true;
}
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
}
如何在AbsListView中重置变量,以便了解我何时到达listView的底部?
答案 0 :(得分:0)
在clear()
上致电Adapter
后,您必须致电adapter.notifyDataSetChanged()
。以下是API的摘录:
public void notifyDataSetChanged()
通知附加的观察者基础数据已被更改,反映数据集的任何视图都应自行刷新。