我有一個ListView和大量的進入它的項目(如高數百)。我希望能夠像20個項目一樣啓動ListView,並隨着用戶的滾動而增長,因此它不是「壓倒性的」如何在滾動時增長ListView
我該如何去做這件事?
我有一個ListView和大量的進入它的項目(如高數百)。我希望能夠像20個項目一樣啓動ListView,並隨着用戶的滾動而增長,因此它不是「壓倒性的」如何在滾動時增長ListView
我該如何去做這件事?
這是我如何做的:
我做了一個觀察的滾動視圖類。
public class ObservableScrollView extends ScrollView{
private ScrollViewListener scrollViewListener = null;
public ObservableScrollView(Context context) {
super(context);
}
public ObservableScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public ObservableScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setScrollViewListener(ScrollViewListener scrollViewListener) {
this.scrollViewListener = scrollViewListener;
}
@Override
protected void onScrollChanged(int x, int y, int oldx, int oldy) {
super.onScrollChanged(x, y, oldx, oldy);
if(scrollViewListener != null) {
scrollViewListener.onScrollChanged(this, x, y, oldx, oldy);
}
}
}
我創建了一個叫做滾動查看監聽器的新界面。
public interface ScrollViewListener {
void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy);
}
然後在活動我實現了這個接口。
public class MainActivity extends Activity implements
ScrollViewListener {
然後它會迫使你使用下面的方法。如果我沒有記錯的話,DISTANCE_FROM_BOTTOM
是以像素爲單位。
請注意,如果用戶正在更改滾動位置並在diff <= DISTANCE_FROM_BOTTOM
之間的範圍內,將調用LOADNEXTTHINGS()
。你應該有一個負載值來控制這個......就像
if(diff <= DISTANCE_FROM_BOTTOM && !loadingNextThings){
loadingNextThings = true;
LOADNEXTTHINGS();
}
那麼你就加載完成接下來的事情就要做loadingNextThings = false;
就個人而言,我更喜歡用有限狀態機的時候。
你可以實現拉來刷新。檢查here與完整的源代碼
您可以使用無盡的適配器,它只是通知你當你到達列表視圖底部,所以你可以添加更多的數據到適配器。比如每次到達底部時添加20個元素。
這裏是鏈接:
請記住,你將存儲在某些人的手機上的所有對象在RAM上。只是分頁。 – yams