我正在使用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行?任何想法?
答案 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
。我希望这能帮到你。