如何清除OnScroll(AbsListView) - Android

时间:2013-08-30 16:47:36

标签: android listview android-listview android-asynctask android-arrayadapter

我有一个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的底部?

1 个答案:

答案 0 :(得分:0)

clear()上致电Adapter后,您必须致电adapter.notifyDataSetChanged()。以下是API的摘录:

  

public void notifyDataSetChanged()

     

通知附加的观察者基础数据已被更改,反映数据集的任何视图都应自行刷新。