ListView OnScroll事件多次执行相同的位置

时间:2013-11-19 07:14:22

标签: android listview android-listview

我正在使用listview来显示评论。为此,我正在实现lazy listview加载,因为数据库中可能有50条注释。所以我正在部分地提出意见。

为了进行测试,我现在正在请求3条评论。当我到达第3排时,我再次请求接下来的3条评论。现在问题是当我滚动到第3行时,Onscroll执行多次第3行,导致多次请求到服务器,而不是一次接下来3次评论请求。

以下是代码:

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

        Log("isFirtTime - "+firstTimeLoaded+" ** noMore -"+ noMoreCommentsFound);
        if(firstTimeLoaded==false && noMoreCommentsFound==false) {
            Log("firstVisibleItem - "+firstVisibleItem+" ** visibleItemCount -"+ visibleItemCount+" ** totalItemCount"+totalItemCount);
            if(firstVisibleItem+visibleItemCount==totalItemCount) {
                if(FviewsAPI.isNetworkAvailable(getApplicationContext())) {
                    commentStartIndex+=3;                   
                    FviewsAPI.getMovieComments(movieId, commentStartIndex, commentEndIndex, MovieDetails.this);
                }
            }
        } 
    }

以下是跟踪滚动事件的LogCat详细信息:

11-19 12:21:21.842: V/FVIEWS(10358): isFirtTime - false ** noMore -false
11-19 12:21:21.842: V/FVIEWS(10358): firstVisibleItem - 0 ** visibleItemCount - 2 ** totalItemCount - 3
11-19 12:21:21.862: V/FVIEWS(10358): pos : 2

11-19 12:21:21.872: V/FVIEWS(10358): isFirtTime - false ** noMore -false
11-19 12:21:21.872: V/FVIEWS(10358): firstVisibleItem - 0 ** visibleItemCount - 3 ** totalItemCount - 3
11-19 12:21:21.872: V/URL(10358): ~~URL - http://***.***.*.100/dipen/****_new/web/viewAllComments/14/3/3

11-19 12:21:21.882: V/FVIEWS(10358): isFirtTime - false ** noMore -false
11-19 12:21:21.882: V/FVIEWS(10358): firstVisibleItem - 0 ** visibleItemCount - 3 ** totalItemCount - 3
11-19 12:21:21.882: V/URL(10358): ~~URL - http://***.***.*.100/dipen/****_new/web/viewAllComments/14/6/3

11-19 12:21:21.892: V/FVIEWS(10358): isFirtTime - false ** noMore -false
11-19 12:21:21.892: V/FVIEWS(10358): firstVisibleItem - 0 ** visibleItemCount - 3 ** totalItemCount - 3
11-19 12:21:21.892: V/URL(10358): ~~URL - http://***.***.*.100/dipen/****_new/web/viewAllComments/14/9/3

如果您看到logcat详细信息,当第3行出现在屏幕上时,onScroll事件多次记录“visibleItemCount - 3”(LISTVIEW设置的宽度仅显示在屏幕上的两行)因此,它多次调用注释api intsead只有一次下一个3评论api。

什么是ANDROID DOC SAYS是“onscroll事件将在滚动完成后调用” 这里是doc的链接:http://developer.android.com/reference/android/widget/AbsListView.OnScrollListener.html#onScroll(android.widget.AbsListView, int, int, int)

然后为什么要多次调用第3行?任何想法?

1 个答案:

答案 0 :(得分:1)

onscroll event will be called after the scroll has completed

这意味着onscroll event will be called after the last item of listview comes to visible。我希望这能帮到你。