我知道爲什麼我的擴展ScrollViews onScrollChanged被多次調用,當onScrollEnd達到結束時(因爲我「滾動到達」多次並因此調用onScrollEnd多次),因爲它從數據庫加載多個條目,而我希望它在第一個結束時加載它們一次。Extended ScrollView onScrollEnded從數據庫加載多個條目,但我只需要一次結束
我ExtendedScrollView類我有
protected void onScrollChanged(int x, int y, int oldx, int oldy) {
View view = (View) getChildAt(getChildCount() - 1);
int diff = (view.getBottom()-(getHeight()+getScrollY()+view.getTop()));
if (diff == 0) {
if (scrollViewListener != null) {
scrollViewListener.onScrollEnded(this, x, y, oldx, oldy);
}
}
super.onScrollChanged(x, y, oldx, oldy);
}
與
public interface ScrollViewListener {
void onScrollEnded(ExtendedScrollView scrollView, int x, int y, int oldx, int oldy);
}
在我的活動我有
@Override
public void onScrollEnded(ExtendedScrollView scrollView, int x, int y, int oldx, int oldy) {
//Called multiple times because of scroll but needed only once
//read 6 Strings (for example) from Database and refresh Tableview with that data (working so I think there is no need for the code)
}
那麼,有沒有辦法阻止越來越多 「端」(由滾動引起)。只有獲得OnScrollEnded一次並從DB加載6個字符串(因爲滾動其多次),然後在下12個滾動閱讀下一個6等等......
任何幫助表示讚賞。
查看該主題是否可以幫助您:http://stackoverflow.com/q/8181828/3640637 – PedroHawk
致電後: scrollViewListener.onScrollEnded(this,x,y,oldx,oldy); 刪除你的scrollListener,所以onScrollEnded只會被調用一次。 現在,當你完成從數據庫獲取所有數據時,再次添加滾動監聽器。 可能不是最優雅的方式,但我認爲它會起作用。 – Zbun